本章只是对存储引擎做一个基础的介绍,对不同的存储引擎的特点做一个了解。
1. 存储引擎简介
定义:
- MySQL可以将数据不同的技术存储在文件(内存)中,这种技术就称为存储引擎。
关系型数据库中数据的存储以表的形式来实现的。所以存储引擎也可以称为表类型。
每一种存储引擎使用不同的存储机制、索引技巧、锁定水平,最终提供广泛且不同的功能。
MySQL支持的存储引擎
MyISAM
InnoDB
Memory
CSV
Archive
2. MySQL相关知识点之并发处理
在了解每个存储引擎特点前,需要先了解一下并发处理相关的知识。
并发控制:
当多个连接对记录进行操作时保证数据的一致性和完整性。
(例如:一张数据表中,两个用户,其中一个用户删除id为22的商品,另一个用户查询id为22的商品,这样可能就会报错,这时就需要并发控制,在处理并发读或者并发写时,系统会使用锁系统解决该问题)
锁:
【1】共享锁(读锁):在同一时间段内,多个用户可以读取同一个资源,读取过程中不会发生任何变化。
【2】排他锁(写锁):在任何时候只能有一个用户写入资源,当进行写锁时会阻塞其他的读锁或者写锁操作。
锁的力度(锁的颗粒)
只需要对需要修改的表或者记录加锁
锁颗粒(锁的单位)
——表锁:是一种开销最小的锁策略。
对整个表进行锁定。
——行锁:是一种开销最大的锁策略。
对每一条记录进行锁定,支持最大并发处理操作。
3. MySQL相关知识点之事务处理
事务:用于保证数据库的完整性
例子:
用户A转账200元给用户B
实现步骤:
(1)从当前账户减掉200元(账户余额大于等于200元)
(2)在对方账户增加200元
那么两个过程应该作为一个整体出现。任何一个环节出现问题,都应该恢复到原有状态
事务的特性:
- 原子性
- 一致性
- 隔离性
- 持久性
4. MySQL相关知识点之外键及索引
外键:保证数据一致性的策略。
索引:是对数据表中一列或者多列的值进行排序的一种结构,使用索引可以快速访问数据表中的特定信息。
5. 各个存储引擎的特点
1.扩展
Memory 的存储限制是由内存的大小来决定。
CSV 存储引擎不支持索引。
BlackHole:黑洞引擎,写入的数据都会消失,一般用做数据复制的中继。
2.索引:普通索引、唯一索引、全文索引、btree索引、hash索引……
3.最广泛:MyISAM/InnoDB
MyISAM:适用于事务的处理不多的情况。
InnoDB:适用于事务处理比较多,需要有外键支持的情况
6. 设置存储引擎
【1】通过修改MySQL配置文件实现
-default-storage-engine=engine(MySQL5.5默认使用Innodb存储引擎)
【2】通过创建数据表命令实现
-CREATE TABLE table_name(
…
…
)ENGINE=engine;
【3】通过修改数据表命令实现
-ALTER TABLE_name ENGINE [=] engine_name
小结
1.存储引擎:数据的系统的心脏,实现数据存储和查询的功能。
2.特点解析
对应的特点为,存储限制、事务安全、是否支持索引、锁的粒度大小、是否支持数据压缩、是否支持外键等。每个技术特点解决的问题是不一样的,不过本质就是为了实现数据存储和查询,是实现的技术不一样,特点不一样,所以我们应该根据需要选择最为合适的。
a.存储限制—数据库能存多少数据
b.事务安全—能否保证数据完整性
c.是否支持索引—能够实现快速查询
d.锁的粒度大小—用于并发控制,实现数据一致性和完整性(表锁、行锁)
e.是否支持数据压缩—-用于数据压缩,能存储更多数据或者改变数据存储结构
f.是否支持外键—能够保证数据的一致性。
3.常用的两种存储引擎及其特点
- MyISAM:存储闲置可达256TB,支持索引,表级锁定,数据压缩
- InnoDB:存储闲置为64TB,支持事务和索引,锁颗粒为行锁