表格的存储引擎不支持修复。InnoDB还是MyISAM?

25

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

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?

3
不需要修复INNODB表格(https://dev59.com/YEvSa4cB1Zd3GeqPbx0_) - Ben
请阅读此网页:https://dev59.com/7W855IYBdhLWcg3wm1i3 - Ben
3个回答

11

首先,您需要了解MyISAMInnoDB引擎之间的区别。这在这个链接中清楚地说明了。如果您想将InnoDB转换为MyISAM,则可以使用此SQL语句:

 ALTER TABLE t1 ENGINE=MyISAM;

13
链接已损坏(受到WordPress网站保护)。 - GlennG
请查看此帖子。https://dev59.com/YEvSa4cB1Zd3GeqPbx0_ - JayRizzo
@GlennG - 链接现在已修复!互联网档案馆有那个页面。 - Tony

11

InnoDB 和 MyISAM 有稍微不同的工作方式,它们都是可行的选项。您应该使用适合项目的选项。

一些关键点将包括:

  1. InnoDB 执行 ACID-compliant (原子性、一致性、隔离性和持久性) 事务。 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 - 16kb

1
您在命令中设置了错误的表格。您应该在设置中使用以下内容:
ALTER TABLE scode_tracker.ap_visits ENGINE=MyISAM;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接