博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql原理~undo
阅读量:6326 次
发布时间:2019-06-22

本文共 1496 字,大约阅读时间需要 4 分钟。

mysql undo详谈

1 简介:undo是MVCC机制的基础部分之一
2 作用:为了实现可重复性读,存储历史数据
3 存储:5.6以前undo都存储在内存和ibdata1中,5.6以后undo可以独立成单独的文件,更可以进行truncate表空间,减少磁盘容量
5 回滚段三阶段

      0 回滚段分类 

        update_undo: 只用于事务内的update语句  这里会加入到其对应rollback segment的history list数据页列表上,history list长度加1 

        insert_undo:只用于事务内的insert语句 新插入的记录产生的Undo不会被任何查询语句所引用,因此可以直接释放undo,这里的undo log不会累加到history list上

     1 事务开始后,针对读写事务,会预先在内存中分配一个回滚段

     2 事务进行中,将历史数据写入undo page中
            1 事务commit
            2 事务rollback
             1:对于标记删除的记录清理标记删除标记;
             2:对于in-place更新,将数据回滚到最老版本;
             3:对于插入操作,直接删除聚集索引和二级索引记录(row_undo_ins)。
6 purge清理undo段
         1 清理事务提交后不需要的undo信息 从回滚段的HISTORY 文件链表上开始遍历释放Undo log segment,由于history 链表是按照trx no有序的,因此遍历truncate直到完全清除,或者遇到一个还未purge的undo log(trx no比当前purge到的位置更大)时才停止。
         2 清理已经被打上delete标记的数据实现物理删除
        相关参数变量 innodb_purge_threads=1(默认值)
7 相关 innodb status信息
   Purge done for trx's n:o < 219761368 undo n:o < 0 state: running but idle
   History list length 3228
   purge done 代表已经完成的事务量
  n:0< 代表正在执行的purge
  state:代表线程是否繁忙
  history-list-length  代表存在的undo个数 16KX3228 代表使用的undo大小 一页是16K

  这里要注意 一般情况下history-list不可能为零,因为 update_undo有一部分会进行cache重用,而这部分也算在没有清理的列表之中

8 关于ibdata1暴涨的原因
   1 共享表空间=>改用独立表空间
   2 大量undo暴涨了ibdata的空间
     1 存在未完成的事务,可以通过hsitory list观察计算
     2 执行过大事务(一般都是这种原因造成的)
9 补充
当我们delete数据行时,是对数据页中要删除的数据行做标记“deleted”,事务提交(速度快);

10 undo的构成和布局

     1 128个回滚段构成,32个回滚段用于系统的临时表空间,96个回滚段用于事务

     2  每个回滚段维护了一个段头页,在该page中又划分了1024个slot,每个slot又对应到一个undo log对象,因此理论上InnoDB最多支持 96 * 1024个普通事务。

     3  独立表空间的space id都是从1 开始,0被预留在ibdata中.space id必须是连续分配的,不能断档

     4  8.0之前的版本默认只能创建128个回滚段

转载于:https://www.cnblogs.com/danhuangpai/p/8318562.html

你可能感兴趣的文章
Angular开发环境搭建
查看>>
数值分析基础工具使用Matlab绘制双曲线
查看>>
Steam平台新增对雷蛇OSVR的兼容支持
查看>>
Docker搭建mysql容器
查看>>
快速排序
查看>>
三对角线性方程组(tridiagonal systems of equations)的求解
查看>>
算法学习
查看>>
补习系列(2)-springboot mime 类型处理
查看>>
Go 标准库 —— sync.Mutex 互斥锁
查看>>
流行 Ruby 库曝出恶意后门代码,作者未知
查看>>
贪腐?ofo被爆制度缺陷,公司从上到下都有人在搞腐败
查看>>
大数据实训室助力国家高校人才梯队建设
查看>>
Gitea 1.8.0 发布,组织可设置为公开、内部与私有状态
查看>>
MySQL中变量的定义和变量的赋值使用(转)
查看>>
Nginx多站点虚拟主机实现单独启动停止php-fpm、单独控制权限设置
查看>>
陕西将建“五大中心” 推进“一带一路”建设
查看>>
浅谈Hex编码算法
查看>>
COMUUU让音乐回归:人人都可玩转音乐,更在音乐中找寻知音
查看>>
未来智能+峰会(eSmart)深度分享抢先看
查看>>
浅谈TabLayout(ViewPager+Tab联动)
查看>>