定义:数据库分区是一种对表的分割,分区对访问用户是透明的。分区能够提高数据库的读写性能,提高数据库的效率,但又不是总能提供效率。
优缺点:
1、分区技术就是把一个大块数据分成n小块,这样查询的时候可以快速定位到某一小块上,在小块中寻址可以快很多。另一方面CPU比磁盘IO快很多倍,而硬件上又有多个磁盘,或者是RAID(廉价磁盘冗余阵列),可以让数据库驱动CPU同时去读写不同的磁盘,这样才有可能可以提高效率。
2、分区有时候不能提高读写效率,例如按照日期字段去分区MSDN例子,这个实例中是按照记录的生成时间来分区的,把一年的数据分割成12个分区,每月一个。这样的分区导致分区并不能实现CPU同步写并提高写入性能,因为在同一个时段CPU总是要写入到最新的那一个分区对应的磁盘中。而且这样也不一定能够提高读取性能,具体要看根据什么字段来查询,如果是根据时间来查询,根据时间生成报表那么这种分区肯定会提高查询的效率,但是如果是按照某个客户查询客户最近1年内的账单数据,这样数据分布到不同的分区上,这样的话效率就不一定能提高了,这要看数据在同一个分区上连续分布的读性能高,还是CPU从几个磁盘上同步读取,然后在合并数据的性能更高一些,这和读取数据的记录数也有关系。
如何使用:
具体要是分区和涉及的业务而定。例如:做一个论坛,对论坛的帖子和回复表进行分区。论坛中最常见的
写操作:
1)发帖
2)回复帖子,
最常见的读操作是
1) 根据帖子id显示帖子详情和分页的帖子回复
2) 根据帖子版面帖子列表页根据版面id分页读取帖子列表数据
怎么分区更合适呢?(现在还没有准确答案)
方案1. 根据帖子ID区域段分区(1-300w一个分区、300w-600w一个分区⋯),这样理论上可以提高帖子详细页的读取速度,而对于写操作性能没有益处,对于根据版面id读取帖子列表页有可能有益
方案2. 根据版面id进行分区,这样对于写性能应该有提高,不同的分区对应不同的版面,当有两个版面同时有发帖回帖操作时,有可能可以并发写。对于根据版面id获得帖子列表页数据也可以提高性能,而对于帖子详细信息页没有性能影响。
多大数据库需要分区:
目前无准确定义,经验值一个表的记录超过1000w,并且每个月百万数据量增长,那么就有可能需要分区。
以上所述就是小编给大家介绍的《数据库分区》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- Oracle 12r2 数据库之间传输表,分区或子分区
- Oracle 12cr2 数据库之间跨网络传输表,分区或子分区
- MySql数据库分表分区实践
- 面试官系列,深入数据库分区分库分表
- 早在公元前五百年,孙子就参透了数据库分区的真谛
- Rails 6.1 稳定版发布:支持水平分区、改进多数据库支持、Strict Loading
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
打造Facebook
王淮、祝文让 / 印刷工业出版社 / 2013-2-1 / 39.80元
《打造Facebook》新书发布会,王淮与读者面对面,活动链接:http://www.douban.com/event/18166913/ 这本书的书名——《打造Facebook:亲历Facebook爆发的5年》很嚣张,谁有资格可以说这句话呢,当然,扎克伯格最有资格,但他不会亲自来告诉你,至少从目前的情况来看,近几年都不大可能。而且,这不是一个人的公司。里面的每一人,尤其是工程师,既是公司文......一起来看看 《打造Facebook》 这本书的介绍吧!