gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 08:51:29 25 4
gpt4 key购买 nike

最近我们的一项讨论提到,使用基于 MyISAM 的旧 MySQL 部署来移动旧的遗留系统不能轻易地被基于 InnoDB 的 MySQL 或 MariaDB 部署所取代。出现的原因是到处都是 MyISAM 纯 SQL 命令。我还没有看到代码,所以我想知道他们指的是什么 SQL 命令。

我只知道下面的几个与表锁定相关联。它可能仍然在理论上与 InnoDB 一起工作,但更适合支持表锁定的 MyISAM 、MERGEMEMORY 存储引擎。

LOCK TABLES
UNLOCK TABLES

如果还有更多,或指向我的集合。我们将不胜感激。

--编辑--

我会把我找到的所有其他东西都放在这一行下面。

MATCH (http://dev.mysql.com/doc/refman/5.5/en//fulltext-search.html)

最佳答案

您也可以为 InnoDB 表LOCK TABLES,所以这不是 MyISAM 特定的。虽然没有必要锁定 InnoDB 表。最好使用事务、MVCC 和 SELECT...FOR UPDATE

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

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

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 中受支持。但是这些正在为 MySQL 5.6 中的 InnoDB 实现。

CREATE SPATIAL INDEX 仅在 MyISAM 中受支持。

CHECKSUM TABLE 仅适用于 MyISAM 表。

OPTIMIZE TABLE 在某些方面特定于 MyISAM,但是当您对 InnoDB 表运行此命令时,它会自动转换为重新创建 + 分析操作。

CREATE TABLE 仅 MyISAM 支持的选项:

  • AVG_ROW_LENGTH=nnn
  • DATA_DIRECTORY=路径
  • INDEX_DIRECTORY=路径
  • DELAY_KEY_WRITE=1
  • PACK_KEYS=1
  • ROW_FORMAT=FIXED

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

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

ALTER TABLE tablename ENGINE=InnoDB;

关于mysql - 仅适用于 MyIsam 存储引擎的最常见和最重要的 SQL 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13413226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com