【问题标题】:The storage engine for the table doesn't support repair. InnoDB or MyISAM?表的存储引擎不支持修复。 InnoDB 还是 MyISAM?
【发布时间】:2012-04-30 00:49:22
【问题描述】:

修复我的数据库后,我收到以下错误:

scode_tracker.ap_visits
note     : The storage engine for the table doesn't support repair
scode_tracker.visit_length
note     : The storage engine for the table doesn't support repair

我发现表的类型是 InnoDB。另一张表是MyISAM,修复成功。

在这里阅读了一些主题后,解决方案是将其更改为 MyISAM。我对 InnoDB 和 MyISAM 了解不多。我在创建表时没有指定类型。所以我的问题是我应该使用 MyISAM 而不是 InnoDB 吗?如果是,如何将其从 InnoDB 更改为 MyISAM?

【问题讨论】:

标签: mysql


【解决方案1】:

首先,您必须了解 MyISAMInnoDB 引擎之间的区别。这在link 上有明确说明。如果您想将 InnoDB 转换为 MyISAM,可以使用此 sql 语句:

 ALTER TABLE t1 ENGINE=MyISAM;

【讨论】:

【解决方案2】:

InnoDB 的工作方式与 MyISAM 略有不同,它们都是可行的选择。 你应该使用你认为适合项目的东西。

一些关键点将是:

  1. InnoDB 执行 ACID 兼容事务。 http://en.wikipedia.org/wiki/ACID
  2. InnoDB 执行参照完整性(外键关系)http://www.w3resource.com/sql/joins/joining-tables-through-referential-integrity.php
  3. MyIsam 进行全文搜索,InnoDB 没有
  4. 有人告诉我 InnoDB 在执行写入时速度更快,但在读取时比 MyISAM 慢(我无法备份,也找不到任何分析此问题的文章,但是我确实有一位非常重视告诉我这一点的人),请随意忽略这一点或自行研究。
  5. 默认配置不太好,InnoDB 需要相应调整,运行http://mysqltuner.pl/mysqltuner.pl 之类的工具来帮助您。

注意事项:

  • 在我看来,第二点可能是 InnoDB 比 MyISAM 具有巨大优势。
  • 全文搜索无法使用 InnoDB 有点麻烦,您可以混合使用不同的存储引擎,但这样做时要小心。

注意事项2: - 我正在阅读《高性能 MySQL》这本书,作者说“InnoDB 加载数据和创建索引比 MyISAM 慢”,这也可能是决定使用什么的一个非常重要的因素。

【讨论】:

  • InnoDB 从 5.6.4 开始支持 FULLTEXT
【解决方案3】:

您在命令中设置了错误的表。您应该在设置中使用以下内容:

ALTER TABLE scode_tracker.ap_visits ENGINE=MyISAM;

【讨论】:

    猜你喜欢
    • 2016-12-23
    • 2011-08-13
    • 1970-01-01
    • 2016-01-11
    • 1970-01-01
    • 2019-01-14
    • 1970-01-01
    • 2012-10-02
    • 1970-01-01
    相关资源
    最近更新 更多