存储引擎
存储引擎是MySQL特有的,是一个表存储/组织输出的方式
不同的存储引擎、表存储数据的方式不同
-
如何给表指定“存储引擎”?
在建表时最后的
)
后面使用:ENGINE
来指定存储引擎
CHARSET
来指定这张表的字符编码方式create table t_product( id int primary key, name varchar(255) )engine=InnoDB default charset=gbk;
这里使用了
InnoDB
引擎,其字符编码格式为gbk
-
mysql支持九大存储引擎,版本不同支持情况不同
比如我在23年初安装的版本(8.0.31)支持8种
# 显示所有引擎和支持情况 show engines \G
-
常用的引擎介绍:
数据库名称 特征 优点 缺点 MyISAM 使用三个文件表示每个表 可被转换为压缩、只读表来节省空间 不支持事务机制,安全性低 InnoDB MySQL默认,支持事务,支持数据库崩溃后自动恢复机制,安全 最大的特点就是支持事务:以保证数据的安全 效率不高,不能压缩和转换为只读 MEMORY 其数据存储在内存中,且行的长度固定 查询效率是最高的,不需要和硬盘交互 不安全,关机之后数据消失 MyISAM特性
-
使用三个文件表示每个表:
格式文件 — 存储表结构的定义(mytable.frm)
数据文件 — 存储表行的内容(mytable.MYD)
索引文件 — 存储表上索引(mytable.MYI):索引是一本书的目录,缩小扫描范围,提高查询效率的一种机制。 -
可被转换为压缩、只读表来节省空间
InnoDB特性
-
每个表均以.frm 格式的文件表示
-
提供一组用来记录事务性活动的日志文件
-
用
COMMIT
(提交)、SAVEPOINT
及ROLLBACK
(回滚)支持事务处理 -
提供全 ACID 兼容
Atomicity(原子性):一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成(被Rollback到开始前),不会结束在中间某个环节。
Consistency(一致性):在事务开始之前和事务结束以后,数据库的完整性没有被破坏。
Isolation(隔离性):数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。
Durability(持久性):事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。 -
在 MySQL 服务器崩溃后提供自动恢复
-
多版本(MVCC)和行级锁定
-
支持外键及引用的完整性,包括级联删除和更新
MEMORY 特征
- 在数据库目录内,每个表均以.frm 格式的文件表示。
- 表数据及索引被存储在内存中。(目的就是快,查询快!
- 表级锁机制。
- 不能包含
TEXT
或BLOB
字段。
-