24

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

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?

4

3 回答 3

11

MyISAM首先是你必须了解和InnoDB引擎之间的区别。这在此链接上已明确说明。如果要将 InnoDB 转换为 MyISAM ,可以使用此 sql 语句:

 ALTER TABLE t1 ENGINE=MyISAM;
于 2012-04-30T01:18:47.500 回答
11

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 慢”,这也可能是决定使用什么的一个非常重要的因素。

于 2012-09-27T11:22:33.833 回答
1

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

ALTER TABLE scode_tracker.ap_visits ENGINE=MyISAM;
于 2014-04-29T13:20:36.343 回答