最近,我们讨论了使用旧的基于MyISAM的MySQL部署来移动旧的遗留系统,这很难被基于InnoDB的MySQL或MariaDB部署所取代。之所以出现这种情况,是因为到处都是MyISAM命令。我还没有看到代码,所以我想知道它们所指的SQL命令是什么。
我只知道下面有几个与表锁定相关的信息。它可能仍然适用于理论上的InnoDB,但更适合支持表锁定的MyISAM、MERGE和MEMORY存储引擎。
LOCK TABLES
UNLOCK TABLES如果有更多,或者指给我一个集合。我们会非常感激的。
-编辑--
我会把我发现的所有东西都放在这条线下面。
MATCH (http://dev.mysql.com/doc/refman/5.5/en//fulltext-search.html)发布于 2012-11-19 16:30:27
您也可以对一个LOCK TABLES表进行InnoDB,所以这不是特定于MyISAM的。尽管没有必要锁定InnoDB表。最好使用事务、MVCC和SELECT...FOR UPDATE。
有许多配置变量和状态变量仅与MyISAM相关,例如key_buffer_size将一些内存用于缓存索引。但这些不是命令。
MyISAM表的一些特性不受InnoDB支持。一个是分组自动增量主键:
CREATE TABLE foo (
group_id INT,
position INT AUTO_INCREMENT,
PRIMARY KEY (group_id, position)
);上面的表在插入行时会增加position,但是对于group_id的每个不同值,从1开始。这只适用于MyISAM。
CREATE FULLTEXT INDEX,因此MATCH()...AGAINST()查询谓词目前只支持在MyISAM中。但这些都是为InnoDB在MySQL 5.6中实现的。
CREATE SPATIAL INDEX仅在MyISAM中被支持。
CHECKSUM TABLE只适用于MyISAM表。
OPTIMIZE TABLE在某些方面是特定于MyISAM的,但是当您对InnoDB表运行此命令时,它会自动转换为重新创建+分析操作。
仅由CREATE TABLE支持的MyISAM选项:
合并存储引擎只能合并MyISAM表。
我最喜欢的应用于MyISAM表的命令如下。:-)
ALTER TABLE tablename ENGINE=InnoDB;https://stackoverflow.com/questions/13413226
复制相似问题