写点什么

InnoDB 单表数据量超过 2000W 出现性能问题

作者:红袖添香
  • 2023-08-08
    北京
  • 本文字数:390 字

    阅读完需:约 1 分钟

InnoDB 单表数据量超过 2000W 出现性能问题

MySQL InnoDB 缓冲池中页的大小默认是 16K 在操作系统的文件管理系统中进行一次 io 读写,默认读取的大小为 4kb(一页)。又因为局部性原理,操作系统会将命中的页周围的三块页一同加载进 Innodb 的缓存池中,因此 Innnodb 缓存池中页的大小为 16kb。


通常

主键使用 bigint 大小为 8 字节

指针 大小为 4 字节


B + 树中一个数据页的节点数为 16 * 1024 / (8 + 4) = 1170


在机械硬盘时代,从磁盘随机读一个数据块需要 10 ms 左右的寻址时间。也就是说,对于一个 100 万行的表,如果使用二叉树来存储,单独访问一个行可能需要 20 个 10 ms 的时间


生产系统,能够接受的一般为 3 层,超过后 SQL 就比较慢了


一般情况,单条数据为 1K 左右,树高为 2 时,存储的数据量:1170 * (16 / 1)= 18720


树高为 3 时,存储的数据量:1170 * 1170 * (16 / 1)= 21902400


注:上述数据基于一般统计计算,实际情况随着主键类型、单行数据大小等的不同,都会有所变化

发布于: 刚刚阅读数: 7
用户头像

红袖添香

关注

大雨落幽燕,白浪滔天 2018-08-10 加入

还未添加个人简介

评论

发布
暂无评论
InnoDB 单表数据量超过 2000W 出现性能问题_MySQL_红袖添香_InfoQ写作社区