设置mysql表myisam_mysql8 参考手册--MyISAM表优化及设置MyISAM表维护计划

要合并碎片行并消除由于删除或更新行而导致的空间浪费,请在恢复模式下运行 myisamchk:

shell>myisamchk -r tbl_name

您可以使用OPTIMIZE TABLESQL语句以相同的方式优化表 。 OPTIMIZE TABLE进行表修复和键分析,并对索引树进行排序,以使键查找更快。实用程序和服务器之间也不会发生不必要的交互,因为使用时服务器会完成所有工作OPTIMIZE TABLE。请参见第13.7.3.4节“ OPTIMIZE TABLE语句”。

myisamchk还有许多其他选项可用于改善表的性能:

--analyze或 -a:执行密钥分布分析。通过使联接优化器更好地选择联接表的顺序和应使用的索引,可以提高联接性能。

--sort-index或 -S:对索引块进行排序。这样可以优化查找,并使使用索引的表扫描更快。

--sort-records=index_num 或:根据给定的索引对数据行进行排序。这使您的数据更加本地化,​​并可能加快基于范围的 索引和使用该索引的操作。 -R index_numSELECTORDER BY

有关所有可用选项的完整说明,请参见 第4.6.4节“ myisamchk -MyISAM表维护实用程序”。

设置MyISAM表维护计划

定期执行表检查而不是等待问题发生是一个好主意。检查和修复MyISAM表的一种方法是使用 CHECK TABLEand REPAIR TABLE语句。请参见 第13.7.3节“表维护声明”。

检查表的另一种方法是使用 myisamchk。为了维护目的,可以使用myisamchk -s。该-s 选项(的缩写--silent)使myisamchk以静默方式运行,仅在发生错误时才打印消息。

启用自动MyISAM表检查也是一个好主意 。例如,每当计算机在更新过程中完成重新启动时,通常都需要先检查每个可能受到影响的表,然后再使用它。(这些是“ 预期崩溃的表。 ”)要使服务器MyISAM自动检查 表,请使用myisam_recover_options 系统变量集启动它。请参见 第5.1.8节“服务器系统变量”。

您还应该在正常系统运行期间定期检查表。例如,您可以运行cron 作业来每周检查一次重要的表,在crontab文件中使用以下行:

35 0 * * 0 /path/to/myisamchk --fast --silent /path/to/datadir/*/*.MYI

这将打印出有关崩溃表的信息,以便您可以根据需要检查和修复它们。

首先,每晚在过去24小时内已更新的所有表上执行myisamchk -s。如您所见,问题很少发生,您可以将检查频率推迟到每周一次左右。

通常,MySQL表几乎不需要维护。如果您要对MyISAM具有动态大小的行的表(带有 VARCHAR, BLOB或 TEXT列的表)执行许多更新,或者具有删除了许多行的表,则可能需要不时对表进行碎片整理/回收。您可以通过OPTIMIZE TABLE在有关表上使用来执行此操作 。或者,如果可以暂时停止mysqld服务器,则在服务器停止 时将位置更改为数据目录并使用以下命令:

shell> myisamchk -r -s --sort-index --myisam_sort_buffer_size=16M */*.MYI

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值