美文网首页知数堂MySQL学习
随笔:MYSQL_BIN_LOG::COND_done 是什么

随笔:MYSQL_BIN_LOG::COND_done 是什么

作者: 重庆八怪 | 来源:发表于2019-08-15 19:27 被阅读0次

欢迎关注我的《深入理解MySQL主从原理 32讲 》,如下:

image.png

一、问题

image.png

是什么

二、找到影响位置

整个寻找过程应该找到key_BINLOG_COND_done这个取值,然后去看他是在那里被定义到相应的mutex/cond上,然后查找mutex/cond的作用即可。

  • 定义:
    static PSI_cond_info all_server_conds[]=
    {
    { &key_PAGE_cond, "PAGE::cond", 0},
    { &key_COND_active, "TC_LOG_MMAP::COND_active", 0},
    { &key_COND_pool, "TC_LOG_MMAP::COND_pool", 0},
    { &key_BINLOG_COND_done, "MYSQL_BIN_LOG::COND_done", 0},
    { &key_BINLOG_update_cond, "MYSQL_BIN_LOG::update_cond", 0},

  • 注册:
    register_cond_class

  • 初始化:

MYSQL_BIN_LOG::set_psi_keys

  • 建立条件变量:

Stage_manager::init

  • 使用:
  */
  if (!leader) //如果不是 leader
  {
    mysql_mutex_lock(&m_lock_done);//加锁
    while (thd->get_transaction()->m_flags.pending) //唤醒时 设置每个事物的状态 为ture
      mysql_cond_wait(&m_cond_done, &m_lock_done);//释放锁 等待条件满足 pending=false
    mysql_mutex_unlock(&m_lock_done);//解锁 
  }
  • 栈帧
Breakpoint 2, MYSQL_BIN_LOG::set_psi_keys (this=0x2e83640, key_LOCK_index=7, key_LOCK_commit=3, key_LOCK_commit_queue=4, key_LOCK_done=5, key_LOCK_flush_queue=6, 
    key_LOCK_log=8, key_LOCK_binlog_end_pos=9, key_LOCK_sync=10, key_LOCK_sync_queue=11, key_LOCK_xids=12, key_COND_done=4, key_update_cond=5, key_prep_xids_cond=6, 
    key_file_log=2, key_file_log_index=4, key_file_log_cache=3, key_file_log_index_cache=5) at /mysqldata/percona-server-locks-detail-5.7.22/sql/binlog.h:539
539         m_key_COND_done= key_COND_done;
(gdb) bt
#0  MYSQL_BIN_LOG::set_psi_keys (this=0x2e83640, key_LOCK_index=7, key_LOCK_commit=3, key_LOCK_commit_queue=4, key_LOCK_done=5, key_LOCK_flush_queue=6, 
    key_LOCK_log=8, key_LOCK_binlog_end_pos=9, key_LOCK_sync=10, key_LOCK_sync_queue=11, key_LOCK_xids=12, key_COND_done=4, key_update_cond=5, key_prep_xids_cond=6, 
    key_file_log=2, key_file_log_index=4, key_file_log_cache=3, key_file_log_index_cache=5) at /mysqldata/percona-server-locks-detail-5.7.22/sql/binlog.h:539
#1  0x0000000000edcee4 in init_common_variables () at /mysqldata/percona-server-locks-detail-5.7.22/sql/mysqld.cc:2974
#2  0x0000000000ee117f in mysqld_main (argc=82, argv=0x2f26738) at /mysqldata/percona-server-locks-detail-5.7.22/sql/mysqld.cc:4938
#3  0x0000000000ed8504 in main (argc=4, argv=0x7fffffffe3f8) at /mysqldata/percona-server-locks-detail-5.7.22/sql/main.cc:25


建立条件变量
                      
Breakpoint 3, Stage_manager::init (this=0x2e84858, key_LOCK_flush_queue=6, key_LOCK_sync_queue=11, key_LOCK_commit_queue=4, key_LOCK_done=5, key_COND_done=4)
    at /mysqldata/percona-server-locks-detail-5.7.22/sql/binlog.h:156
156         mysql_mutex_init(key_LOCK_done, &m_lock_done, MY_MUTEX_INIT_FAST);
(gdb) bt
#0  Stage_manager::init (this=0x2e84858, key_LOCK_flush_queue=6, key_LOCK_sync_queue=11, key_LOCK_commit_queue=4, key_LOCK_done=5, key_COND_done=4)
    at /mysqldata/percona-server-locks-detail-5.7.22/sql/binlog.h:156
#1  0x000000000187cbea in MYSQL_BIN_LOG::init_pthread_objects (this=0x2e83640) at /mysqldata/percona-server-locks-detail-5.7.22/sql/binlog.cc:3601
#2  0x0000000000edcef3 in init_common_variables () at /mysqldata/percona-server-locks-detail-5.7.22/sql/mysqld.cc:2983
#3  0x0000000000ee117f in mysqld_main (argc=82, argv=0x2f26738) at /mysqldata/percona-server-locks-detail-5.7.22/sql/mysqld.cc:4938
#4  0x0000000000ed8504 in main (argc=4, argv=0x7fffffffe3f8) at /mysqldata/percona-server-locks-detail-5.7.22/sql/main.cc:25          

相关文章

  • 随笔:MYSQL_BIN_LOG::COND_done 是什么

    欢迎关注我的《深入理解MySQL主从原理 32讲 》,如下: 一、问题 是什么 二、找到影响位置 整个寻找过程应该...

  • 文章例话——《痈》

    该章节选了郭沫若的《痈》,用于讲解什么是随笔,随笔的精华是什么,做随笔的意义以及如何做随笔。部分摘录如下: 1、随...

  • 赖床。

    随笔记录,赖床的根本原因是什么

  • 明天

    明天 我也不太确定随笔是什么,也不知道我到底该写写啊,接受什么,脑洞也不大,随笔不是那么明了,算了。。。。。

  • 2018/8.6 写作训练营第一课 作业

    1、我的写作垂直领域是什么,写作类型是什么? 偏向情感吧。 类似于一些小随笔及个人感悟...

  • 我们常说的随笔到底是什么?

    一直不知道随笔是什么。 虽然高中就开始学习各种名人的随笔,但一直被这两个字困惑。学习的那么多随笔,实在不像是同一种...

  • 点评不只是为了链接——007践行之旅(13)

    (太累了,回头更新) 周末随笔周末随笔周末随笔周末随笔周末随笔周末随笔周末随笔周末随笔周末随笔周末随笔周末随笔周末...

  • 还记得随笔的模样吗?

    记得年少时,语文老师布置的回家作业即是【每日随笔】,那时候写的随笔是什么模样的呢? 是外出旅游,被陌生的大叔撞了一...

  • 紫青牛随笔:主动出击(2020年10月11日)

    紫青牛随笔:主动出击(2020年10月11日) 紫青牛 紫青牛随笔 今天 “成功的反义词不是失败,而是什么都不做。...

  • 沙和尚是什么动物?(随笔)

    沙和尚是什么动物?(随笔) 作者:蛰虫 西游记里,师徒加上白龙马,总...

网友评论

    本文标题:随笔:MYSQL_BIN_LOG::COND_done 是什么

    本文链接:https://www.haomeiwen.com/subject/kvstsctx.html