什么是存储引擎
MySQL可以将数据以不同的技术存储在文件(内存)中,这种技术就称为存储引擎
每一种存储引擎使用不同的存储机制,索引技巧和锁定水平,最终提供广泛且不同的功能
MySQL支持的存储引擎
- MyISAM
- InnoDB
- Memory
- CSV
- Archive
需要知道的知识点
并发控制
当多个连接对记录进行修改时,保证数据的一致性和完整性
此时需要用锁系统:
- 共享锁(读锁):在同一时间段内,多个用户可以读取同一个资源,读取过程中数据不会发生任何变化
- 排他锁(写锁):在任何时候只能有一个用户写入资源,当进行写锁时会阻塞其他的读锁或者写锁操作
- 锁颗粒(锁策略,锁定时的单位)
- 表锁:是一种开销最小的锁策略
- 行锁:是一种开销最大的锁策略
事务处理
作用:用于保证数据库的完整性
事务的特性(ACID):
- 原子性(Atomicity)
- 一致性(Consistency)
- 隔离性(Isolation)
- 持久性(Durability)
索引
概念:对数据表中一列或多列的值进行排序的一种结构
分类:普通索引,唯一索引,全文索引
各种存储引擎的特点
特点 | MyISAM | InnoDB | Memory | Archive |
---|---|---|---|---|
存储限制 | 256TB | 64TB | 有 | 无 |
事务安全 | - | 支持 | - | - |
支持索引 | 支持 | 支持 | 支持 | - |
锁颗粒 | 表锁 | 行锁 | 表锁 | 行锁 |
数据压缩 | 支持 | - | - | 支持 |
支持外键 | - | 支持 | - | - |
CSV:由逗号分隔的存储引擎,它会在数据库的子目录里创建一个.CSV的文件,是普通的文本文件,每一个数据行占用一个文本行,不支持索引
BlackHole:黑洞引擎,写入的数据都会消失,一般用于做数据复制的中继
MyISAM:适用于事务的处理不多的情况
InnoDB:适用于事务处理比较多,需要有外键的情况
设置数据表的存储引擎
有两种方法:
1.通过修改MySQL配置文件实现
default-storage-engine = engine
2.通过创建数据表命令实现
CREATE TABLE table_name(
...
...
)ENGINE = engine;
当数据表建立以后,也可以通过 ALTER命令实现:
ALTER TABLE table_name ENGINE [=] engine_name;