lock0lock.c里面函数总结

google了大部分资料,结合自己的理解,总结下lock0lock.c文件里函数

死锁相关函数

lock_deadlock_recursive():死锁判断 死锁日志产生

lock_deadlock_trx_print():死锁中事务信息处理打印

lock_deadlock_lock_print():每个事务持有、等待的锁信息

lock_rec_print():记录被锁的信息


lock_sys_create(): db启动时创建锁系统


一致性读检查记录

lock_clust_rec_cons_read_sees():  在一致性读情况下,查找某记录是否能被看到。能被查找到返回true;如果更早期版本被检索,返回false 。 主要参数 


lock_sec_rec_cons_read_sees():在一致性读情况下,非聚簇索引记录是否能被查到


锁相关的几个重要函数:

 lock_table (): 负责加表锁

lock_rec_lock():锁记录的重要函数

row0mysql.cc::row_lock_table_autoinc_for_mysql(): 负责管理表auto increment自增锁的重要函数。自增锁 是表基本锁。

(ps: auto_increment 自增锁 因为是表锁,锁粒度高,在高并发情况下,会大大影响insert性能)



死锁回滚的事务:姜承尧《mysql核心内幕 innodb引擎》中说redo产生量少的事务被选中回滚;有的说根据事务的权重,权重小的事务被选中回滚,这个需要再仔细看看源码

row0sel.c::row_search_for_mysql():重要函数,预防死锁处理逻辑,比较复杂。


后续继续补充


发布了193 篇原创文章 · 获赞 30 · 访问量 49万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章