随笔分类 - DB基础
摘要:MySQL事务执行流程 1.事务开始 2.查询数据库中待更新数据到内存,并加锁 3.将缓存的数据放到InnoDB缓冲区(通过innodb_log_buffer设置的缓冲区) 4.记录Undo Log日志对应的Redo Log日志到内存缓冲区 5.记录Undo Log日志到内存缓冲区 6.记录更新数据
阅读全文
摘要:BinLog 记录模式与文件结构 BinLog基本概念 Binlog是记录所有MySQL表结构变更以及表数据发生变更的二进制日志。binlog中不会记录select、show等的查询操作,binlog是以事件形式记录相关的变更操作,并且还会包含语句执行所消耗的时间,它从整体上有两个最重要的场景:主从
阅读全文
摘要:MySQL中事务的原子性和持久性是Redo Log实现的,它主要保证事务提交后,要么事务执行操作全部成功,要么全部失败。 Redo Log基本概念:重做日志,在InnoDB存储引擎层产生的,保证事务的原子性和持久性(主要记录的是物理日志,磁盘上的一些修改操作,用于恢复物理数据页-- 只能恢复到最后一
阅读全文
摘要:mvcc的存储方式: 1.Append-Only:指的是将数据历史版本直接存储到数据表中,如pgSQL 2.Delta:将数据的增量历史版本存储在独立表空间,如mySQL、oracle 3.Time-Travle:就是将数据的全量版本存储下,如HANA版本 mvcc工作原理: 1.读已提交: 读
阅读全文
摘要:锁的分类: 性能:悲观锁、乐观锁 操作类型:读锁、写锁 数据粒度:表锁、行锁、页面锁 更细粒度:间隙锁、临键锁 读锁又叫共享锁 or S锁(Shared锁),顾名思义同一份数据可以加读锁互不影响 写锁又叫排它锁 or X锁(Exclusive锁),写锁未释放前,会阻塞其他的写锁和读锁 表锁: 表锁也
阅读全文
摘要:事务带来的问题: 脏写:指的是同一行数据,一个事务对该行的更新操作覆盖了其他事务对改行数据的更新操作。(本质是写冲突) 脏读:一个事务读取了另外一个事务未提交的数据,就会导致读取的数据是脏数据。 不可重复读:同一个事务,相同的查询语句,不同时刻读取的结果不一致。 幻读:一个事务两次读取一个范围内的数
阅读全文