数据库的垂直分割、水平分割和表列散之间的“纠葛”

简介:

1,有时对表做分割可以提高性能。表分割有两种方式:  
1水平分割:根据一列或多列数据的值把数据行放到两个独立的表中。
水平分割通常在下面的情况下使用。
•表很大,分割后可以降低在查询时需要读的数据和索引的页数,同时也降低了索引的层数,提高查询速度。
•表中的数据本来就有独立性,例如表中分别记录各个地区的数据或不同时期的数据,特别是有些数据常用,而另外一些数据不常用。
•需要把数据存放到多个介质上。
  水平分割会给应用增加复杂度,它通常在查询时需要多个表名,查询所有数据需要union操作。在许多数据库应用中,这种复杂性会超过它带来的优点,因为只要索引关键字不大,则在索引用于查询时,表中增加两到三倍数据量,查询时也就增加读一个索引层的磁盘次数。  
2垂直分割:把主码和一些列放到一个表,然后把主码和另外的列放到另一个表中。
如果一个表中某些列常用,而另外一些列不常用,则可以采用垂直分割,另外垂直分割可以使得数据行变小,一个数据页就能存放更多的数据,在查询时就会减少I/O次数。其缺点是需要管理冗余列,查询所有数据需要join操作。

 

垂直分割: 按列进行分割,即把一条记录分开多个地方保存,每个子表的行数相同。 
水平分割: 按记录进分分割,不同的记录可以分开保存,每个子表的列数相同。 
表散列: 与水平分割相似,但没有水平分割那样的明显分割界限,它由哈希函数和键值决定一条记录的保存文件,这样是为了IO更加均衡。 

以后大家在数据量比较大的情况下就可以试用这些方法来处理了

相关文章
|
存储 SQL 分布式计算
用户/帖子/好友/订单中心如何进行数据库水平切分
用户/帖子/好友/订单中心如何进行数据库水平切分
|
存储 数据库
数据库中某一列中使用的是text存储,使用的是逗号分割,查询某一个数据在该列所有数据中的条数【真实场景】
数据库中某一列中使用的是text存储,使用的是逗号分割,查询某一个数据在该列所有数据中的条数【真实场景】
67 0
|
SQL 存储 缓存
数据库分割扩展
此篇作为《架构即未来》读书笔记吧,再额外补充一下主从模式、分库分表实施的知识点 书中提到AKF扩展立体结构
114 0
数据库分割扩展
|
存储 算法 数据库
分治策略(divide and conquer)-微服务与数据库水平拆分
分治策略 divide and conquer 微服务 数据库 水平拆分
201 0
分治策略(divide and conquer)-微服务与数据库水平拆分
|
数据库 缓存
一分钟掌握数据库垂直拆分
(1)水平拆分和垂直拆分都是降低数据量大小,提升数据库性能的常见手段 (2)流量大,数据量大时,数据访问要有service层,并且service层不要通过join来获取主表和扩展表的属性 (3)垂直拆分的依据,尽量把长度较短,访问频率较高的属性放在主表里
597 0
|
数据库 索引 缓存
单KEY业务,数据库水平切分架构实践 | 架构师之路
本文将以“用户中心”为例,介绍“单KEY”类业务,随着数据量的逐步增大,数据库性能显著降低,数据库水平切分相关的架构实践。
576 0
|
索引 存储 数据库
1对多业务,数据库水平切分架构一次搞定 | 架构师之路
本文将以“帖子中心”为例,介绍“1对多”类业务,随着数据量的逐步增大,数据库性能显著降低,数据库水平切分相关的架构实践:
508 0
|
数据库
多key业务,数据库水平切分架构一次搞定
数据库水平切分是一个很有意思的话题,不同业务类型,数据库水平切分的方法不同。本篇将以“订单中心”为例,介绍“多key”类业务,随着数据量的逐步增大,数据库性能显著降低,数据库水平切分相关的架构实践。
572 0
|
SQL 缓存 数据库
数据库之分库分表-垂直?水平?
原文:数据库之分库分表-垂直?水平? 一、数据库瓶颈   不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值。在业务Service来看就是,可用数据库连接少甚至无连接可用。
1679 0
|
SQL 缓存 数据库
数据库之分库分表-垂直?水平?
一、数据库瓶颈   不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值。在业务Service来看就是,可用数据库连接少甚至无连接可用。接下来就可以想象了吧(并发量、吞吐量、崩溃)。
1842 0

热门文章

最新文章