Asp.Net 应用百万级优化方法-数据库优化(1/3)
Asp.Net 网站优化教程系列之数据库教程优化措施 使用主从库(全)
以豆瓣读书书的详细页为假定场景,你可以点击这里看下页面的结构(我不是豆瓣的技术,在这里只是拿这个页面举例)
我们来分析呈现这个页面需要的数据和这些数据的实效性要求
1) 书的详细信息 时效性要求:要求及时
2) 豆瓣成员的常用标签 实效性:不需要很及时
3) 喜欢读这本书的人也喜欢读的书 属于分析数据,不需要很及时
4) 最新书评 要求及时
5) 读这本书的几个用户 及时性不高
6) 喜欢这本书的人常去的小组 属于分析数据不需要很及时
从上面的分析可以看出只有1),4)两项数据需要从主库读,而2),3),5),6)为非及时数据从从库读取即可。当然我们可以对这些实效性不高的数据做缓存处理。
2. 以论坛帖子列表页面为假定场景,玩论坛的人都喜欢顶贴,把自己的帖子顶到第一页让更多的人关注,而对于50页之后的帖子则反读的人很少;我们可以根据这个业务逻辑特征来决定在用户访问前50页帖子列表数据时从主库读,而当用户访问超过50页之后的数据时则从从库进行查询。
3. 以订单为例,通常超过三个月的订单就不会再有变化了,假定我们把订单号设计为日期格式时,根据订单号去查询订单时就可以根据订单号来决定该访问主库还是从库。
举了几个适用的场景,我们以第三个场景为例,写一段简单的示意代码看下
复制代码 代码如下:
//orderNo 的格式为 20100528120105000001 即yyyyMMddHHmmss + 序号
public OrderInfo GetOrder(string orderNo) {
string connString = ConnStringGetter.GetForOrder(orderNo);
using (SqlConnection conn = new SqlConnection(connString))
{
...
}
}
补充:asp.net教程,安全和优化