数据库表常见分割技术-理论

1、水平分割:
根据某些条件将数据放到二个伙多个堵路的表中。即按计量进行分割,不同的记录
可以用分开保存,每个字表的列数相同。水平切割将表分为多个表。每个表包含
的列数相同,单身数据行更少。例如,可以将一个包含了十亿行的表水平分区成12个
表,每个小表表示特定年份内一个月的数据。任何需要特定月份数据的查询只需查询
引用相应月份的表。
通常用来水平分割表的条件有:日期时间维度、地区维度等
水平分割通常在下面的情况下使用:
1、表数据量很大,分割后可以降低在查询时需要读的数据和索引的页数,同时也降低
了索引的层数,加快了查询速度
2、表中的数据本来就有独立性,例如表中分别记录了各个地区的数据或不同时期的数据
3、需要把数据存放到多个介质上
4、需要把历史数据和当前数据拆分开
 
2、垂直分割:
把主键列和一列放到一个表中,然后把主键列和另外的一些列放到另外一个表中。将原始表
分成多个只包含较少列的表。如果一个表中某些列常用,而另外一些列不常用,责可以采用。
优点:
1、垂直分割可以是行数变小,一个数据块就能存放更多的额数据,在查询时就会减少I/O次数
2、垂直分割表可以达到最大化利用cache的目的
缺点:
1、垂直分割后,主键出现冗余,需要管理冗余列
2、会引起表连接join操作,需要从业务上规避
 
3、库表散列:
表散列和水平分割相似,但没有水平分割那样的明显分割界限,采用hash算法吧数据分散到各个表中,这样IO就更加均衡。一般来说,按业务或者功能模块将数据库进行分离,不同的模块对应不同的数据库或者表,再按照一定的策略对某个页面或者功能进行更小的数据库散列。比如用户表按照用户ID进行散列,散列128张表,则应就能低成本的提升系统的性能,并且很好的扩展性
posted @ 2018-01-22 20:23  秋水秋色  阅读(548)  评论(0编辑  收藏  举报