6.11 总结



数据库,不止是静态的供我们查询;还会动起来,进行更新操作,跑一些事务。

一、总结

1.1 动起来的数据库,有哪些问题?

  • 日志:占用内存、占用硬盘;
  • 死锁(行级锁)、锁等待(元数据锁)
  • 事务的隔离性级别,产生脏读、幻读、不可重复读;

1.2 MySQL日志体系

数据更新的流程图:

其中有两个地方是可以设置的,进行刷盘。确保日志的持久化:

  • redo log写入内存时,提交事务之前,强制刷盘;
  • bin log在写入内存时,提交事务之前,也强制刷盘;

1.3 MySQL的锁

1.4 事务、MVCC

有了日志、锁的基础,就可以研究事务、MVCC

  • 因为undo log能够实现行记录的历史版本,那么就能实现快照读;
  • 快照读,不加行锁,加的是自动的元数据锁MDL
  • 当前读,是要读取该行记录的最新版本。加行锁,该行记录同一时间只能由一个人来修改
  • 行锁+间隙锁,合体为Next-Key Lock

1.5 MySQL的刷脏

MySQL数据库跑着,卡个几秒没有响应,不是在GC,而是在刷脏:

1.6 长事务的危害

声明:Jerry's Blog|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - 6.11 总结


Follow excellence, and success will chase you.