mysql的核心数据结构是啥_MySQL事务之数据结构

本文探讨了MySQL中事务的核心数据结构,包括THD_TRANS、Ha_data、Ha_trx_info、trx_sys_struct和trx_struct。文章详细阐述了事务开始时的流程,如首次连接时THD对象的创建、 trx结构的分配以及引擎的注册。还提到了autocommit对事务注册的影响,并概述了事务提交过程。
摘要由CSDN通过智能技术生成

事务是关系型数据库的核心,贯穿整个源代码,先来瞅瞅相关的数据结构,揭开面纱:

server层和innodb引擎层分别对应了不同的数据结构,但相互关联:

server层需要引擎注册事务,以便server层能够引用。

innodb层需要维持事务的状态,以及事务的状态转换的具体实现。

1. 相关数据结构

下面用一个简略图描述server和innodb的事务交互:

8c6f6eb4d42fcc69440d1ae338ce4c42.png

简单描述一下:

server层通过stmt和all链表关联了所有参与事务的引擎。 每一个connection,在innodb引擎分配一个trx结构,维持到会话结束。

无论一个事务有几条语句,有多少参与的table, 一个引擎只注册一次,因为一个session当前只有一个活动事务。server通过注册的引擎,通知引擎完成事务相关的操作。

相关的数据结构:

THD_TRANS

Ha_data

Ha_trx_info

trx_sys_struct

trx_struct

具体可以参考源码。

2.  事务如何开始

测试: select * from t

t表的引擎是innodb

1. 首次连接

第一次连接,创建THD对象时ÿ

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值