繁体   English   中英

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

[英]The storage engine for the table doesn't support repair. InnoDB or MyISAM?

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

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?

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

首先,您必须了解MyISAMInnoDB引擎之间的区别。 这个链接清楚地说明了这一点。 如果要将InnoDB转换为MyISAM,可以使用此sql语句:

 ALTER TABLE t1 ENGINE=MyISAM;

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

ALTER TABLE scode_tracker.ap_visits ENGINE=MyISAM;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM