Answers:
您应该将所有数据转换为InnoDB,以防止表锁定问题。但是,请考虑以下几点:
目前,只有MyISAM支持FULLTEXT索引。InnoDB的FULLTEXT索引目前适用于MySQL 5.6,但尚未投入生产。如果您有任何具有FULLTEXT索引的Drupal表,则目前无法将它们转换为InnoDB。
MySQL 5.6现在是GA(仅供生产使用)。请尝试在InnoDB中对FULLTEXT进行索引。
要找到具有FULLTEXT
索引的表,请运行以下查询:
SELECT table_schema,table_name
FROM information_schema.statistics
WHERE index_type='FULLTEXT';
如果没有返回行,则将所有InnoDB表转换为您内心的内容。我写了一篇有关如何仅使用mysql将所有MyISAM表转换为InnoDB的早期文章。
如果您有大量读取的环境,则执行以下操作可以使MyISAM中的读取速度更快:
--skip-innodb
在所有从站上添加/etc/my.cnf(将数据加载到从站时将表转换为MyISAM)ALTER TABLE tblname ROW_FORMAT=FIXED;
ROW_FORMAT=FIXED
在第72,73页使用。这将在内部将所有VARCHAR字段转换为CHAR。它将使MyISAM表更大,但是针对它执行的SELECT将更快。我可以亲自证明这一点。我曾经有一张1.9GB的桌子。我使用更改了格式ALTER TABLE tblname ROW_FORMAT=FIXED
。该表最终为3.7GB。SELECT的速度提高了20-25%,而没有改进或更改任何其他内容。唯一令人头疼的是使您的应用程序意识到单独的读取从属。
如果您在寻找每个存储引擎的其他好处,请查看DBA StackExchange:
Apr 14, 2011
:InnoDB和MyISAM之间的主要区别是什么? Sep 20, 2011
:MyISAM和InnoDB的精华May 02, 2012
:选择哪个mysql存储引擎?May 03, 2012
:InnoDB或MyISAM是哪一个更快?