Skip to content

[!quote] 存储引擎 存储引擎 是存储数据,建立索引,更新/查询数据 ……技术的实现方式,存储引擎是基于的,不是基于数据库的【也就是一个数据库中可以有多个存储引擎

  • 不同的存储引擎有不同的优缺点,没有好坏之分,要看具体的使用场景
SQL
-- 查看当前数据库支持的存储引擎
SHOW ENGINES;

InnoDB

[!quote] InnoDB 在 MySQL 5.5 之后,InnoDB 是默认的存储引擎,兼顾高可靠性和高性能

  • DML 语句支持事务,也就是遵循 ACID 模型
  • 行级锁
  • 支持外键

逻辑存储结构

InnoDB 存储引擎的表后缀为 .ibd ,里面存储了表结构表数据索引

  • Tablespace 表空间
  • Segment 段
  • Extent 区 :大小固定为 1M
  • Page 页 :大小固定为 16K
  • Row 行
mermaid
graph LR
	subgraph Tablespace表空间
		a[Segment段]
		b[Segment段]
		c[Segment段]
		d[……]
	end

	c-->Segment段

	subgraph Segment段
		e[Extent区]
		f[Extent区]
		g[Extent区]
		h[……]
	end

	g-->Extent区

	subgraph Extent区
		i[Page页]
		j[Page页]
		k[Page页]
		l[……]
	end

	k-->Page页
	
	subgraph Page页
		m[Row行,也就是表中的一行]
		n[Row行]
		o[Row行]
		p[……]
	end

MyISAM

MyISAM 是早期的 MySQL 默认存储引擎,不支持事务而且是表锁,不是行锁而且不支持外键,==现在基本被 MongoDB 取代==

Memory

Memory 存储引擎是基于内存的存储引擎,==基本被 Redis 取代==