溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Metadata Lock在MySQL數據庫中有什么作用

發布時間:2020-06-04 16:31:14 來源:網絡 閱讀:296 作者:三月 欄目:MySQL數據庫

下文主要給大家帶來Metadata Lock在MySQL數據庫中有什么作用,希望這些內容能夠帶給大家實際用處,這也是我編輯Metadata Lock在MySQL數據庫中有什么作用這篇文章的主要目的。好了,廢話不多說,大家直接看下文吧。

在主庫上truncate table后,發現從庫延時開始增加,show processlist可見如下信息。


72105289  system user  NULL  Connect 2996302 Waiting for master to send event  NULL  0  0

72105290  system user  dbname  Connect 491  Waiting for table metadata lock truncate table tblname  0  0


MySQL用metadata lock控制對于數據庫對象的并發訪問,和保證數據的一致性。MySQL中不能對一個正在使用的表執行DDL語句,就是通過獲取表的metadata lock實現的,其阻止了表結構的變更。即,若表正被一個事務使用,在該事務結束前,另一個會話是不能對此表執行DDL的。


Waiting for table metadata lock,表明在truncate table之前已有事務在使用tblname表了,且該事務還沒結束,從show processlist中看不到進一步的信息了。


但information_schema中的innodb_trx表可以提供正在InnoDB中運行著的事務的信息,如事務是否在等待鎖、事務的開始時間、事務中正在運行的SQL等。


查看innodb_trx表,發現了一個事務,Id為90916563(trx_mysql_thread_id對應show processlist中的Id),開始時間是2019-02-12 13:26:56,在主庫執行truncate table的時間是17:35,其運行的時間有些異常;另trx_query為NULL,可判斷該事務很可能卡在這,未正常結束,阻止了truncate table的繼續。


mysql> select * from INNODB_TRX \G

*************************** 1. row ***************************

                    trx_id: 146633268809

                 trx_state: RUNNING

               trx_started: 2019-02-12 13:26:56

     trx_requested_lock_id: NULL

          trx_wait_started: NULL

                trx_weight: 0

       trx_mysql_thread_id: 90916563

                 trx_query: NULL

       trx_operation_state: NULL

         trx_tables_in_use: 0

         trx_tables_locked: 0

          trx_lock_structs: 0

     trx_lock_memory_bytes: 1136

           trx_rows_locked: 0

         trx_rows_modified: 0

   trx_concurrency_tickets: 0

       trx_isolation_level: REPEATABLE READ

         trx_unique_checks: 1

    trx_foreign_key_checks: 1

trx_last_foreign_key_error: NULL

 trx_adaptive_hash_latched: 0

 trx_adaptive_hash_timeout: 0

          trx_is_read_only: 0

trx_autocommit_non_locking: 0

1 row in set (0.00 sec)


從show processlist中看到Id為90916563線程的信息,其Time為1294。kill掉該線程,主從復制恢復正常。

90916563  dbname_read  192.168.2.36:63063  dbname  Sleep  1294  NULL  100  100


若想查看metadata lock的詳細信息,可借助Performance Schema下的metadata_locks表。

對于以上關于Metadata Lock在MySQL數據庫中有什么作用,大家是不是覺得非常有幫助。如果需要了解更多內容,請繼續關注我們的行業資訊,相信你會喜歡上這些內容的。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女