优化并检查表mysql

Gil*_*kaz 22 mysql optimization

我有一个用于统计的数据库,有超过2000个表,每个表有大约1亿行.

我想每周几次检查表格以确保它们是健康的,如果没有,则修复和优化它们会很好.

60%的表每天更新,其余的都是档案.

我的问题是check(repair)/optimize:检查表格健康状况并每周优化几次以确保系统顺利运行是否合适?

Mar*_*555 24

通常你需要OPTIMIZE表,当它的数据文件在磁盘上碎片过多时(使用工具供你的文件系统检查 - 由GiantRobot链接的脚本不计算碎片),当有许多行更新并改变它们的大小时(这将创建行)碎片)或删除许多记录后,你很快就不会再添加它们.因为MySQL使用可用空间用于新行,所以当删除的和新记录具有相同的行大小时,不需要OPTIMIZE.

CHECK TABLE仅在您怀疑数据损坏时使用(在正常运行期间不应发生这种情况).一些Linux发行版(例如Debian)具有启动脚本,它们为MySQL服务器启动时的所有表运行CHECK TABLE.然后使用REPAIR TABLE修复损坏的表.

ANALYZE TABLE可用于更新索引基数,索引基数用于确定查询执行计划.通常只在特殊情况下才需要它.

从您的问题中不清楚您的统计表是如何使用的......写入,删除和读取的数量是多少?我的统计表一直有写入,每天读取一次,数据合并并写入其他表,然后删除.在这种情况下,不需要运行OPTIMIZE,因为不经常读取数据并且可以为新数据重用可用空间.我白天使用分区,所以不是删除记录(这很慢)我只是DROP PARTITION(最多需要1秒)