数据库表分割技术(水平划分/垂直分区/库表哈希)分析
什么是水平分割隐喻的比较,在食堂吃,只有一个窗口,食品线,长长的线,线的类型,然后让排队的人产生焦虑情绪,容易发生混乱,然后一个经理脱颖而出,增加打饭窗口数量。长长的线断成了几个队。更多的图像理解,你拿着一把手术刀,一张大桌子锋利地切了几把刀,结果这张大桌子,变成了几张小桌子。
水平分割将数据在两个或两个以上的基于一定的条件独立的表,根据记录的划分,不同的记录可以分开存放,并在每个子表的列数是相同的。水平切割将表分成多个表,每个表包含的列数相同,但数据行较少。例如,一个表,包含十亿行可以分成12个表,其中每一个代表一个月的数据在一个特别的一年。任何需要的具体月份的数据只需要参考相应的月表查询。
通常用于水平分区的条件是:日期、时间、区域,当然还有更多的业务维度。
案例1:公司销售记录中的数据量太大。我们可以横向划分,每个月的销售记录是一张表。
案例2:一个集团在每个地区都有分支机构。这个组的订单数据表太大了。我们可以根据树枝所在的区域进行水平切割。
案例3:电信公司的声明被城市的日期和水平削减后,发现数据量太大,然后被品牌和数字部分水平削减。
在下面的例子中通常使用水平分割:
(1)表中的数据量很大。分割后,可以减少查询中需要读取的页数和页数,减少索引数量,加快查询速度。
(2)表中的数据是独立的。例如,每个区域的数据或不同时期的数据都记录在表格中,尤其是一些常用的数据,而另一些则不常用。
(3)数据需要存储在多个媒体上。
(4)有必要将历史数据与当前数据分开。
优势uff1a
1:减少需要在查询中读取的数据和索引页的数量,并减少索引的数量,并加快查询速度。
缺点:
1:分割的水平会增加应用程序的复杂性。它通常需要查询中的多个表名,而对所有数据的查询都需要联合操作。在许多数据库应用程序中,这种复杂性将超过其优点,因为索引索引索引索引不太大,当索引用于查询时,表将增加数据的两到三倍。查询时,会增加读取索引层的磁盘数量。
两。垂直分割
什么是垂直分割打个形象的比喻,一个小公司到大型跨国企业通过短短的几年里,在建筑系不能满足CEO的业务发展,公司的噼啪声分为财务部、人事部、生产部、销售部、突然…成立了多个部门各司其职,这是一个较好的形象。有wood.ha-ha
你垂直分割表(没有打破第三范式),把主码(主键)和表中的某些列,然后把主码(主键)和另一个表中的其他一些列。原表分成若干个只包含很少的列的表,如果表中一些列的常用和不常用的其他列,可以使用垂直分割。
优势uff1a
1:垂直分割可以使行数据变小。数据块(块)可以存储更多的数据。在查询时,它将减少I/O数(每个查询的块读取次数减少)。
2:垂直分区表可以最大限度地利用缓存。
缺点:
1:在表垂直拆分之后,主代码(主键)是冗余的,需要管理冗余列。
2:在业务中需要避免表连接连接操作(增加CPU开销)。
三。storetable哈希
散列类似于水平分割。然而,水平分割没有明显的分割界限。散列算法用于离散数据的每个子表,使IO更加均衡。一般来说,我们会在业务或功能模块数据库的分离,不同的模块对应不同的数据库或表,则较小的数据库页或散列函数按照一定的策略,如用户表,表散列根据用户ID,哈希表128,它应该是提高性能的系统成本低、可扩展性好