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

jay*_*abs 22 mysql

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

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
Run Code Online (Sandbox Code Playgroud)

我发现表的类型是InnoDB.另一张桌子是MyISAM,它已成功修复.

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

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


Joh*_*Woo 10

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

 ALTER TABLE t1 ENGINE=MyISAM;
Run Code Online (Sandbox Code Playgroud)

  • 链接现在坏了(受保护的wordpress网站) (13认同)