数据库分区

栏目: 数据库 · 发布时间: 4年前

定义:数据库分区是一种对表的分割,分区对访问用户是透明的。分区能够提高数据库的读写性能,提高数据库的效率,但又不是总能提供效率。

优缺点:

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,并且每个月百万数据量增长,那么就有可能需要分区。


以上所述就是小编给大家介绍的《数据库分区》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Professional JavaScript for Web Developers

Professional JavaScript for Web Developers

Nicholas C. Zakas / Wrox / 2009-1-14 / USD 49.99

This eagerly anticipated update to the breakout book on JavaScript offers you an in-depth look at the numerous advances to the techniques and technology of the JavaScript language. You'll see why Java......一起来看看 《Professional JavaScript for Web Developers》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

SHA 加密
SHA 加密

SHA 加密工具