[ACDU 翻译] MySQL 8.5.1优化InnoDB表的存储布局

网友投稿 627 2022-11-03

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

[ACDU 翻译] MySQL 8.5.1优化InnoDB表的存储布局

一旦数据达到稳定的大小,或者正在增长的表增加了几十或几百兆字节,请考虑使用该OPTIMIZE TABLE语句重新组织表并压缩所有浪费的空间。重组后的表需要较少的磁盘I / O来执行全表扫描。这是一种直接的技术,可以在其他技术(如改善索引使用率或调整应用程序代码)不可行时提高性能。OPTIMIZE TABLE复制表的数据部分并重建索引。好处来自改善索引内数据的打包,并减少了表空间和磁盘内的碎片。好处因每个表中的数据而异。您可能会发现其中一些收益显着,而其他收益则不大,或者收益随着时间的流逝而减少,直到您下次优化表格为止。如果表很大或正在重建的索引不适合缓冲池,则此操作可能会很慢。向表中添加大量数据后的第一次运行通常比以后的运行要慢得多。在中InnoDB,拥有一个较长的PRIMARY KEY字段(一个具有长值的列,或者形成一个较长的复合值的几列)会浪费大量的磁盘空间。该行的主键值在指向同一行的所有辅助索引记录中重复。(请参见第15.6.2.1节“集群索引和二级索引”。)AUTO_INCREMENT如果主键很长,则创建一列作为主键,或者为长VARCHAR列的前缀而不是整个列建立索引。使用VARCHAR数据类型而不是CHAR存储可变长度的字符串或用于具有许多NULL值的列 。甲 列总是占据字符来存储数据,即使该字符串是较短,或者其值 。较小的表更适合缓冲池并减少磁盘I / O。 CHAR(*N*)NNULL当使用COMPACT行格式(默认InnoDB格式)和可变长度字符集(例如 utf8或)时sjis, 列占据可变的空间量,但仍至少保留字节。 CHAR(*N*)N对于大表或包含大量重复文本或数字数据的表,请考虑使用 COMPRESSED行格式。将数据带入缓冲池或执行全表扫描所需的磁盘I / O较少。在做出永久性决定之前,请先评估使用COMPRESSEDvs COMPACT行格式可以实现的压缩量 。

上一篇:软件测试培训之通用功能的测试点分析
下一篇:软件测试培训之APP测试方法分享
相关文章

 发表评论

暂时没有评论,来抢沙发吧~