10bet网址
MySQL 8.0参考手册
相关文件10bet官方网站 下载本手册 从本手册中摘录

MySQL 8.0参考手册/....../ 优化InnoDB表的存储布局

8.5.1优化InnoDB表的存储布局

  • 一旦您的数据达到稳定尺寸,或者越来越多的表格增加了数百或数百兆字节,请考虑使用优化表声明重新组织桌子和紧凑的任何浪费空间。重组表需要较少的磁盘I / O执行全表扫描。这是一种直接的技术,可以在改善索引使用或调整应用程序代码的其他技术时提高性能,例如改进索引使用或调整应用程序代码不实用。

    优化表复制表的数据部分并重建索引。优势来自索引中的索引中的数据包装,并在表空间和磁盘上减少碎片。好处因每个表中的数据而有所不同。您可能会发现某些而不是其他人有显着的收益,或者在接下来优化表格之前,收益随着时间的推移而降低。如果表格大或重建索引不适合缓冲池,则此操作可能会慢。在将大量数据添加到表后的第一个运行通常比稍后的运行慢得多。

  • Innodb.,有很长的首要的关键(具有冗长值的单个列,或形成长复合值的几列)浪费了大量的磁盘空间。行的主要键值在指向同一行的所有辅助索引记录中复制。(看第15.6.2.1节“集群和次要索引”。)创建一个自动递增列作为主键如果主键长,或索引长期的前缀varchar.列而不是整个列。

  • 使用varchar.数据类型而不是char存储可变长度字符串或具有许多列的列空值价值观。一种char(N.列始终需要N.存储数据的字符,即使字符串较短或其值是空值。较小的表格在缓冲池中更好地适合,并减少磁盘I / O.

    使用时袖珍的行格式(默认值Innodb.格式)和可变长度字符集,如UTF8.或者SJIS.char(N.列占用了可变空间,但仍然至少是N.字节。

  • 对于大的表,或包含大量重复文本或数字数据,请考虑使用压缩行格式。将数据纳入缓冲池或执行完整表扫描需要较少的磁盘I / O.在制作永久的决定之前,衡量您可以使用的压缩量压缩相对袖珍的行格式。