MySQL-存储引擎

常见的存储引擎有MyISAMInnoDBMemory

在MySQL 5.5版本之前,默认的存储引擎是MyISAM

在MySQL 5.5版本之后,默认的存储引擎变为了InnoDB

而Memory是MySQL 3.23版本中引入的使用内存缓存数据,将索引存储在磁盘上的一种引擎。

在日常使用过程中我们主要用到前两种引擎,二者之间有很大差别,主要包括:

  1. InnoDB支持事务,MyISAM不支持事务。
  2. InnoDB最小的锁粒度为行级锁,MyISAM只支持表级锁。
  3. InnoDB数据支持聚簇索引和非聚簇索引存储,MyISAM只支持非聚簇索引。
  4. InnoDB支持外键关联,MyISAM不支持外键。
  5. InnoDB支持MVCC多版本并发控制机制,MyISAM不支持MVCC。

(扩展)借助命令行查看当前使用的存储引擎

查看 MySQL 版本信息

1
SHOW VARIABLES LIKE '%storage_engine%';

image-20241224160729533

查看 MySQL支持的存储引擎(MySQL8.0.34)

1
SHOW ENGINES;

image-20241224160749270

修改当前数据库的存储引擎

将名为 users表的存储引擎从 MyISAM 切换为InnoDB

1
ALTER TABLE users ENGINE = InnoDB;

在建表时直接指定存储引擎:

1
2
3
4
5
6
CREATE TABLE products (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(255),
price DECIMAL(10, 2),
PRIMARY KEY (id)
) ENGINE = MyISAM;

设置默认的存储引擎

在配置文件中设置:

1
2
[mysqld]
default-storage-engine = engine_name

使用SET命令设置:

1
SET default_storage_engine = engine_name;

在当前会话中将默认存储引擎设置为 MyISAM:

1
SET default_storage_engine = MyISAM;