当执行 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 的工作原理?相关推荐

  1. Mysql学习之order by的工作原理

    在你开发应用的时候,一定会经常碰到需要根据指定的字段排序来显示结果的需求.假设你要查询城市是"杭州"的所有人名字,并且按照姓名排序返回前 1000 个人的姓名.年龄. 查询语句为: ...

  2. Mysql学习-第二章(CBO工作原理)

    MySQL 优化器是 CBO,即一种基于成本的优化器. 在关系型数据库中,B+ 树索引只是存储的一种数据结构,具体怎么使用,还要依赖数据库的优化器,优化器决定了具体某一索引的选择,也就是常说的执行计划 ...

  3. MySQL万字精华总结!kafka工作原理介绍

    选择 在现在这个浮躁而又拜金的社会,我相信很多人做技术并非出于热爱,只是被互联网的高薪吸引,毕竟技术岗位非常枯燥,不仅要面对奇奇怪怪的需求,还要不停的充实自己避免被淘汰.所以想要吃好技术这碗饭并不容易 ...

  4. MySQL系列: undo和redo工作原理

    ACID 首先来讨论事务的四大特性ACID 原子性(Atomicity):事务作为一个整体来执行,要不都执行,要不都不执行 一致性(Consistency):事务必须保证数据库从一个一致状态转移到另一 ...

  5. mysql中主从复制包括什么意思_Mysql主从复制作用和工作原理

    一.什么是主从复制 主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库,主数据库一般是准实时的业务数据库.在最常用的mysql数据库中,支持单项.异步赋值.在赋值过程中,一个服务器充 ...

  6. mysql权限系统的工作原理_Mysql权限系统工作原理

    MySQL权限系统保证所有的用户可以严格地做他们假定被允许做的事情.当你连接一个MySQL服务器时, 你的身份由你从那连接的主机和你指定的用户名来决定,系统根据你的身份和你想做什么来授予权限. MyS ...

  7. 超详细的MySQL工作原理 体系结构

    超详细的MySQL工作原理 体系结构 妖精的杂七杂八 2020-08-13 13:54:12 了解MySQL(超详细的MySQL工作原理 体系结构) 1.MySQL体系结构 2.MySQL内存结构 3 ...

  8. php授权系统原理,Mysql权限系统工作原理-PHP教程,PHP基础

    权限系统工作原理 mysql权限系统保证所有的用户可以严格地做他们假定被允许做的事情.当你连接一个mysql服务器时, 你的身份由你从那连接的主机和你指定的用户名来决定,系统根据你的身份和你想做什么来 ...

  9. Mysql权限系统工作原理(转)

    Mysql权限系统工作原理: MySQL权限系统保证所有的用户可以严格地做他们假定被允许做的事情.当你连接一个MySQL服务器时, 你的身份由你从那连接的主机和你指定的用户名来决定,系统根据你的身份和 ...

最新文章

  1. Amazon、Google、 Microsoft和IBM如何将人工智能作为一项服务出售
  2. PS 色调——老照片效果
  3. 信道效率以及信道的吞吐率
  4. directshow 旋转_宜昌中心加工机+A:B型号,高速旋转接头加工
  5. linux 找不到swap分区,Linux下swap分区没有UUID解决办法
  6. MATLAB获取系统时间
  7. 【bzoj4695】最假女选手 线段树区间最值操作
  8. webstorm配置scss自动编译路径
  9. Geoserver使用CSS插件编辑Style样式
  10. P1563 [NOIP2016 提高组] 玩具谜题
  11. 计算机控制课程设计体会,计算机控制技术课程设计心得体会
  12. 洛谷P3403 跳楼机(最短路)
  13. 零基础带你玩转微信小程序--小程序的基础和安装
  14. NB-IoT模组选型及项目初始必看!
  15. 让自己的app支持小程序
  16. k8s编排nacos standalone模式踩坑实录
  17. 滑膜控制和粒子群优化算法
  18. matlab 运算符
  19. php 开源产品,PHP免费开源企业产品建站系统含手机站
  20. 在SAGE系列期刊上发表论文

热门文章

  1. mfc中ado上传image到sql数据库
  2. Java中被搁置的“goto”保留字
  3. 当你「ping 一下」的时候,你知道它背后的逻辑吗?
  4. 10 个常见的 Linux 终端仿真器
  5. Java Servlet 技术简介
  6. Eclipse中的checkstyle插件
  7. Java - 正则表达式的运用(Pattern模式和Matcher匹配)
  8. 【LaTeX】E喵的LaTeX新手入门教程(6)中文
  9. Stanford UFLDL教程 栈式自编码算法
  10. SIFT特征提取分析