ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

水平分表

2021-11-21 13:00:59  阅读:180  来源: 互联网

标签:检索 存储 水平 跨页 拆分 分表 数据


一、概念

水平分表:是为了解决单表记录数据过大引起的效率问题,通过HASH、分段等手段拆分,将大表化小的手段。

垂直分表:是将宽表变成几个窄表的手段,几个拆分前后的数据记录数未改变。通过将少量的重要字段剥离到窄表,让每个页容纳更多的行,减少跨页检索,减小磁盘扫描范围,达到提高效率的目的。

  1. 何时进行垂直拆分:

1.单表数据总量可能过千万。
2.字段超过20个
3.包含超长varchar、text、clob、blob等较占空间的类型字段。

  1. 哪些字段适合放在小表:

1.数据查询条件、排序用到的字段:商品id、商户id、分类编号、品牌编号、逻辑删除字段等。
2.高频访问的小子段:商品名、子标题、厂家信息、价格。

  1. 哪些字段适合放在大表:

1.低频访问字段:配送信息、售后申明、最后更新时间。
2.大字段:图文详情、图片Base64、Json元数据(特殊情况下某个大字段就需要单独存到一个表)。

二、innodb管理数据的机制:

row -> page(16KB) -> extent(1MB) -> segment -> table_space;

row:行,就是一条记录。
page:页,磁盘存储,固定大小为16KB,根据行数据大不同大小,存储若干连续的行。
extent:区,固定大小为1MB,也就是一个区只能保存64个连续的页。
segment:段。
table_space:表空间。

innodb1.0后提供了压缩页的技术,可以让每页物理上存储更多的逻辑数据。跨页检索数据时的解压缩效率不算高,所以做表设计时,要尽量的在一个页中存储更多的行数据,来减少跨页检索的次数,来提高数据检索效率。

垂直拆分前:每行占1KB,需要625万页来存储。
垂直拆分后:每行占64B,只需要39万页来存储。
查询时需要检索的数据页数相差16倍。

标签:检索,存储,水平,跨页,拆分,分表,数据
来源: https://www.cnblogs.com/JaxYoun/p/15584147.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有