数据库 数据库分区

定义:数据库分区是一种对表的分割,分区对访问用户是透明的。分区能够提高数据库的读写性能,提高数据库的效率,但又不是总能提供效率。
优缺点:
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,并且每个月百万数据量增长,那么就有可能需要分区。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CrissChan

开心就好

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值