两阶段加锁协议(2PL)
主要用于单机事务中的一致性与隔离性。
两阶段提交协议(2PC)
主要用于分布式事务
多版本并发控制(Multi-Version Concurrency Control,MVCC)
可重复读(repeatable read)
一个事务执行过程中看到的数据,总是跟这个事务在启动时看到的数据是一致的。当然在可重复读隔离级别下,未提交的变更对其他事务是不可见的。
幻读(phantom read)
脏读(dirty read)
当前读(current read)
更新数据都是先读后写,而这个读,只能读当前的值,成为当前读
快照读(snapshot read)
一致性
不仅是数据库内部数据状态的一致性还包含数据和日志在逻辑上的一致性
读锁(S锁,共享锁)
写锁(X锁,排他锁)
间隙锁(Gap Lock)
next-key lock
记录锁(record locks)
互斥锁(lock_mode X)
行锁
死锁
当并发系统中不同线程出现循环资源依赖,涉及的线程都在等待别的线程释放资源是,就会导致这几个线程都进入无线等待的状态。
全局锁
对整个数据库实例加锁。命令Flush tables with read lock。主要用在逻辑备份过程中
表锁
对表进行加锁。命令lock tables ... read/write
元数据锁(meta data lock,MDL)
也是表级锁,不需要显示使用,在访问一个数据表的时候会被自动加上。MDL的作用是保证读写的正确性。
备份线程
读提交
binlog
连接器
管理连接,权限验证
查询缓存
分析器
词法分析,语法分析
优化器
执行计划生成,索引选择
执行器
操作引擎,返回结果
存储引擎
redo log(重做日志)
binlog(归档日志)
undo log(回滚日志)
WAL技术(Write-Ahead-Logging,WAL)
write pos
checkpoint
buffer pool
InnoDB 用缓冲池管理内存
覆盖索引
可以直接提供查询结果,不需要回表。
索引下推
一致性视图(consistent read view)
是INNIDB在实现MVCC时用到的,用于支持RC(Read Commited,读提交)和RR(Repeatable Read,可重复读)隔离级别的实现。
change buffer
刷脏页
数据页
DDL
DML
DCL
Online DDL
OLAP 联机分析处理OLAP(On-Line Analytical Processing)
OLTP 联机事务处理OLTP(On-Line Transaction Processing)