事务

什么是事务?

事务、锁、MVCC

事务的ACID 特性

事务、锁、MVCC

事务并发带来的问题:

事务、锁、MVCC

脏读: 事务A 读到了事务B 未提交的数据

事务、锁、MVCC

不可重复读:在一个事务中两次读取的结果内容不同

事务、锁、MVCC

幻读:一个事务中两次读取的数据行数不同

事务的四种隔离级别

事务、锁、MVCC

innoDB 引擎对隔离级别的支持程度

事务、锁、MVCC

理解表锁与行锁

事务、锁、MVCC

另类的行锁是指:当所有行都加上锁了,就变成了表锁

MysqlInnoDB锁类型

事务、锁、MVCC

共享锁与排它锁对比

事务、锁、MVCC

InnoDB锁住了什么

事务、锁、MVCC

意向共享锁意向排它锁

事务、锁、MVCC

自增锁AUTO-INC Locks

事务、锁、MVCC

记录锁(Record Locks)&间隙锁(Gap Locks)&临建锁(Next-key Locks)

事务、锁、MVCC

临建锁

事务、锁、MVCC

innodb 选择临建锁作为默认的行锁算法,是因为临建锁可以解决幻读问题。

间隙锁

事务、锁、MVCC

记录锁

事务、锁、MVCC

利用锁解决并发事务产生的问题

解决脏读

事务、锁、MVCC

解决不可重复的

事务、锁、MVCC

解决幻读

事务、锁、MVCC

死锁的介绍

事务、锁、MVCC

死锁的避免

事务、锁、MVCC

1)和 5)是避免死锁的最好策略

MVCC

事务、锁、MVCC

ex1与ex2 的实现方式完全不同:ex1 是进行当前读,通过锁机制来解决事务并发问题(新更新)

                                                    ex1=2 是快照读,是通过MVCC方式解决幻读问题的(先查询),读取的事undoLog中的数据

mvcc 是什么?

事务、锁、MVCC

mvcc 插入逻辑

事务、锁、MVCC

mvcc 删除逻辑

事务、锁、MVCC

mvcc 修改逻辑

事务、锁、MVCC

mvcc 查询逻辑

事务、锁、MVCC

mvcc 版本控制案例

事务、锁、MVCC

事务、锁、MVCC

事务、锁、MVCC

tx1 查询到了 tx2 未提交的数据,可能出现脏读 或者幻读。

Undo Log

事务、锁、MVCC

事务、锁、MVCC

当前读、快照读

事务、锁、MVCC

Redo log

事务、锁、MVCC

事务、锁、MVCC

     Redo就是重做,以恢复操作为目的,重现操作.将最新的数据备份到一个地方叫做redo-log,不是每一次commit操作都会刷到磁盘里,操作都会进行redo log 的记录,将最新的数据记录到redo-log中,当进行commit的时候,只要这些操作记录在redo log 中就代表执行成功了,但是数据并不一定马上刷到了磁盘里面。重启mysql 它会基于Redo Log进行数据的重做,把你提交的数据全部恢复到IDB 的数据库中去。Redo Log 是为了实现事务的持久性而出现的产物。Redo 也是IO 也耗时 但是redo 是一个顺序的IO ,redo 刷数据一定是随机IO ,Redo 将耗时的操作放在后台慢慢的去做,只要记录到了redo log 里面就数据库就保证数据是持久化的。脏页 什么时候去刷,什么时候去持久化。都无关紧要,耗时的逻辑放到后台跑。

事务、锁、MVCC

配置优化

事务、锁、MVCC

事务、锁、MVCC

事务、锁、MVCC

mysql 内存参数配置

事务、锁、MVCC

事务、锁、MVCC

mysql 其他参数配置

事务、锁、MVCC

数据库表设计

事务、锁、MVCC

事务、锁、MVCC

该条sql 语句的优化应该考虑在表中加一列,该列为price_full*100 - price * 100 的值,并在该列创建索引,来增加查询效率

相关文章: