mysql purge进程_InnoDB Purge 的工作原理?
当执行 SQL语句删除行时,InnoDB不会立即从数据库中物理删除。 仅当InnoDB 丢弃 为删除而编写的undo log 时,才会物理删除行及其索引记录(删除对应数据文件中的记录和索引)。
这种仅发生在不再需要多版本并发控制(MVCC)或回滚之后的删除操作,称为purge。
purge 操作用于清理历史的UNDO 日志页, UNDO 日志可以使事务回滚和保证一致性读(取决于事务隔离级别)。
(History list length)UNDO日志页面的数量通常很小,但是大量更新操作或长时间运行的事务(即使纯粹读取事务)也会导致(History list length)undo 日志的增加。长时间运行的只读事务也会导致(History list length)undo 页数量的增长,原因是在REPEATABLE READ和SERIALIZATION事务隔离级别中事务要求它们返回与读取快照相同的结果。因此,InnoDB的多版本并发控制(MVCC)需要保留旧数据的副本,直到所有依赖于它的事务(transactions)完成为止。这些都是通过UNDO日志完成的。
(History list length)的查看在后面。
两个例子:
在大型数据库中,在执行DML操作时,同时使用mysqldump 加 --single-transaction
使用autocommit = 0 时,执行SELECT而忘记进行显式的COMMIT或ROLLBACK,此时事务并没有结束
purge 操作在后台进行。在MySQL 5.6和更高版本中,这是使用一个或多个专用线程完成的。 (在MySQL 5.5中,您可以选择使用InnoDB主线程还是专用线程,在早期版本中始终使用InnoDB主线程。)配置的线程数(innodb_purge_threads)是允许的最大线程数,并且清除进程将根据需要自动调整线程数。
purge 进程基本上是一个循环,一直在寻找要清除的UNDO页面。并且以innodb_purge_batch_size 定义的大小(UNDO日志页数)的来清除。
innodb_purge_threads
Property
Value
Property
Value
Command-Line Format
--innodb-purge-threads=#
System Variable
innodb_purge_threads
Scope
Global
Dynamic
No
Type
Integer
Default Value
4
Minimum Value
1
Maximum Value
32
增加purge_threads 的数量,可以提升多表DML 的效率
innodb_purge_batch_size
Property
Value
Command-Line Format
--innodb-purge-batch-size=#
System Variable
innodb_purge_batch_size
Scope
Global
Dynamic
Yes
Type
Integer
Default Value
300
Minimum Value
1
Maximum Value
5000
在多线程清除配置中,每个purge 线程处理undo 页的数量:innodb_purge_batch_size/innodb_purge_threads
innodb_purge_batch_size 限定了 每执行128次迭代后清除undo log 后,undo log page的数量。
innodb_purge_batch_size 与innodb_purge_threads 一起设置用于性能优化。 大多数情况下使用innodb_purge_batch_size默认值就可以了。
innodb_max_purge_lag
当purge 滞后时间超过innodb_max_purge_lag 阈值时,将对INSERT,UPDATE 和 DELETE 操作施加延迟,以使purge 操作有时间赶上DML 操作。
默认值为0,表示没有最大 purge 滞后也有延迟。
通过 SHOW ENGINE INNODB STATUS,可以查看 History list length 的值
------------
TRANSACTIONS
------------
Trx id counter 4874778630
Purge done for trx's n:o < 4874778624 undo n:o < 0 state: running but idle
History list length 24
mysql purge进程_InnoDB Purge 的工作原理?相关推荐
- Mysql学习之order by的工作原理
在你开发应用的时候,一定会经常碰到需要根据指定的字段排序来显示结果的需求.假设你要查询城市是"杭州"的所有人名字,并且按照姓名排序返回前 1000 个人的姓名.年龄. 查询语句为: ...
- Mysql学习-第二章(CBO工作原理)
MySQL 优化器是 CBO,即一种基于成本的优化器. 在关系型数据库中,B+ 树索引只是存储的一种数据结构,具体怎么使用,还要依赖数据库的优化器,优化器决定了具体某一索引的选择,也就是常说的执行计划 ...
- MySQL万字精华总结!kafka工作原理介绍
选择 在现在这个浮躁而又拜金的社会,我相信很多人做技术并非出于热爱,只是被互联网的高薪吸引,毕竟技术岗位非常枯燥,不仅要面对奇奇怪怪的需求,还要不停的充实自己避免被淘汰.所以想要吃好技术这碗饭并不容易 ...
- MySQL系列: undo和redo工作原理
ACID 首先来讨论事务的四大特性ACID 原子性(Atomicity):事务作为一个整体来执行,要不都执行,要不都不执行 一致性(Consistency):事务必须保证数据库从一个一致状态转移到另一 ...
- mysql中主从复制包括什么意思_Mysql主从复制作用和工作原理
一.什么是主从复制 主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库,主数据库一般是准实时的业务数据库.在最常用的mysql数据库中,支持单项.异步赋值.在赋值过程中,一个服务器充 ...
- mysql权限系统的工作原理_Mysql权限系统工作原理
MySQL权限系统保证所有的用户可以严格地做他们假定被允许做的事情.当你连接一个MySQL服务器时, 你的身份由你从那连接的主机和你指定的用户名来决定,系统根据你的身份和你想做什么来授予权限. MyS ...
- 超详细的MySQL工作原理 体系结构
超详细的MySQL工作原理 体系结构 妖精的杂七杂八 2020-08-13 13:54:12 了解MySQL(超详细的MySQL工作原理 体系结构) 1.MySQL体系结构 2.MySQL内存结构 3 ...
- php授权系统原理,Mysql权限系统工作原理-PHP教程,PHP基础
权限系统工作原理 mysql权限系统保证所有的用户可以严格地做他们假定被允许做的事情.当你连接一个mysql服务器时, 你的身份由你从那连接的主机和你指定的用户名来决定,系统根据你的身份和你想做什么来 ...
- Mysql权限系统工作原理(转)
Mysql权限系统工作原理: MySQL权限系统保证所有的用户可以严格地做他们假定被允许做的事情.当你连接一个MySQL服务器时, 你的身份由你从那连接的主机和你指定的用户名来决定,系统根据你的身份和 ...
最新文章
- Amazon、Google、 Microsoft和IBM如何将人工智能作为一项服务出售
- PS 色调——老照片效果
- 信道效率以及信道的吞吐率
- directshow 旋转_宜昌中心加工机+A:B型号,高速旋转接头加工
- linux 找不到swap分区,Linux下swap分区没有UUID解决办法
- MATLAB获取系统时间
- 【bzoj4695】最假女选手 线段树区间最值操作
- webstorm配置scss自动编译路径
- Geoserver使用CSS插件编辑Style样式
- P1563 [NOIP2016 提高组] 玩具谜题
- 计算机控制课程设计体会,计算机控制技术课程设计心得体会
- 洛谷P3403 跳楼机(最短路)
- 零基础带你玩转微信小程序--小程序的基础和安装
- NB-IoT模组选型及项目初始必看!
- 让自己的app支持小程序
- k8s编排nacos standalone模式踩坑实录
- 滑膜控制和粒子群优化算法
- matlab 运算符
- php 开源产品,PHP免费开源企业产品建站系统含手机站
- 在SAGE系列期刊上发表论文