1.存储引擎
数据库底层软件组织,不同引擎提供不同存储机制,索引技巧,锁定水平等功能,使用不同的存储引擎可以获得特定功能。
MyIASM InnoDB Memory Archive Federated
2.类型
2.1 MyIASM
MySQL默认引擎,没有提供事务支持,行级锁,外键。
插入更新需要锁定整个表,效率低
读取速度快,不占用大量内存,存储资源,ISAM静态索引结构
2.2 Memory
Heap堆内存,使用在内存的内容创建表,每个表只实际对应一个磁盘文件,访问非常快,默认使用Hash索引
服务关闭,表内数据丢失,支持散列索引和B树索引,B树索引可以使用部分查询和通配查询,也可以使用><=等操作,散列索引较快但是对于比较较慢
3.InnDB
底层为B+树,B树每个节点对应innodb的一个page,page大小固定16k,只有非叶子结点有键值,叶子节点包含完成数据
场景适用:
- 经常更新的表,适合处理多重并发的更新请求
- 支持事务
- 可以从灾难中恢复(bin-log日志)
- 外键约束 只有它支持外键
- 自增列 auto_increment
2.索引
MySQL高效获取数据的数据结构。
2.1 分类
- 唯一性索引:值唯一
3.事务
3.1 属性
- 原子性:事务是一个完整操作
- 一致性:事务完成,数据必须一致
- 隔离性:并发事务隔离,事务必须独立
- 永久性:事务完成后,修改永久保持
4.存储过程
5.触发器
6.并发策略
6.1 乐观锁
6.2 悲观锁
- 排它锁 写锁
- 共享锁 读锁
6.3 时间戳
单独加一列时间戳。每次读时,对该字段加一,提交前,进行比对,如果比数据库值大,允许保存,否则不允许。
7.数据库锁
7.1 行级锁
排它锁,防止其他事务修改此行
7.2 表级锁
对整张表加锁
7.3 页级锁
锁定粒度介于行级锁和表级锁中间一种