首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅适用于MyIsam存储引擎的最常见和最重要的SQL命令?

问仅适用于MyIsam存储引擎的最常见和最重要的SQL命令?
EN

Stack Overflow用户
提问于 2012-11-16 08:52:43
回答 1查看 457关注 0票数 3

最近,我们讨论了使用旧的基于MyISAM的MySQL部署来移动旧的遗留系统,这很难被基于InnoDB的MySQL或MariaDB部署所取代。之所以出现这种情况,是因为到处都是MyISAM命令。我还没有看到代码,所以我想知道它们所指的SQL命令是什么。

我只知道下面有几个与表锁定相关的信息。它可能仍然适用于理论上的InnoDB,但更适合支持表锁定的MyISAM、MERGE和MEMORY存储引擎。

代码语言:javascript
复制
LOCK TABLES
UNLOCK TABLES

如果有更多,或者指给我一个集合。我们会非常感激的。

-编辑--

我会把我发现的所有东西都放在这条线下面。

代码语言:javascript
复制
MATCH (http://dev.mysql.com/doc/refman/5.5/en//fulltext-search.html)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-19 16:30:27

您也可以对一个LOCK TABLES表进行InnoDB,所以这不是特定于MyISAM的。尽管没有必要锁定InnoDB表。最好使用事务、MVCC和SELECT...FOR UPDATE。

有许多配置变量和状态变量仅与MyISAM相关,例如key_buffer_size将一些内存用于缓存索引。但这些不是命令。

MyISAM表的一些特性不受InnoDB支持。一个是分组自动增量主键:

代码语言:javascript
复制
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选项:

  • AVG_ROW_LENGTH=nnn
  • DATA_DIRECTORY=path
  • INDEX_DIRECTORY=path
  • DELAY_KEY_WRITE=1
  • PACK_KEYS=1
  • ROW_FORMAT=FIXED

合并存储引擎只能合并MyISAM表。

我最喜欢的应用于MyISAM表的命令如下。:-)

代码语言:javascript
复制
ALTER TABLE tablename ENGINE=InnoDB;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13413226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档