mysql中的存储引擎是什么_mysql存储引擎基础介绍

MySQL存储引擎是表级的底层模块,负责数据存取、索引和事务处理,不参与SQL解析与权限校验;常见引擎包括InnoDB(默认,支持事务、行锁、MVCC)、MyISAM(表锁、全文索引、无事务)和Memory(内存存储、重启丢失)。

MySQL 中的存储引擎,是真正负责数据存、取、更新、索引和事务处理的底层模块。它不参与 SQL 解析或权限校验,而是专注在“数据怎么落盘、怎么读出来、怎么加锁、怎么保证事务可靠”这些事上。你可以把它理解成数据库的“硬盘驱动器+文件系统+事务管家”三合一组件。

存储引擎是表级的,不是库级的

同一个 MySQL 实例里,不同表可以使用不同引擎。比如用户表用 InnoDB(要事务),日志表用 MyISAM(只读查询多),临时统计表用 Memory(纯内存、快但重启丢数据)。创建表时不指定引擎,就用服务器默认的(MySQL 5.5 及以后默认是 InnoDB)。

怎么查当前支持哪些引擎

直接执行命令:

  • SHOW ENGINES; —— 查看所有可用引擎及其是否支持、是否为默认
  • SHOW VARIABLES LIKE '%storage_engine%';SELECT @@default_storage_engine; —— 查看当前默认引擎
  • SHOW CREATE TABLE 表名\G;SHOW TABLE STATUS LIKE '表名'; —— 查看某张表实际用的是哪个引擎

常用引擎核心区别

InnoDB:默认引擎,支持事务(ACID)、行级锁、外键、崩溃恢复、MVCC 并发控制。适合高并发、读写混合、要求数据强一致的场景(如订单、账户)。

MyISAM:不支持事务和行锁,只有表级锁;读性能好,支持全文索引;但崩溃后可能损坏,需手动修复。适合以查询为主、极少更新的静态数据(如配置表、文章归档)。

Memory:全部数据驻留内存,极快,但服务重启即清空;不支持 BLOB/TEXT;适合临时缓存、中间计算结果等。

怎么指定或修改引擎

创建表时显式声明:

  • CREATE TABLE t1 (id INT) ENGINE = InnoDB;
  • CREATE TABLE t2 (name VARCHAR(20)) ENGINE = MyISAM;

已有表可在线切换(注意:会锁表、重建数据):

  • ALTER TABLE t1 ENGINE = MyISAM;
  • 切换后建议执行 ANALYZE TABLE t1; 更新统计信息

修改全局默认引擎需改配置文件 my.cnf 中的 default-storage-engine=InnoDB,再重启 mysqld 服务。