我刚刚开始使用 mysqltuner 来帮助保持我的 mysql 服务器快速和健康。但是,我在优化我的表格时遇到了一些麻烦。当我执行 mysqltuner 时,一切正常并返回结果。它指出有 317 个碎片表,我应该运行 'OPTIMIZE' 表来修复它们。
因此,我编写了一个每周执行的脚本,以“优化”本地服务器上数据库中的每个表。由于返回的结果,该脚本似乎工作正常。尽管如此,当我再次运行 mysqltuner 时,它仍然说有 317 个(实际上,公平地说,它减少了 4 到 313 个)碎片表,我应该仍然优化它们。
还有什么我应该做的吗?我的剧本对吗?
这是我的优化脚本:
mysqlcheck -u'admin' -p`cat /etc/psa/.psa.shadow` --auto-repair --optimize --all-databases;
一旦你从表中删除了一些行,它的数据文件可能会变得碎片化,并且该表在 MySQL 方面变得未优化。如果您确实经常从这些表中删除行,则不必担心,因为这是预期的行为。你不需要做任何其他事情。
OPTIMIZE TABLE
通常用于回收未使用的空间和对数据文件进行碎片整理。此外,您应该知道 MySQL 在OPTIMIZE TABLE
运行期间锁定表,这意味着没有人可以对该表运行查询并且必须等待。