MySQL InnoDB限制

以下限制基于MySQL 8.0.x

1.表与索引限制

  1. 单表只能有1017个列
  2. 单表最多有64个二级索引
  3. 在使用DYNAMIC或COMPRESSED row format时索引前缀长度最大为3072个字节
  4. 一个组合索引的最大列数为16
    如果超过了16个列会会报错:
ERROR 1070 (42000): Too many key parts specified; max 16 parts allowed

2. 行大小限制

  1. 最大行大小略微小于页面的一半
    例如:InnoDB的默认innodb_page_size是16KB,那么行大小在8000字节左右。但是对于InnoDB页面大小在64KB时,最大行大小在16000字节左右。对于包含LongBLOB和LONGTEXT类型的列最大行大小不应该超过4GB,对于BLOB和TEXT类型的列,最大行大小不应该超过4GB。
  2. MySQL强制一行中所有列的数据大小不能超过65535个字节,尽管InnoDB支持的最大行大小超过了65535个字节(不包括变长列,因为变长列会分页存储)。

3.表空间与日志限制

  1. 在一些老的操作系统中,单个文件的大小不能超过2GB,那么这个会限制InnoDB的文件空间。在这些操作系统上,可以配置file-per-table为1让每张表有自己的表空间。
  2. InnoDB日志文件的最大组合大小为512GB。
  3. 表空间最小在10MB左右。最大的表空间依赖于InnoDB 页面大小配置。
  4. InnoDB最大支持2^32个表空间。
  5. 共享表空间最大支持2^32个表。
  6. 表空间文件路径加文件名在Windows上不能超过MAX_PATH定义的最大长度。在Windows10以前,MAX_PATH定义的长度是260个字符。在Windows10的1607版本中 ,普通Win32文件和目录函数的MAX_PATH限制被移除。
InnoDB页面大小 最大表空间大小
4KB 16TB
8KB 32TB
16KB 64TB
32KB 128TB
64KB 256TB

3.1 为什么有这个限制?

因为InnoDB表空间的基本单位是页面,每个页面有一个页号,这个页号也称为页偏移;页号是一个32位的整数,所以一个表空间最多有2的32次方个页面,将页面个数乘以页面大小就是这个表空间的最大大小,例如:页面大小为16KB也是2的14次方,那么64TB= 16KB * 2^32,其他的依次替换页面大小即可。

参考

  1. https://dev.mysql.com/doc/refman/8.0/en/innodb-limits.html
  2. https://blog.jcole.us/2013/01/03/the-basics-of-innodb-space-file-layout/

MySQL InnoDB限制相关推荐

  1. wdcp php5.3 pdo_mysql,WDCP常用组件(memcache、mysqli、PDO_MYSQL、mysql innodb、libmcrypt、php zip)的安装方法...

    一般来说WDCP安装之后就可以正常使用了,不过对于一些朋友来说还无法满足,现在收集了有关WDCP常用组件,比如memcache.mysqli.PDO_MYSQL.mysql innodb.libmcr ...

  2. mysql回表_到底什么情况下mysql innodb会发生回表操作?

    谢邀 MySQL innodb的主键索引是簇集索引,也就是索引的叶子节点存的是整个单条记录的所有字段值,不是主键索引的就是非簇集索引,非簇集索引的叶子节点存的是主键字段的值.回表是什么意思?就是你执行 ...

  3. MySQL/InnoDB中,乐观锁、悲观锁、共享锁、排它锁、行锁、表锁、死锁概念的理解

    MySQL/InnoDB的加锁,一直是一个面试中常问的话题.例如,数据库如果有高并发请求,如何保证数据完整性?产生死锁问题如何排查并解决?我在工作过程中,也会经常用到,乐观锁,排它锁,等.于是今天就对 ...

  4. 从一个死锁看mysql innodb的锁机制

    2019独角兽企业重金招聘Python工程师标准>>> 背景及现象 线上生产环境在某些时候经常性的出现数据库操作死锁,导致业务人员无法进行操作.经过DBA的分析,是某一张表的inse ...

  5. 浅析MySQL InnoDB的隔离级别

    前言 还是老规矩,首先提出两个待解决的问题: MySQL InnoDB存储引擎中事务的隔离级别有哪些? 对应隔离级别的实现机制是什么? 本文就将对上面这两个问题进行解答,分析事务的隔离级别以及相关锁机 ...

  6. 论 MySql InnoDB 如何通过插入意向锁控制并发插入

    前言 在讲解之前,先来思考一个问题--假设有用户表结构如下: MySql,InnoDB,Repeatable-Read:users(id PK, name, age KEY) id name age ...

  7. 如何不停机迁移一个mysql INNODB 数据库?

    2019独角兽企业重金招聘Python工程师标准>>> 如何不停机迁移一个mysql INNODB 数据库? http://www.itpub.net/thread-1776724- ...

  8. MySQL/InnoDB处理AUTO_INCREMENT(二)

    2019独角兽企业重金招聘Python工程师标准>>> MySQL/InnoDB处理AUTO_INCREMENT(二) http://dev.mysql.com/doc/refman ...

  9. 转帖-MySQL Innodb日志机制深入分析

    为什么80%的码农都做不了架构师?>>>    MySQL Innodb日志机制深入分析 http://blog.csdn.net/yunhua_lee/article/detail ...

  10. mysql innodb 主键,Mysql InnoDB 引擎 主键性能

    前些天看到网上有人说:Mysql InnoDB 引擎 主键不适合用UUID , 若要用UUID的话可考虑用 自增ID做物理主键,UUID做逻辑主键. 带着以上问题,本人做了如下测试: 先自报测试环境: ...

最新文章

  1. 目标检测Loss大盘点
  2. MySQL的user表
  3. pInvokeStackImbalance 调试异常的解决办法。
  4. “天昌”的挽歌——逝去的背影(一)
  5. Spring Security with Spring Boot 2.0:使用Servlet堆栈的简单身份验证
  6. 【Java】Java与GoF-23种设计模式
  7. android 4.0 禁用系统home键
  8. Windows Phone开发(15):资源
  9. Linux sudo一些命令出现 command not found 的原因
  10. LNMP环境SVN钩子脚本的使用
  11. Typora优化,Typora结合PicGo,让工作更轻松【图文教程】
  12. 编程总结一 查找整数
  13. Oracle.start with … connect by [… and] prior…order siblings by …
  14. php 织梦symbol,dede织梦代码调用
  15. ✿2020医疗行业CTF✿多余的音符
  16. 设计模式(一)--编程界的九阳神功
  17. SylixOS这个操作系统怎么样?
  18. (新手版)GitHub 使用思想,上传,首次上传及日常使用教程(肯定看得懂)
  19. 美通社企业新闻汇总 | 2019.1.10 | 全球最受欢迎商旅城市上海第四,华为发布AI数据中心交换机...
  20. 北京计算机游戏专业排名2015,2015大学专业排行榜_大学最佳专业排行榜_游戏专业怎么样_52PK游戏网...

热门文章

  1. 如何方便有效的群发邮件,外贸公司群发邮件平台软件好用吗?
  2. 【码上实战】【立体匹配系列】经典SGM:(4)代价聚合2
  3. Unsupervised Representation Learning from Pre-trained Diffusion Probabilistic Models
  4. QT中文乱码解决方法2
  5. (2019春)软件构造:雨课堂试卷(七)(第10章)
  6. chrome浏览器下载无请求
  7. 获取类权限定名_自定义认证类、权限类
  8. 【UXPA大赛企业专访】Mockplus:“设计替代开发”将成为现实
  9. 农行上海研发中心实习面经
  10. 【SeedLab】BGP Exploration and Attack Lab