这篇文章主要介绍“MySQL FLTWL的堵塞和被堵塞分析”,在日常操作中,相信很多人在MySQL FLTWL的堵塞和被堵塞分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL FLTWL的堵塞和被堵塞分析”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!总的说来flush 免费主机域名tables with read lock多用于备份的时候对全局表进行锁定来获取binlog信息。虽然持有时间很短,单容易被堵塞造成备份不能完成。那么flush tables with read lock到底做了什么事情呢如下:获取MDL GLOBAL的S锁,直到unlock tables释放。获取MDL COMMIT的S锁,直到unlock tables释放。关闭所有的表重新打开,先释放table cache(包含TABLE_SHARED),然后重新加载生成table cache。(下面的信息是在源码函数 acquire_lock和release_lock增加输出达到的)
下面的信息可以看到flush tables with read lock获取MDL LOCK的信息:下面是unlock tables释放MDL LOCK的信息:如下是关于范围 MDL LOCK的兼容性:对于DMLFOR UPDATE:需要获取GLOBAL的IX锁持有到语句结束,但是TABLE MDL 持有到事物结束一般为(MDL_SHARED_WRITE(SW) ),DML提交的时候会持有COMMIT的IX锁。SELECT: 不需要GLOBAL的IX锁,但是TABLE级别的MDL 需要持有到事物事物结束一般为(MDL_SHARED_READ(SR))。DDL: 需要获取GLOBAL的IX锁到语句结束,TABLE MDL多变。等待为:Waiting for global read lock
堵塞栈帧:等待为:Waiting for table flush
堵塞栈帧:等待为Waiting f免费主机域名or commit lock基本我们看到所有的语句都会堵塞FTWRL。等待为:Waiting for global read lock
堵塞栈帧:等待为Waiting for commit lock
堵塞栈帧:对于FTWRL percona做了改进应该是backup lock和binlog lock来代替。到此,关于“MySQL FLTWL的堵塞和被堵塞分析”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注云技术网站,小编会继续努力为大家带来更多实用的文章!
相关推荐: oracle12cR2如何增加节点删除节点挽救集群
这篇文章主要介绍了oracle12cR2如何增加节点删除节点挽救集群,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。数据库版本:[oracle@jsbp242305 ~]$ sqlplus -VS…