您的位置:首页 > 数据库 > MySQL

11、MySQL 8.0参考手册 4.6.4.6 myisamchk内存使用情况

2018-03-26 09:39 453 查看
内存分配在运行myisamchk时很重要 。myisamchk使用的内存不会超过与内存相关的变量设置的内存。如果你打算在非常大的表上使用myisamchk,你应该首先确定你想要使用多少内存。默认情况下仅使用大约3MB来执行修复。通过使用更大的值,您可以使myisamchk更快地运行。例如,如果您有超过512MB的可用内存,则可以使用这些选项(除了可能指定的其他选项外):

shell> myisamchk --myisam_sort_buffer_size=256M \
--key_buffer_size=512M \
--read_buffer_size=64M \
--write_buffer_size=64M ...
--myisam_sort_buffer_size=16M在大多数情况下 使用可能已足够。

请注意,myisamchk使用了临时文件TMPDIR。如果TMPDIR 指向内存文件系统,则内存不足错误很容易发生。如果发生这种情况,请运行myisamchk并 指定位于具有更多空间的文件系统上的目录。 --tmpdir=dir_name
执行修复操作时,myisamchk 还需要大量的磁盘空间:
数据文件大小的两倍(原始文件和副本)。这个空间是不需要的,如果你做一个修复 --quick; 在这种情况下,只有索引文件被重新创建。该空间必须与原始数据文件在同一文件系统上可用,因为副本是在与原始文件相同的目录中创建的。
用于替换旧版索引文件的空间。旧的索引文件在修复操作开始时被截断,因此通常会忽略此空间。该空间必须在与原始数据文件相同的文件系统上可用。
当使用--recover或 --sort-recover(但不是在使用时 --safe-recover),您需要磁盘上的空间进行排序。该空间分配在临时目录中(由TMPDIR or 指定)。以下公式将得出所需的空间量: --tmpdir=dir_name
(largest_key + row_pointer_length) * number_of_rows * 2

您可以检查密钥的长度和 row_pointer_length用 myisamchk的-dv tbl_name(见 第4.6.4.5,“获取表信息用myisamchk”)。该 row_pointer_length和 number_of_rows值是 Datafile pointer和Data records值在表中说明。要确定该largest_key值,请检查Key表格描述中的各行。该Len列表示每个关键部分的字节数。对于多列索引,键大小是Len 所有关键部分的值的总和.如果您在修复过程中遇到磁盘空间问题,则可以尝试 --safe-recover使用 --recover。本文翻译由学什么技术好网翻译
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: