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

内存分配在运行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。本文翻译由学什么技术好网翻译


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值