binlog_cache_size | binlog_stmt_cache_size

Mysql二进制日志缓存参数:

binlog_cache_size     //事务缓存大小

binlog_cahce_use      //事务缓存使用次数

binblog_cache_disk_use  //事务缓存磁盘使用次数(内存缓存设置过小不够用时)

binlog_stmt_cache_size     //非事务语句缓存大小

binlog_stmt_cache_use    //非事务语句缓存使用次数

binlog_stmt_cache_disk_use  //非事务语句磁盘缓存使用次数

我们知道InnoDB存储引擎是支持事务的。实现事务需要依赖日志技术,为了性能,日志编码采用二进制格式。

那么,我们何时记录日志呢?有日志的时候就直接写入磁盘?但因为磁盘的效率是很低的,如果你用过Nginx,一般Nginx输出access log都是要缓冲输出的。因此,记录二进制日志的时候,我们也需要考虑使用内存缓存。但由于缓存不是直接持久化,所以面临着系统宕机时不能及时刷入磁盘的安全问题。因此,Cache需要权衡,既减少磁盘I/O,满足性能的要求;又尽可能保证内存缓存中没有残留,及时的持久化,满足安全要求。

参数 binlog_cache_size 就是用来控制它的,一个事务在没有提交(uncommitted)的时候,产生的日志,记录到Cache中;等到事务提交(committed)需要提交的时候,则把日志持久化到磁盘。需要注意的是:binlog_cache不是全局的,而是以SESSION为单位独享分配的,也就是说当一个线程开始一个事务的时候,Mysql就会为这个SESSION分配一个binlog_cache。系统默认的 binlog_cache_size 只有32k。当我们提交一个长事务的时候,比如批量导入数据,而cache里面放不下的时候,mysql就会把已经提交的事务记录到一个临时文件中,等提交时再刷入日志,但临时文件的性能明显要比内存低。固其大小需要权衡,查看当前cache的大小使用:

mysql> show session variables like ‘binlog_cache%‘;
  +-------------------+----------+
  | Variable_name     | Value    |
  +-------------------+----------+
  | binlog_cache_size | 67108864 |
  +-------------------+----------+
  1 row in set (0.00 sec)

查看全局cache大小:
  mysql> show global variables like ‘binlog_cache%‘;
  +-------------------+----------+
  | Variable_name   | Value   |
  +-------------------+----------+
  | binlog_cache_size | 67108864 |
  +-------------------+----------+
  1 row in set (0.00 sec)

查看配置文件:

grep ‘binlog_cache‘ /etc/my.cnf

binlog_cache_size = 64M  #系统默认配置大小
  max_binlog_cache_size = 128M
  max_binlog_size = 200

查看该值是否满足需要:

show status like "binlog_%";

+-------------------------+-------------+
  | Variable_name      | Value    |
  +-------------------------+-------------+
  | Binlog_cache_disk_use  | 0      |
  | Binlog_cache_use    | 120402264  |
  +-------------------------+-------------+
  2 rows in set (0.00 sec)

binlog_cache_disk_use表示缓存超出时,使用磁盘临时文件的次数,为0表示没使用过,所以当前cache size够用。如果没有长事务long_trascation的话,则表示该值偏大。

binlog_stmt_cache_size与binlog_cache_size类似,与之相对的是binlog_stmt_cache_disk_use。

时间: 2024-12-28 08:04:45

binlog_cache_size | binlog_stmt_cache_size的相关文章

Chapter 5 MySQL Server Administration_1

Chapter 5 MySQL Server Administration Table of Contents 5.1 The MySQL Server 5.1.1 Configuring the Server 5.1.2 Server Configuration Defaults 5.1.3 Server Option and Variable Reference 5.1.4 Server Command Options 5.1.5 Server System Variables 5.1.6

何时、怎样开启 MySql 日志?

假如你是一名 web 开发者.假设你想调试你的应用或提升其性能的话,那你须要去參考各种日志文件.日志是開始故障排除最好的选择.就著名的 MySql 数据库server而言,你须要參考下面日志文件: 错误日志:它包括了server执行时(当然也包括服务启动和停止时)所发生的错误信息 普通查询日志:这是一个记录 mysqld 在做什么(连接.断开,查询)的通用日志 慢查询日志:正如其名,它记录了 "慢" 的查询 SQL 语句 本文未涉及到二进制日志.二进制日志要求非常高的server硬件配

关于binary log那些事

阅读目录(Content) 1 what's binary log 2 Binary Logging Options and Variables 2.1 基础参数 2.2 重要参数(sync_binlog=0丢失数据的描述有疑问,目前查阅相关资料跟咨询业界人士中....) 3 Binary Logging Formats 3.1 binlog_format=statement 3.2 binlog_format=row 3.2.1 binlog_row_image默认full,binlog_ro

关于binary log一点总结[转]

阅读目录(Content) 1 what's binary log 2 Binary Logging Options and Variables 2.1 基础参数 3 Binary Logging Formats 3.1 binlog_format=statement 3.2 binlog_format=row 3.2.1 binlog_row_image默认full,binlog_rows_query_log_events默认false 3.2.2 binlog_rows_query_log_

Mysql 日志管理详解

日志对于服务器维护来说是非常重要的,它记录了服务器运行的信息,许多操作都会写入到日志文件,通过日志文件可以了解服务器的运行状态.服务器性能等:对维护人员进行排错,故障处理,优化等提供详细的依据.MySQL中有六种不同类型的日志 一.日志种类 1.错误日志:记录mysql启动,运行或停止时出现的问题信息,一般也会记录警告信息 2.一般查询日志:记录与建立的客户端连接和执行的语句 3.慢查询日志:记录所有执行时间超高long_query_time 的所有查询或不使用索引的查询,可以帮助我们定位服务器

MySQL 日志

MySQL 日志 ================================================================================ 概述: ================================================================================ MySQL的日志分类: ★查询日志:general_log ★慢查询日志:log_slow_queries ★错误日志:log_error, log_

MySQL 基础(二)

MySQL 基础(二) ============================================================================== 概述: ============================================================================== MySQL   1.数据结构: ★分类: 结构化数据:  关系型数据库 半结构化数据:YAML.XML.JSON 非结构化数据:日志文件,NoSQL  

mysql中的日志(一)

如果你是一个Web开发人员,你需要参考各种日志文件,以调试应用程序或改善其性能.日志是故障排除的最佳手段.对于著名的MySQLdatabase服务器(或MariaDB服务器),你需要参考以下日志文件: The Error Log. 包含服务器运行时发生的错误信息(也服务器启动和停止) The General Query Log. 这是mysqld运行的常规记录(连接,断开连接,查询) The Slow Query Log. slow SQL statements 这篇文章并不是指二进制日志.它需

MySQl Study学习之--MySQl二进制日志管理

MySQl Study学习之--MySQl二进制日志管理 MySQL二进制日志(Binary Log):   a.它包含的内容及作用如下:    包含了所有更新了数据或者已经潜在更新了数据(比如没有匹配任何行的一个DELETE)    包含关于每个更新数据库(DML)的语句的执行时间信息    不包含没有修改任何数据的语句,如果需要启用该选项,需要开启通用日志功能    主要目的是尽可能的将数据库恢复到数据库故障点,因为二进制日志包含备份后进行的所有更新    用于在主复制服务器上记录所有将发送