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

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

8.5.1优化InnoDB表的存储布局

  • 一旦您的数据达到稳定尺寸,或者越来越多的表格增加了数百或数百兆字节,请考虑使用优化表语句重新组织表并压缩任何浪费的空间。重组后的表需要更少的磁盘I/O来执行全表扫描。这是一种简单的技术,可以在其他技术(如改进索引使用或调优应用程序代码)不实用时提高性能。

    优化表复制表的数据部分并重新构建索引。其好处在于改进了索引内的数据打包,减少了表空间和磁盘上的碎片。好处因每个表中的数据而异。您可能会发现一些人获得了显著的收益,而另一些人却没有,或者收益会随着时间的推移而减少,直到下一次优化表为止。如果表很大,或者正在重建的索引不适合缓冲池,则此操作可能会很慢。向表添加大量数据后的第一次运行通常比以后的运行要慢得多。

  • Innodb.,有一个长主键(一个列有一个很长的值,或者几个列组成一个很长的复合值)浪费了大量磁盘空间。一行的主键值在指向同一行的所有辅助索引记录中重复。(见第15.6.2.1节,“聚类和二级索引”)。创建一个AUTO_INCREMENT如果你的主键是长,列作为主键,或索引一个长前缀varchar.列,而不是整个列。

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

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

  • 对于大的表,或包含大量重复文本或数字数据,请考虑使用压缩行格式。将数据带入缓冲池或执行全表扫描所需的磁盘I/O更少。在做出永久的决定之前,测量您可以通过使用实现的压缩量压缩相对袖珍的行格式。