Asp.Net 网站优化系列之数据库优化措施 使用主从库(全) |
本文标签:数据库优化,主从库 网站规模到了一定程度之后,该分的也分了,该优化的也做了优化,但是还是不能满足业务上对性能的要求;这时候我们可以考虑使用主从库 。 主从库是两台服务器上的两个数据库,主库以最快的速度做增删改操作+最新数据的查询操作;从库负责查询较旧数据,做一些对实效性要求较小的分析,报表生成的工作 。这样做将数据库的压力分担到两台服务器上从而保证整个系统响应的及时性 。 SQL Server提供了复制机制来帮我们实现主从库的机制 。我们看下如何在sql server 2005中实践: 实践前需要新创建一个Test的数据库,这个库中建一个测试表 。 1. 打开sql server企业管理器,在对象资源管理器里面选择复制à本地发布,右键选择新建发布 2. 打开新建发布向导,点下一步,选择发布数据的数据库 现在成功创建了发布,我们还需要创建订阅:在本地订阅文件夹上右击新建订阅,通过向导可以很容易的创建订阅,创建订阅时可以选择以发布者推送或者订阅者主动的方式创建 。具体步骤如下:
创建完成之后,我们可以通过在主库表中插入n条数据,然后在从库中查询的方式验证复制是否成功 。 在Sql server2005中的复制创建起来很简单,我们需要根据业务需要设定复制的类型和同步的频率,下面我们谈谈如何有效的在程序中使用主从库 。 复制代码 代码如下: //orderNo 的格式为 20100528120105000001 即yyyyMMddHHmmss + 序号 public OrderInfo GetOrder(string orderNo) { string connString = ConnStringGetter.GetForOrder(orderNo); using (SqlConnection conn = new SqlConnection(connString)) { ... } } public class ConnStringGetter { public static string GetForOrder(string orderNo) { int year = int.Parse(orderNo.Substring(0,4)); int money = int.Parse(orderNo.Substring(4,2)); int date = int.Parse(orderNo.Substring(6,2)); DateTime orderTime = new DateTime(year, money, date); TimeSpan ts = DateTime.Now - orderTime; //根据订单的时间决定使用主库还是从库 if (ts.TotalDays > 30) return ConfigurationManager.ConnectionStrings["CONN_Slave"].ConnectionString; return ConfigurationManager.ConnectionStrings["CONN_Master"].ConnectionString; } } 正确的使用主从库,可以很好的提升系统的性能 。使用主库还是从库的选择权决定在业务逻辑的手里 。 |