SQL Server数据库大型应用解决方案总结(转)

自家转载:http://www.cnblogs.com/ejiyuan/archive/2010/10/29/1796292.html

乘胜互联网使用的大面积推广,海量数据的储存和走访成为了系规划的瓶颈问题。对于一个特大型的互联网使用,每天百万级甚至上亿的PV无疑对数据库造成了相当高的负荷。对于系的安静以及扩展性造成了巨的题材。

同样、负载均衡技术 负载均衡集群是由同组相互独立的电脑体系组成,通过正常网络或者专用网络开展连续,由路由器衔接在联名,各节点相互协作、共同负载、均衡压力,对客户端的话,整个群集可以说是等同尊备超高性能的独门服务器。

1、实现原理
贯彻数据库的载荷均衡技术,首先使有一个得操纵连接数据库的控制端。在这里,它截断了数据库与程序的一直连接,由具有的顺序来做客这中间层,然后重新由中间层来访问数据库。这样,我们尽管足以具体控制访问某个数据库了,然后还好依据数据库的此时此刻负荷采取有效的动态平衡策略,来调动每次连续到谁数据库。
2、实现多据库数据并
于负载均衡,最要害之尽管是具备服务器的数量还是实时同步的。这是一个集群所必要的,因为,如果频繁不遵循实时、不齐,那么用户从同贵服务器读出的多少,就分从另一样雅服务器读出的多寡,这是免能够允许的。所以必须兑现数据库的数量并。这样,在询问的早晚就是可生多独资源,实现人均。比较常用之计是Moebius
for SQL Server集群,Moebius for SQL
Server集群采用用挑大梁程序驻留在每个机器的数据库中之方法,这个中心程序名为Moebius
for SQL Server
中间件,主要意图是监测数据库内数据的浮动并以转变的多寡并到其它数据库中。数据并到位后客户端才见面获响应,同步过程是出现完成的,所以并到差不多独数据库暨一道到一个数据库的日基本相当;另外一起的经过是于作业之条件下得的,保证了大半卖数据以任何时刻数据的一致性。正因Moebius
中级件宿主在数据库中之换代,让中件不但会了解数据的浮动,而且知道引起数据变化的SQL语句,根据SQL语句之类型智能的施用不同的数量并的策略以保证数据同步成本的不过小化。

SQL Server 1

数码条数很少,数据内容为不充分,则直同步数据
数条数很少,但是其中包含大数据类型,比如文本,二进制数据等,则先行对数码进行压缩然后再度一同,从而减少网络带宽的占据和传导所用之年华。
多少条数很多,此时当中件会将到招数据变化的SQL语句,
接下来对SQL语句进行解析,分析其实施计划跟实施成本,并选是一道数据还是同SQL语句到另外的数据库中。此种状态以在对表结构进行调或批量移数据的时段特别实惠。
3、优缺点
(1)
扩展性强:当系统设还胜数据库处理速度时,只要简单地添数据库服务器就
可以收获扩大。
(2)
可维护性:当某节点发生故障时,系统会自动检测故障并更换故障节点的以,保证数据库底穿梭工作。
(3)
安全性:因为数据会同步的多台服务器上,可以兑现数据集的冗余,通过多卖数据来确保安全性。另外它成地将数据库放到了内网之中,更好地掩护了数据库的安全性。
(4)
易用性:对用来说完全透明,集群暴露出来的便是一个IP

(1) 不能够按照Web服务器的拍卖能力分配负载。
(2) 负载均衡器(控制端)故障,会招整个数据库系统瘫痪。

次、数据库的读写分离 1,实现原理:读写分离简单的身为把针对数据库读与描写的操作分开对许不同的数据库服务器,这样能行地减轻数据库压力,也能够减轻io压力。主数据库提供写操作,从数据库提供读操作,其实当很多体系被,主要是朗诵之操作。当主数据库进行摹写操作时,数据要一并到于之数据库,这样才会立竿见影保证数据库完整性。

SQL Server 2

(ebay的读写比率是260:1,ebay的读写分离)

SQL Server 3

(微软数据库分发)

2,实现方式:在MS Sql
server中得应用发布定义的法实现数据库复制,实现读写分离,复制是以平组数从一个数据源拷贝到大半只数据源的技能,是拿同客数据发布到几近个存储站点及之有用方法。使用复制技术,用户可以以一律客数据公布暨大半大服务器上。复制技术可以确保分布于不同地方的数码自动同步更新,从而保证数据的一致性。SQL
SERVER复制技术类型有三栽,分别是:快照复制、事务复制、合并复制。SQL
SERVER
第一运用出版物、订阅的艺术来处理复制。源数据所在的服务器是出版服务器,负责上数量。出版服务器将要发表的数量的所有变更状态的正片复制到分发服务器,分发服务器包含有一个分发数据库,可接收数据的富有改变,并保存这些反,再管这些反分发给订阅服务器。

3,优缺点
(1)数据的实时性差:数据未是实时同步到自读服务器上的,当数勾勒副主服务器后,要以下次一头后才能够查询及。

(2)数据量大时同步效率差:单表数据量过大时插入和更新因索引,磁盘IO等题材,性能会转移的好不同。

(3)同时连接多单(至少少只)数据库:至少要连接至零星独数据数据库,实际的读写操作是以程序代码中好的,容易滋生混乱

(4)读具有高性能高可靠性和而伸缩:只读服务器,因为尚未写操作,会大大减轻磁盘IO等性能问题,大大提高效率;只念服务器可以用负载均衡,主数据库发布到多单就念服务器上实现读操作的可伸缩性。

老三、数据库拆分(分布式)

透过某种特定的规格,将存放在于跟一个数据库中之数量分散存放到多只数据库及,实现分布存储,通过路由于规则路由访问特定的数据库,这样一来每次看给的尽管不是单台服务器了,而是N台服务器,这样就可以退单台机器的载荷压力。

直(纵向)拆分:是凭仍功能模块拆分,比如分为订单库、商品库、用户库…这种方法大多独数据库里的表明结构不一。

水平(横向)拆分:将同一个阐明的多寡进行分块保存至不同之数据库中,这些数据库被的发明结构完全相同。

SQL Server 4

(纵向拆分)

SQL Server 5

(横向拆分)

1,实现原理:使用垂直拆分,主要要看下项目是否当这种拆分方式,如网可分为,订单系统,商品管理体系,用户管理体系工作体系于明之,垂直拆分能充分好的由至散数据库压力之作用。业务模块不清晰,耦合(表关联)度于大之网未称利用这种拆分方式。但是垂直拆分方式并无克彻底解决所有压力问题,例如
有一个5000w的订单表明,操作起来订单库底压力还是非常充分,如我们需要以这表中增加(insert)一长新的数目,insert完毕后,数据库会指向这张表还建目录,5000w行数据建立目录的系出要小心的,反过来,假如我们将是表分成100个table呢,从table_001一直到table_100,5000w行数据平均下来,每个子表里边就只是出50万执行数据,这时候我们于同一摆放就发50w行数据的table中insert数据后建立目录的时光就是见面呈数量级的降低,极大了提高了DB的运作时效率,提高了DB的并发量,这种拆分就是横向拆分

2,实现方式:垂直拆分,拆分方式贯彻起来比较简单,根据表名访问不同的数据库SQL Server就可了。横向拆分的规则很多,这里总结前人的几乎沾,

(1)顺序拆分:如可按照订单的近年按照年才分,2003年底位于db1着,2004年的db2,以此类推。当然为堪按主键标准拆分。

可取:可有些迁移

症结:数据分布不净,可能2003年底订单有100W,2008年的发生500W。

(2)hash取模分:
对user_id进行hash(或者一旦user_id是数值型的口舌一直采用user_id的值也不过),然后据此一个一定的数字,比如以被待以一个数量库切分成4只数据库的话,我们便就此4这个数字对user_id的hash值进行取模运算,也即是user_id%4,这样的话每次运算就发生四种植可能:结果吧1之早晚针对应DB1;结果为2的时光对应DB2;结果吗3之时针对应DB3;结果为0的上对应DB4,这样一来就老大咸匀的拿数据分配至4个DB中。

优点:数据分布均匀
短:数据迁移的早晚累;不可知按照机器性能分摊数据 。
(3)在认证库中保存数据库配置

即树立一个DB,这个DB单独保存user_id到DB的照关系,每次访数据库的时节都使先期查询同一软是数据库,以抱实际的DB信息,然后才能够展开我们用的查询操作。

优点:灵活性强,一针对同涉
短:每次查询之前还使多一致不良询问,会导致一定的性能损失。

相关文章