暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

mysql 事务transaction mvcc之一

lovedb 2019-12-01
242

前言

       mvcc是数据库事务重要组成部分,mvcc及lock和事务隔离级别,当然还有其它的一些底层设计,完成mysql高妙神奇的事务并发控制目标。


联系方式

  • 微信公众号

  • 微信


培训课件

(收费20元已共享到百度云盘便于同学们获取)


目录

  • mysql mvcc官方手册

  • 数据库实现并发事务控制2种类型

  • mysql mvcc基本概念

  • mysql mvcc内部实现简述

  • undo segment之tablespace的undo log record2种类型

  • undo log record大小

  • 定期执行事务提交减少undo segment之tablespace空间大小

  • delete操作与purge操作

  • 频繁执行小批量insert及delete操作与purge操作性能延后


mysql mvcc官方手册

    14 The InnoDB Storage Engine
    14.3 InnoDB Multi-Versioning



    数据库实现并发事务控制2种类型

         由于lbcc无法实现高效的读写操作互不阻塞,故mysql采用mvcc实现并发事务控制,读写操作互不阻塞,并发性能很好。



    mysql mvcc基本概念

           mysql mvcc就是把insert及update操作之前的表记录旧版本保存下来,在数据库会保存多个版本的表记录;基于此实现数据库事务的一些功能。
      一则用于事务rollback,二则构建consistent read.


      mysql mvcc内部实现简述



      undo segment之tablespace的undo log record2种类型

            mysql有个表空间会把insert及update操作的旧版本保存起来,这个表空间在mysql 8.0未独立出来,与system字典表空间合用。大致隶属图见下:




      undo log record大小

        undo segment之undo log record物理大小要小于insert或update表记录的大小



        定期执行事务提交减少undo segment之tablespace空间大小

          否则,innodb不会丢弃事务所属的undo log record,如此会导致undo segment之tablespace会增长很大,导致空间用尽不足


          delete操作与purge操作

          注:delete操作后,不会马上物理删除表记录


          频繁执行小批量insert及delete操作与purge操作性能延后


          相关阅读



          文章转载自lovedb,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

          评论