什么原因导致需要修复表?

What causes tables to need to be repaired?

提问人:ejunker 提问时间:9/19/2008 更新时间:12/1/2016 访问量:8497

问:

每隔一段时间,我就会收到一个错误,说我的一个表“被标记为崩溃,应该修复”。然后我做一个 REPAIR TABLE 并修复它。是什么原因导致它们被标记为崩溃,我该如何防止它?我在MySQL 5.0.45中使用MyISAM表。

MySQL 数据库

评论


答:

0赞 Shinhan 9/19/2008 #1

这可能是很多事情,但MySQL性能博客提到了可能导致隐藏损坏的内存不良,操作系统或MySQL错误。此外,那篇文章和另一篇文章提到了在进行崩溃恢复时要记住的几件事。

3赞 DGM 9/19/2008 #2

通常,当数据库未正确关闭时,例如系统崩溃或硬件问题,就会发生这种情况。

6赞 Harrison Fisk 9/19/2008 #3

表格损坏的原因可能有几个,手册中对此进行了详细讨论。

为了对抗它,以下几点效果最好:

  1. 确保您始终正确关闭MySQL
  2. 考虑使用 --myisam-recover 选项在关闭未正确完成时自动检查/修复表
  3. 确保您使用的是最新版本,因为已知的损坏错误通常会尽快修复
  4. 通过测试仔细检查您的硬件,看看它是否导致问题。像 sysbenchmemtest86 这样的工具通常可以帮助验证事情是否正常工作。
  5. 确保没有任何东西从外部接触数据目录,例如病毒检查器、备份程序等......

评论

0赞 rasputin 11/5/2009
我之前遵循了这些步骤,但总是得到损坏的表和数据丢失。然后我决定将下面的答案视为我的答案,即使有大量产品信息的大表格,我也没有得到任何错误。我向大家推荐了我的答案。按照这些步骤,晚上睡个好觉 - 没有噩梦:)
3赞 rasputin 11/3/2009 #4

我曾经像你一样从 mysql 收到错误。

我以这种方式解决了我的问题

  1. 将所有 myisam 表转换为 InnoDB(您可以在 stackoverflow.com 和搜索引擎中搜索“myisam vs InnoDB”以找出原因)
  2. 为了从MySQL获得最佳性能,请使用第三方程序MONyog (MySQL Monitor and Advisor)并检查性能提示

这两个步骤救了我。我希望这些对您也有很大帮助。