• 水平分表


    一、概念

    水平分表:是为了解决单表记录数据过大引起的效率问题,通过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倍。

  • 相关阅读:
    mmzrmo4delphi
    了解猫咪,和猫咪更好地相处
    无线分类
    压缩ASPX,替换ASPX多余的空格
    字符串编码转换Unicode>GB2312
    Make sure that the class defined in this code file matches the 'inherits' attribute, and that it extends the correct bas
    ntext、text 和 image (TransactSQL)
    ICON资源
    一个简单的优酷视频链接探测与分享功能
    表单圆角大法(无JS无图片通杀所有浏览器)
  • 原文地址:https://www.cnblogs.com/JaxYoun/p/15584147.html
Copyright © 2020-2023  润新知