MySQL--Checkpoint基础
=====================================================
Checkpint 分两种:
Sharp Checkpoint : 在服务器正常关闭时,将所有脏页都写入到磁盘中,默认配置参数 innodb_fast_shutdown=1
Fuzzy Checkpoint: 在服务正常运行过程中,由各种条件触发进行Fuzzy Checkpoint, 只将部分脏页刷新写入到磁盘中。
=====================================================
触发Fuzzy Checkpoint的可能情况:
1> Master Thread Checkpoint
2> FLUSH_LRU_LIST Checkpoint
3> Async/Sync Flush Checkpoint
4> Dirty Page Too Much Checkpoint
=====================================================
Master Thread Checkpoint
Master Thread 会以一定频率(每秒或每10秒)从缓冲池的脏页列表中刷新一定比例的页到磁盘中,该操作为异步模式,不会阻塞用户查询。
=====================================================
FLUSH_LRU_LIST Checkpoint
由于InnoDB存储引擎需要保证LRU列表中有一定数量的空闲页空使用,当FLUSH_LRU_LIST列表中没有足够的空闲页时,InnoDB会将LRU列表尾部的页移除,,如果要移除的数据页中有脏页,就需要进行checkpoint将数据写入到磁盘上。
在Innodb 1.1.x 版本前,检查FLUSH_LRU_LIST列表的操作在用户线程中执行,因此checkpoint操作会阻塞用户查询操作
在Innodb 1.1.x 版本后,检查FLUSH_LRU_LIST列表的操作在独立线程Page Cleaner中执行,因此checkpoint操作不会阻塞用户查询操作
在Innodb 1.2.x 版本前,FLUSH_LRU_LIST列表控制在100个空闲页可用。
在Innodb 1.2.x 版本后,用户可用通过参数innodb_lru_scan_depth来控制列表可用页的数量,该参数默认值为1024.
=====================================================
Async/Sync Flush Checkpoint
Async/Sync Flush Checkpoint为了保证重做日志的循环使用的可用性,根据最近一次checkoint和当前redo lsn计算出checkpoint_page 数,再按照checkpoint_page 数占重做日志空间的比例来选择进行Async/Sync Flush Checkpoint。
checkpoint_page =redb_lsn - checkpoint_lsn
async_water_mark =75%* total_redo_log_file_size
sync_water_mark =90%* total_redo_log_file_size
当checkpoint_page<async_water_mark时,不需要刷新任何脏页到磁盘
当async_water_mark<checkpoint_page <sync_water_mark 时,使用async flush checkpoint 将脏页数据写入到磁盘中
当checkpoint_page >sync_water_mark 时,使用 sync flush checkpoint 将脏页数据写入到磁盘中
在Innodb 1.2.X版本前,Async Flush Checkpoint操作会阻塞发现问题的用户线程查询,Sync Flush Checkpoint 会阻塞所有用户的查询线程。
在Innodb 1.2.X版本后,这两类checkpoint 操作被放入到Page Cleaner Thread中,故不会阻塞用户查询线程。
=====================================================
Dirty Page Too Much Checkpoint
为保障缓冲池有足够可用的页,当脏页数量到达缓冲池特定比例的时候,会导致Innodb存储引擎强制进行check point, 该比例由参数innodb_max_dirty_page_pct控制:
show variables like 'innodb_max_dirty_pages_pct' \G
*************************** 1. row ***************************
Variable_name: innodb_max_dirty_pages_pct
Value: 75
1 row in set (0.00 sec)
在innodb 1.0.x 版本之前,该默认值为90,在innodb 1.0.x 版本之后,默认值为75
=====================================================
Undo 日志在Checkpoint时会写入磁盘。
MySQL--Checkpoint基础的更多相关文章
- 高性能MySQL之基础架构
一.背景 为什么我们需要先学习MYSQL的基础架构先呢? 原因很简单,当我们需要了解一件事物的时候,我们只有站在宏观的层面,才能层层剥丝抽茧的去理解问题.举个例子,我们要看一个框架的源码,一开始就想进 ...
- mysql使用基础 sql语句(一)
csdn博文地址:mysql使用基础 sql语句(一) 点击进入 命令行输入mysql -u root -p,回车再输入密码,进入mysql. 终端命令以分号作为一条语句的结束,可分为多行输入,只需 ...
- mysql数据库基础的简单操作指南
最近在学习mysql,本文是做的关于mysql学习的笔记,跟大家分享一下,希望对大家学习mysql知识有所助益.mysql现在几乎已经成了网站建设的主流数据库,很多php网站系统都采用了mysql数据 ...
- Mysql索引基础
Mysql索引基础 基本概念: 索引是一种特殊的数据库结构,可以用来快速查询数据库表中的特定记录.索引是提高数据库性能的重要方式.索引创建在表上,是对数据库表中一列或多列的值进行排序的一种结构.可以提 ...
- MySQL数据库基础
MySQL数据库基础 本文的所有操作是基于CMD环境,MySQL通过在命令行中输入SQL语句对数据库进行操作.配置问题可参考<打通MySQL的操作权限>中的内容,该文算是针对前期的环境配置 ...
- Mysql数据库基础学习笔记
Mysql数据库基础学习笔记 1.mysql查看当前登录的账户名以及数据库 一.单表查询 1.创建数据库yuzly,创建表fruits 创建表 ) ) ,) NOT NULL,PRIMARY KEY( ...
- 2.Mysql SQL基础
2.Mysql SQL基础2.1 SQL简介 SQL(Structure Query Language)是结构化查询语言.2.2 SQL使用入门 2.2.1 SQL分类 SQL分为DDL.DML(DQ ...
- 【笔记】MySQL的基础学习(二)
[笔记]MySQL的基础学习(二) MySQL 老男孩 一 视图 视图其实就是给表起个别名 1.创建视图 格式:CREATE VIEW 视图名称 AS SQL语句 CREATE VIEW v1 AS ...
- 【笔记】MySQL的基础学习
[笔记]MySQL的基础学习 老男孩 MySQL 一 安装与配置 1 下载安装 官网:http://dev.mysql.com/downloads/mysql/ 下载相应版本的压缩包 解压压缩包至任 ...
- MySQL学习——基础
本文是MySQL的基础知识. Linux启动MySQL服务命令 : service mysql start Linux关闭MySQL服务命令 : service mysql stop 登录MySQL命 ...
随机推荐
- C++类型转换的注意事项
1.如果两个类型可以相互转换,就说他们是关联的. 2.隐式转换是指,由编译器自行转换,而不需要程序员介入的转换. 3.以下情况,编译器会发生隐式转换: 1)在大多数表达式中,比int类型小的整型值会被 ...
- Git超实用总结
Git 是什么? Git 是一个分布式的代码管理容器,本地和远端都保有一份相同的代码. Git 仓库主要是由是三部分组成:本地代码,缓存区,提交历史,这几乎是所有操作的本质,但是为了文章更加简单易懂, ...
- dialog销毁不干净与弹出多个dialog问题
1.关闭dialog的时候不销毁.重新打开然后影响页面的效果与样式. 原因: dialog的close()只是将html片段隐藏,并没有销毁移除. 解决方式: 打开dialog的时候在写onClose ...
- Problem D: 求(x-y+z)*2
Description 编写一个程序,求解以下三个函数: f(x,y,z)=2*(x-y+z) f(x,y) =2*(x-y) f(x) =2*(x-1) 函数调用格式见append.cc. ...
- Spring异步调用注解@Async的使用
1.pom依赖 <dependency> <groupId>org.springframework</groupId> <artifactId>spri ...
- Linux文件系统命令 touch/rm
命令:touch 功能:创建文件,后接相对路径或者绝对路径 eg: touch ./ren/jin/gui.txt 命令:rm 功能:删除文件,当删除的是目录的时候要加-R参数进行递归删除. eg: ...
- wait_activity
wait_activity(self, activity, timeout, interval=1): android特有的 返回的True 或 False :Agrs: - activity - 需 ...
- python 爬虫第三方库
这个列表包含与网页抓取和数据处理的Python库 网络 通用 urllib -网络库(stdlib). requests -网络库. grab – 网络库(基于pycurl). pycurl – 网络 ...
- jQuery中$的三种关系
要搞清楚$('div','li') 和 $('div , li') 和 $('div li') 区别 $('div','li')是$(子,父),是从父节点里找子,而不是找li外面的div $('div ...
- mysql_connect和mysql_pconnect区别
php中mysql_pconnect()的实现方式:其实mysql_pconnect()本身并没有做太多的处理,它唯一做的只是在php运行结束后不主动close掉mysql的连接.mysql_pcon ...