zoukankan      html  css  js  c++  java
  • 水平分表

    一、概念

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

  • 相关阅读:
    pythoon 学习资源
    cookie -- 添加删除
    前端技能
    jsonp 跨域2
    jsonp 跨域1
    webpy.org
    Flask 学习资源
    pip install flask 安装失败
    弹窗组价
    js中的deom ready执行的问题
  • 原文地址:https://www.cnblogs.com/JaxYoun/p/15584147.html
Copyright © 2011-2022 走看看