随笔 MYSQL_BIN_LOG COND_done 是啥
发布时间:2022-06-30 18:38:17 所属栏目:编程 来源:互联网
导读:随笔 MYSQL_BIN_LOG COND_done 是啥: 一、问题 二、找到影响位置 整个寻找过程应该找到key_BINLOG_COND_done这个取值,然后去看他是在那里被定义到相应的mutex/cond上,然后查找mutex/cond的作用即可。 定义: static PSI_cond_info all_server_conds[]= {
随笔 MYSQL_BIN_LOG COND_done 是啥: 一、问题 二、找到影响位置 整个寻找过程应该找到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 (编辑:广西网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐