binlog_cache_size 默认值是32k 一般设置成1,2M就够了 一般sql也没这么大
在事务过程中容纳二进制日志SQL 语句的缓存大小
二进制日志缓存是服务器支持事物存储引擎并且服务器启用了二进制日志(–log-bin选项)的前提下为没个客户端分配的内存
如果系统中经常会出现多语句事务的话,可以尝试增加该值的大小,以获得更好的性能
事物表 在事物没有结束之前 需要把数据放在cache里面 然后整个事物完成之后
我们再把整个事物相关的sql文件写会文件 这些sql我们就把他放在binlog_cache里面
主要是给事物引擎产生的sql 作为cache 提高sql写入的效率
当然,我们可以通过MySQL的一下两个状态变量来判断当前的binlog_cache_size的状况:Binlog_cache_use和Binlog_cache_disk_use
binlog hit ratio = (Binlog_cache_use)/(Binlog_cache_use + Binlog_cache_disk_use)
当然我们执行多语句事务的时候,max_binlog_cache_size 如果不够大的话,系统可能会报出“Multi-statement transaction required more than 'max_binlog_cache_size' bytes ofstorage”的错误
比如,我们开启binlog时,执行load data infile,将一个大文件导入时可能会出现这个错误提示 需要注意一下
临时执行大文件的话我们可以这样
set sql_log_bin=0;
load data infile…
然后再slave 再次执行load data
一般大数据批量导入的时候(维护的时候,不是工作时间) 是把binlog关掉然后再master上导一下 在slave上导一下