写在前面
InnoDB是MySQL的一个存储引擎,支持事务,支持非堵塞的一致性读,物理存储结构是Page,每个事务都有回滚日志,重做日志,事务还会有死锁检测,各种各样不同的锁等等。
翻看InnoDB的源码,发现数下来开启一个事务的时候,InnoDB需要处理63个变量,变量类型纷繁复杂,结构体,自定义的数据类型等等。
这次整理,我翻看了不少同行们写的博客,包括InnoDB官方博客,有一个心得就是不同人的翻译不一样,尽管是官方写的博客,也会因为一些篇幅问题,减掉了一些细节的介绍。这次的整理,我特意保留了原来的英文备注,然后加上自己的理解进去。
MySQL的源码文件很多,InnoDB也不少,不过我觉得事务的结构体代码还是要理解透,透了才能理解透事务的实现细节,更加深入认识数据库系统为了保证数据的一致性,做了多少事情....
文件地址
storage/innobase/include/trx0trx.h
变量1 magic_n
变量类型 ulint #define ulint unsigned long
变量2 mutex
变量类型 ib_mutex_t
mutex的代码备注
Mutex protecting the fields state and lock (except some fields of lock, which are protected by lock_sys-
Tag标签: