提问人:ejunker 提问时间:9/19/2008 更新时间:12/1/2016 访问量:8497
什么原因导致需要修复表?
What causes tables to need to be repaired?
问:
每隔一段时间,我就会收到一个错误,说我的一个表“被标记为崩溃,应该修复”。然后我做一个 REPAIR TABLE 并修复它。是什么原因导致它们被标记为崩溃,我该如何防止它?我在MySQL 5.0.45中使用MyISAM表。
答:
0赞
Shinhan
9/19/2008
#1
这可能是很多事情,但MySQL性能博客提到了可能导致隐藏损坏的内存不良,操作系统或MySQL错误。此外,那篇文章和另一篇文章提到了在进行崩溃恢复时要记住的几件事。
3赞
DGM
9/19/2008
#2
通常,当数据库未正确关闭时,例如系统崩溃或硬件问题,就会发生这种情况。
6赞
Harrison Fisk
9/19/2008
#3
表格损坏的原因可能有几个,手册中对此进行了详细讨论。
为了对抗它,以下几点效果最好:
- 确保您始终正确关闭MySQL
- 考虑使用 --myisam-recover 选项在关闭未正确完成时自动检查/修复表
- 确保您使用的是最新版本,因为已知的损坏错误通常会尽快修复
- 通过测试仔细检查您的硬件,看看它是否导致问题。像 sysbench 和 memtest86 这样的工具通常可以帮助验证事情是否正常工作。
- 确保没有任何东西从外部接触数据目录,例如病毒检查器、备份程序等......
评论
0赞
rasputin
11/5/2009
我之前遵循了这些步骤,但总是得到损坏的表和数据丢失。然后我决定将下面的答案视为我的答案,即使有大量产品信息的大表格,我也没有得到任何错误。我向大家推荐了我的答案。按照这些步骤,晚上睡个好觉 - 没有噩梦:)
3赞
rasputin
11/3/2009
#4
我曾经像你一样从 mysql 收到错误。
我以这种方式解决了我的问题
- 将所有 myisam 表转换为 InnoDB(您可以在 stackoverflow.com 和搜索引擎中搜索“myisam vs InnoDB”以找出原因)
- 为了从MySQL获得最佳性能,请使用第三方程序MONyog (MySQL Monitor and Advisor)并检查性能提示
这两个步骤救了我。我希望这些对您也有很大帮助。
评论