C#汇总-数据库设计之性能优化(负载均衡,读写分离,表分区)(二)

版权声明:未经本人允许,必须声明原文转载地址和作者! https://blog.csdn.net/liuchang19950703/article/details/83869270

一.负载均衡:

概念:将一台服务器数据库的压力分给多台从服务器数据库,原有的一种解决方案是利用Moebius For SQL Server 类似的第三方软件路由来实现,在客户端和多台主从数据库端中间建立一个中间端服务器的处理机制,每次在更新数据库时,第三方控制服务器将管理的多台主从数据库由类似事务的机制,修改每个数据库的数据后返回处理结果。

优点:开发者省事,只用连接第三方1个Ip地址

缺点:一旦第三方的服务器出现崩溃,则所有服务器崩溃,一次操作对每个服务器数据库进行修改完成后再返回结果,比较低效

二.读写分离

概念:读写分离的原理基于数据操作的【二八原则】实现,即日常系统的操作中20%是增删改,80%是查询,所以创建一台主服务器数据库专门用来处理增删改操作,创建多台服务器用来处理查询操作

1.sql server的日志传送方式

该方式是基于数据库文件操作日志,利用备份共享,主服务实现了操作后,

副服务器来复制作业并进行数据操作

缺点:该种方式多台服务器之间延迟性很高,不建议使用。

2.事务复制

(1)快照复制:定时做快照,利用文件共享机制来进行数据修改,延迟性较高,不建议使用

(2)事务复制:

原理是利用“订阅-发布”的模式来修改数据,

主数据库-发布服务器

副服务器-订阅服务器,主服务建和副服务器之间通过推或者拉的方式来进行数据修改

3.AlwayOn2012

AlwayOn2012:基于windows故障转移;必须有个集群;必有域                    
直接是服务器切换,需要完整的一套东西切换                                
主数据改变--记录传播--从服务器都执行一遍                
主服务器:写log--传播log--                
副服务器:读取log--操作数据--                         
优点:高可用,自动故障转移,不需要人工介入                
                    
最后:关于程序访问:程序支持            
        1    配置的时候有两种链接,写的只有一个        
            读的可以是个池子        
        2    增删改/实时性要求高  就找写库        
        3    允许一点延迟的查询/报表,就找读库        
            随机分配一个             
        alwaysOn:2个路由            

三.分库分表分区

1.表分区:

(1)垂直分区:一般数据库字段太长,单个表的文件太大,给服务器的压力很大,这个时候需要基于【业务】的角度,将表中不同的业务模块切分开来多个表,分担压力

(2)水平分区:基于【时间】,【地区】,【类型】的角度切分开来多个表,分担压力

猜你喜欢

转载自blog.csdn.net/liuchang19950703/article/details/83869270