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):可串行读
      • 没问题,不利于并发

读指的是存储引擎对页的读取。

  • 脏读
  • 不可重复读
  • 幻读

锁是属于资源的,

事务需要资源的时候,需要申请该资源的锁。

  • 资源:

    • 内存 :mutex latch pin
    • IO对象锁 :
      • MDL (元数据锁) ,修改元数据的时候 DDL,备份。
      • Table_lock (表锁),DDL,备份(FTWRL全局表锁),手动锁表
      • record(row) lock , 行锁,锁定聚簇索引。
      • GAP , 间隙锁,RR级别,普通辅助索引间隙锁。
      • Next-lock 下一键锁,GAP+Recordlock,普通索引范围锁
  • 对象锁粒度:

  • 功能分类:

    • IS :意向共享锁,表级别。
    • S :共享锁,行级别
    • IX :意向排它锁,表级别。
    • X :排它锁,写锁,行级别
posted @ 2021-02-05 16:05  JinweiChang  阅读(94)  评论(0编辑  收藏  举报