mysql原理~binlog原理之binlog-cache

一 简介:来聊聊binlog cache

二 定义

    为每个session 分配的内存,在事务过程中用来存储二进制日志的缓存。

三  参数

 1 binlog_cache_size 默认 32K 用于指定存储整个事物生成的binlog event的内存大小,对于大事物来讲很可能超过这个参数的设置,则需要开启binlog 临时文件用于存储。

 2 max_binlog_cache_size 用于指定当某个事物的binlog event超过了binlog_cache_size大小的设置开启binlog 临时文件的可用大小,如果事物的binlog event生成量超过了max_binlog_cache_size+binlog_cache_size设置的大小则会抛错:

四 临时文件

  1 临时文件存放在tmpdir的定义的目录下,文件名为”ML”开头。但是这个文件不能用ls看到,需要lsof命令

  2  当我们执行多语句事务的时候 所有session的使用的内存超过max_binlog_cache_size的值时

      就会报错:“Multi-statement transaction required more than 'max_binlog_cache_size' bytes ofstorage

五 状态   

  查看 binlog_cache的使用情况 单位是次

  Binlog_cache_disk_use 缓存

  Binlog_cache_use     临时文件

 1 当对应的Binlog_cache_disk_use 值比较大的时候 我们可以考虑适当的调高 binlog_cache_size 对应的值,减少IO层的操作交互

六 整体流程

  1 事务开启

  2 事务执行DML语句 分配独立binlog_cache,并且写入

  3 如果binlog cache的空间已经满了,则将binlog cache的数据写入到binlog临时文件,同时清空binlog cache。如果binlog临时文件的大小大于了max_binlog_cache_size的设置则抛错ERROR 1197 (HY000)。

  4 事物提交,整个binlog cache和binlog临时文件数据全部写入到binlog file中进行固化,释放binlog cache和binlog临时文件

 5 断开连接 释放回收

参考原文链接 :

https://www.jianshu.com/p/fb4ffe7fd7d2  八怪大神

猜你喜欢

转载自www.cnblogs.com/danhuangpai/p/11486048.html
今日推荐