SQL_数据库_性能优化(读写分离,分库分表,负载均衡)

读写分离:主库负责增删改查,从库负责查询,

  需要注意的是,从库任何增删改不会影响到主库  

事务复制:

准备工作:

l 环境:Microsoft SQL Server 2014版本

开启服务:Sql Server服务、SqlServer代理服务

数据库:生成数据库服务器,数据库:RuanmouData

l 如果需要跨服务器复制:需要指定服务器之间在同一个域中

l 设置数据库连接地址为服务器名称

配置步骤:

1、 设置共享文件夹(如果是多服务器,需要设置共享在主数据库服务器上)

2、在 SQL Server Management Studio中连接到发布服务器,然后展开服务器节点。

3、右键单击“复制” 文件夹,然后单击“配置分发” 

 

4、上分发服务器上页上,选择 ' <服务器名 > ' 将充当自己的分发服务器;SQL Server 将创建分发数据库和日志,然后单击下一步。

5、如果 SQL Server 未运行,则在 SQL Server“代理启动” 页上,选择“是” SQL Server,将 代理服务配置为自动启动。 单击“下一步” 。

6、在“快照文件夹” 文本框中,输入 “共享文件夹的名称”,然后单击“下一步” 。接受向导剩余页上的默认值。

 

7、单击“完成” 以启用分发。

发布:

1、在 SQL Server Management Studio中连接到发布服务器,然后展开服务器节点。展开“复制”文件夹,右键单击“本地发布”文件夹,再单击“新建发布”。

2、在“发布数据库”页上,选择需要发布的数据库,然后单击“下一步” 。

3、在“发布类型”页上,选择“事务发布” ,然后单击“下一步” 。

4、选择需要发布的对象。

5、设置代理安全性,选择默认账号。

6、可以查看快照的状态。

创建订阅

1、在 SQL Server Management Studio 中连接到发布服务器,然后依次展开服务器节点和“复制” 文件夹,在“本地本地” 文件夹中,然后单击“新建订阅”新建订阅向导将启动。

2、在“发布”页上,选择  上面数据库的发布,然后单击“下一步” 。

3、在“分发代理位置”页上,选择“在分发服务器上运行所有代理” ,然后单击“下一步” 。

4、在“订阅服务器”页上,如果未显示订阅服务器实例名称,请单击“添加订阅服务器” ,然后单击“添加 SQL Server 订阅服务器” ,在“连接到服务器” 对话框中输入订阅服务器实例名称,然后单击“连接” 。

5、在中分发代理安全性对话框框中,单击省略号 ( ... ) 按钮,设置账户,单击确定,然后单击下一步。单击“完成” 以接受其余页中的默认值并完成向导。

注:

如果再新增复制分发的时候,提示数据库服务器名称问题:按照一下步骤操作

use master
go

select @@servername;
select serverproperty('servername')
检查名称--改名字就会失败
sp_dropserver 'old_server_name' 
 sp_addserver 'current_computer_name','local'
然后在SQL Server配置管理器  重启Sql服务

 

注:如果出现发布的状态提示代理服务器无法访问路径(路径拒绝访问),可以按照一下方式解决:

第一步:

第二步:

第三步:

 负载均衡


  做好了读写分离之后,我们可以在c#代码中配置访问策略(写一个简单平均访问算法就OK),来平均访问从库

  

分库分表

  数据库分库之垂直切分

    比如一个电商平台里面 所有订单/物流/财务/仓储都在一个数据库 此时可以每个系统一个数据库服务器

  数据库分库之水平切分

    如果一个表存储数据很多,导致数据库性能问题,可以水平分库,数据库结构完全一致,只是存储数据不一样(可以通过时间/区域)来执行分库策略

 一定要注意的是:分库的一定要符合实际需求进行拆分,否则会造成比没分更严重的后果

   垂直分表:某些字段的数据不常用,但是又包含在这张表中,而且这些字段很损耗性能;就可以进行垂直切分,两个表可以直接通过两个主键关联(建议使用Guid作为主键);也可以通过主外键关系来关联!

  水平分表:

例子:银行账单表 如果要进行分表的话,就是使用时间来进行策略划分,因为一般就是查询近一个月或者半年之内的

    外卖系统:通过区域来分表

原文地址:https://www.cnblogs.com/LZXX/p/13044841.html