阅读mysql文档
This commit is contained in:
@@ -240,7 +240,7 @@ innodb中存在如下集中类型的fuzzy checkpoint:
|
|||||||
checkpoint_age = redo_lsn - checkpoint_lsn
|
checkpoint_age = redo_lsn - checkpoint_lsn
|
||||||
async_water_mark = 0.75 * total_redo_log_file_size
|
async_water_mark = 0.75 * total_redo_log_file_size
|
||||||
sync_water_mark = 0.9 * total_redo_log_file_size
|
sync_water_mark = 0.9 * total_redo_log_file_size
|
||||||
````
|
```
|
||||||
|
|
||||||
假设定义了2个redo log文件,并且每个文件大小为1G,那么`total_redo_log_file_size`的大小为2G.
|
假设定义了2个redo log文件,并且每个文件大小为1G,那么`total_redo_log_file_size`的大小为2G.
|
||||||
|
|
||||||
@@ -295,4 +295,35 @@ innodb采用了自适应的缓冲区刷新算法,根据redo log的生成速率
|
|||||||
### innodb_adaptive_flushing
|
### innodb_adaptive_flushing
|
||||||
通过`innodb_adaptive_flushing`变量,可以控制自使用刷新是否被启用,默认情况下其被启用。
|
通过`innodb_adaptive_flushing`变量,可以控制自使用刷新是否被启用,默认情况下其被启用。
|
||||||
|
|
||||||
|
## Log Buffer
|
||||||
|
log buffer为内存中的区域,用于保存将要写入到磁盘log文件中的数据。log buffer的大小通过`innodb_log_buffer_size`来进行配置,默认其值为`64MB`。
|
||||||
|
|
||||||
|
log buffer中的内容将会被定期刷新到磁盘中,`当log buffer足够大时,事务在提交之前无需将redo log内容刷到磁盘中`。
|
||||||
|
|
||||||
|
### innodb_flush_log_at_trx_commit
|
||||||
|
`innodb_flush_log_at_trx_commit`用于控制如何将log buffer中的内容刷新到磁盘中。
|
||||||
|
|
||||||
|
默认情况下,该变量的值为`1`,代表在事务提交时会将log buffer中的redo log内容刷新到磁盘为文件中。
|
||||||
|
|
||||||
|
### innodb_flush_log_at_timeout
|
||||||
|
`innodb_flush_log_at_timeout`控制刷新频率。
|
||||||
|
|
||||||
|
## Master Thread
|
||||||
|
master thread中的操作主要分为两部分:
|
||||||
|
- 每秒钟执行一次的操作
|
||||||
|
- 每10s执行一次的操作
|
||||||
|
|
||||||
|
### 每秒钟执行一次的操作
|
||||||
|
master thread中每秒一次的操作包括如下内容:
|
||||||
|
- 将log buffer中的内容刷新到磁盘,即使对应事务尚未提交(总是)
|
||||||
|
- 合并插入缓冲(可能)
|
||||||
|
|
||||||
|
> 对于redo log,即使事务当前尚未提交,innodb仍然会每秒将log buffer中的内容刷新到缓冲区中
|
||||||
|
|
||||||
|
> 合并插入缓冲并不是每秒都会发生,innodb会根据前1s内发生的IO次数是否小于5来判断是否合并插入缓冲。如果小于5次,那么当前IO负载较小,可以执行合并缓冲操作。
|
||||||
|
|
||||||
|
### 每10秒执行的操作
|
||||||
|
- 合并至多5个插入缓冲(总是)
|
||||||
|
- 将日志缓冲刷新到磁盘(总是)
|
||||||
|
- 删除无用的undo log页(总是)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user