手机版

Asp.Net网站优化系列数据库优化措施使用主从数据库(完整)

时间:2021-10-22 来源:互联网 编辑:宝哥软件园 浏览:

网站规模达到一定水平后,进行分点,优化后的也进行了优化,但仍不能满足业务的性能要求;这时,我们可以考虑使用主从库。主从库是两台服务器上的两个数据库,主库以最快的速度查询新增、删除、修改操作的最新数据。该库负责查询旧数据,进行一些不太有效的分析,并生成报告。这样,数据库的压力由两台服务器分担,从而保证了整个系统响应的及时性。SQL Server提供了一种复制机制,帮助我们实现主从库机制。让我们来看看如何在sql server 2005中练习:在练习之前,我们需要创建一个新的Test数据库,并在这个数据库中构建一个测试表。1.打开sql server企业管理器,在对象资源管理器中选择复制本地发布,然后右键单击新建发布

2.打开新建发布向导,单击下一步,选择用于发布数据的数据库

3.我们选择测试数据库,然后单击下一步选择发布类型。

我们在这里选择的是事务发布,它确保数据在更新后尽快分发给订阅者。其他发布类型的使用场景请参考msdn4。单击“下一步”并选择要发布的对象。这里我们只发布表格

5.单击下一步进入筛选数据设置。这里我们要复制表的所有数据,所以不设置

6.单击下一步指定何时运行快照。我们选择初始数据和默认快照运行频率

7.继续下一步,设置快照代理的运行帐户。我们选择sql server代理帐户

8.单击“下一步”选择创建出版物,然后再次单击“下一步”设置出版物的名称

9.单击“完成”完成发布设置并创建发布。现在,新创建的发布在本地发布

既然发布已经成功创建,我们还需要创建一个订阅:右键单击本地订阅文件夹以创建新的订阅,并且可以通过向导轻松创建订阅。创建订阅时,您可以选择由发布者推送或订阅者主动创建。具体步骤如下:1。通过右键菜单打开新订阅,单击下一步,然后选择我们刚刚创建的发布作为订阅源

2.选择是通过推送还是主动请求来同步数据。我们选择主动订阅

3.设置分发代理的帐户

4.设置代理请求同步的频率

5.设置是否立即初始化数据

6.完成订阅创建

创建之后,我们可以通过向主库表中插入n条数据,然后从库中查询来验证复制是否成功。Sql server2005中的复制很容易创建。我们需要根据业务需要设置复制类型和同步频率。下面我们来谈谈如何在程序中有效地使用主从库。主从库之间的关系是一种发布-订阅关系,发布者和订阅者并不是实时同步的,通常会有几分钟甚至几个小时的延迟。因此,我们需要通过合理的使用来避免延迟的问题。希望主馆尽量少参与查询,提高写作时效性。同时从库要尽可能分担主库的压力,不影响读取数据的准确性和及时性。主库和从库需要在配置文件中配置两个连接字符串,CONN_Master和CONN_Slave。我们需要设置一些规则来决定当前查询应该从主库还是从库中查询。这个规则没有公式,只能根据业务需要来确定。我举几个例子来说明:1。以豆瓣读书本的详情页为假想场景,点击这里可以看到页面的结构(我不是豆瓣的技术,这里就以这个页面为例。)让我们分析一下展示此页面所需的数据以及这些数据的有效性要求。1)图书详细信息的及时性要求:及时性要求。2)豆瓣成员常用标签的有效性:不是很及时。3)喜欢看这本书的人也喜欢看的书,属于分析数据。不是很及时。4)最新书评要求及时。5)几个看过这本书的用户时效性不高。6)喜欢这本书的人经常去的群体属于数据分析。从上面的分析可以看出,只有1)、4)两项数据需要从主库中读取,而2)、3)、5)和6)是可以从从库中读取的非及时数据。当然,我们可以缓存这些无效数据。2.以论坛的帖子列表页面为假设场景,玩论坛的人喜欢在上面发帖,把自己的帖子放在第一页让更多人关注,而50页后很少有人回读帖子;根据这个业务逻辑特性,我们可以决定当用户访问前50页的帖子列表数据时从主库读取,当用户访问超过50页的数据时从从库查询。3.以订单为例,三个月以上的订单不会再有变化。如果把订单号设计成日期格式,查询订单号时可以根据订单号来决定是访问主库还是从库。列出了几个适用的场景。让我们以第三种情况为例。写一个简单的原理图代码,看复制的代码如下: //orderNo的格式是2010052812010500001,即yyyyMMddHHmmss序列号公共订单信息get order(string order no){ string conn string=conn string getter . getfororder(order no);使用(SqlConnection conn=new SqlConnection(ConString)){ 0.} }公共类ConnStringGetter {公共静态字符串GetForOrder(字符串orderNo) { int year=int。解析(订单号。子串(0,4));国际货币=国际。解析(订单号。子串(4,2));int date=int。解析(订单号。子串(6,2));DateTime orderTime=新的DateTime(年份、货币、日期);时间跨度ts=日期时间。now-order time;//如果(ts.totaldays30)返回配置管理器,决定是使用主库还是从库。connection strings[' conn _ slave ']。connectionstring根据订单时间;返回配置管理器。ConnectionStrings[' CONN _ Master ']。ConnectionString}}正确使用主从库可以提高系统的性能。使用主库还是从库由业务逻辑决定。

版权声明:Asp.Net网站优化系列数据库优化措施使用主从数据库(完整)是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。