数据库(二)读写分离
2016-03-25 09:25
295 查看
.1)什么是数据库读写分离
简单的说就是把对数据库读和写的操作分开对应不同的数据库服务器(一般一个Master库,多个slave库),这样能有效地减轻数据库压力,也能减轻io压力。主数据库提供写操作,从数据库提供读操作。当主数据库进行写操作时,数据要同步到从的数据库,这样才能有效保证数据库完整性。
简而言之,数据库读写分离分为3个部分:
主数据库 处理事务性增、改、删操作(INSERT、UPDATE、DELETE)
从数据库 处理SELECT查询操作(多个从服务器可以采用负载均衡)
数据库复制 被用来把事务性操作导致的变更同步到集群中的从数据库。
.2)经典应用
读写分离目前应用于很多大型网站,如ebay,ebay用的是oracle,主从复制好像是Quest Share Plex(这个不确定,有兴趣的可以自己查找资料看看),我们来看看ebay的读写分离图,
![](http://img.my.csdn.net/uploads/201603/25/1458869841_4792.jpg)
从图我们可以看出,读写分离的控制实际在应用层面,其配置是在数据库层面。
.3)优缺点
(1)数据的实时性差:数据不是实时同步到只读服务器上的,当数据写入主服务器后,要在下次同步后才能查询到。
(2)数据量大时同步效率差:单表数据量过大时插入和更新因索引,磁盘IO等问题,性能会变的很差。
(3)同时连接多个(至少两个)数据库:至少要连接到两个数据数据库,实际的读写操作是在程序代码中完成的,容易引起混乱
(4)读具有高性能高可靠性和可伸缩:只读服务器,因为没有写操作,会大大减轻磁盘IO等性能问题,大大提高效率;只读服务器可以采用负载均衡,主数据库发布到多个只读服务器上实现读操作的可伸缩性。
注意点:
在进行写操作时,考虑到数据的唯一性,写数据的分配不能使用随机算法,一般采用哈希映射。举个例子,很多网站注册的时候已经注册的用户名不能重复注册,如果使用的是随机算法,用户A注册了用户名为zhangsan,写操作分配到主机A,用户B也注册了用户zhangsan,写操作分配到主机B,那么就很难控制数据的唯一性,建议采用哈希映射,比如说哈希规则为将请求为z的写操作统一分配给主机A,以避免此类情况的产生。
参考资料:
http://tech.it168.com/a2012/0110/1300/000001300144_2.shtml
简单的说就是把对数据库读和写的操作分开对应不同的数据库服务器(一般一个Master库,多个slave库),这样能有效地减轻数据库压力,也能减轻io压力。主数据库提供写操作,从数据库提供读操作。当主数据库进行写操作时,数据要同步到从的数据库,这样才能有效保证数据库完整性。
简而言之,数据库读写分离分为3个部分:
主数据库 处理事务性增、改、删操作(INSERT、UPDATE、DELETE)
从数据库 处理SELECT查询操作(多个从服务器可以采用负载均衡)
数据库复制 被用来把事务性操作导致的变更同步到集群中的从数据库。
.2)经典应用
读写分离目前应用于很多大型网站,如ebay,ebay用的是oracle,主从复制好像是Quest Share Plex(这个不确定,有兴趣的可以自己查找资料看看),我们来看看ebay的读写分离图,
![](http://img.my.csdn.net/uploads/201603/25/1458869841_4792.jpg)
从图我们可以看出,读写分离的控制实际在应用层面,其配置是在数据库层面。
.3)优缺点
(1)数据的实时性差:数据不是实时同步到只读服务器上的,当数据写入主服务器后,要在下次同步后才能查询到。
(2)数据量大时同步效率差:单表数据量过大时插入和更新因索引,磁盘IO等问题,性能会变的很差。
(3)同时连接多个(至少两个)数据库:至少要连接到两个数据数据库,实际的读写操作是在程序代码中完成的,容易引起混乱
(4)读具有高性能高可靠性和可伸缩:只读服务器,因为没有写操作,会大大减轻磁盘IO等性能问题,大大提高效率;只读服务器可以采用负载均衡,主数据库发布到多个只读服务器上实现读操作的可伸缩性。
注意点:
在进行写操作时,考虑到数据的唯一性,写数据的分配不能使用随机算法,一般采用哈希映射。举个例子,很多网站注册的时候已经注册的用户名不能重复注册,如果使用的是随机算法,用户A注册了用户名为zhangsan,写操作分配到主机A,用户B也注册了用户zhangsan,写操作分配到主机B,那么就很难控制数据的唯一性,建议采用哈希映射,比如说哈希规则为将请求为z的写操作统一分配给主机A,以避免此类情况的产生。
参考资料:
http://tech.it168.com/a2012/0110/1300/000001300144_2.shtml
相关文章推荐
- Android之获取手机上的图片和视频缩略图thumbnails
- 数据库链接字符串查询网站
- DB2实例管理
- DB2实例管理
- 保障MySQL数据安全的14个最佳方法
- mysql问答汇集
- 第三章 数据库备份和还原
- 创建一个空的IBM DB2 ECO数据库的方法
- Access 2000 数据库 80 万记录通用快速分页类
- 开通一个数据库失败的原因的和解决办法
- 一个简单的asp数据库操作类
- CentOS下DB2数据库安装过程详解
- EasyASP v1.5发布(包含数据库操作类,原clsDbCtrl.asp)第1/2页
- sql2008 还原数据库解决方案
- Oracle 数据库自动存储管理-安装配置
- Oracle数据库执行脚本常用命令小结
- Oracle 数据库 临时数据的处理方法
- 数据库分页查询语句数据库查询
- 最近比较流行的数据库挂马