Mysql-InnoDB
存储引擎
mysql中的文件系统
查询引擎
show engines;
InnoDB
核心特点:
MVCC 多版本并发控制。
Clustered index 聚簇索引
多缓存区池
事务
行级锁
外键
更多复制特性
支持热备
自动故障恢复
change buffer
自适应hash索引,AHI
整理碎片
alter table x engine=innodb;
事务
begin;
DML1
DML2
commit/rollback;
InnoDB保证ACID
1.重做日志
2.数据页
Innodb_flush_log_at_trx_commit=0/1/2
1:每次提交事务,写入磁盘。
0:每秒写日志到os cache,再到磁盘,异常宕机时,会丢失1秒事务。
2:每次事务提交,都立即刷新redo buffer到os cache,在每秒fsync()写入磁盘,异常宕机时,会丢失1秒事务
隔离级别和锁机制
- transaction_isolation
- RU (READ-UNCOMMITTED):未提交读
- 脏读,不可重复读,幻读
- RC (READ-COMMITTED):已提交读
- 不可重复读,幻读
- RR(REPEATABLE-READ):可重复读
- 幻读
- SR(SERIALIZABLE):可串行读
- 没问题,不利于并发
- RU (READ-UNCOMMITTED):未提交读
读指的是存储引擎对页的读取。
- 脏读
- 不可重复读
- 幻读
锁
锁是属于资源的,
事务需要资源的时候,需要申请该资源的锁。
-
资源:
- 内存 :mutex latch pin
- IO对象锁 :
- MDL (元数据锁) ,修改元数据的时候 DDL,备份。
- Table_lock (表锁),DDL,备份(FTWRL全局表锁),手动锁表
- record(row) lock , 行锁,锁定聚簇索引。
- GAP , 间隙锁,RR级别,普通辅助索引间隙锁。
- Next-lock 下一键锁,GAP+Recordlock,普通索引范围锁
-
对象锁粒度:
-
功能分类:
- IS :意向共享锁,表级别。
- S :共享锁,行级别
- IX :意向排它锁,表级别。
- X :排它锁,写锁,行级别