mysql的線程處於System lock狀態下


The thread has called mysql_lock_tables() and the thread state has not been updated since. This is a very general state that can occur for many reasons.

For example, the thread is going to request or is waiting for an internal or external system lock for the table. This can occur when InnoDB waits for a 

table-level lock during execution of LOCK TABLES. If this state is being caused by requests for external locks and you are not using multiple mysqld servers
that are accessing the same MyISAM tables, you can disable external system locks with the --skip-external-locking option. However, external locking is
disabled by default, so it is likely that this option will have no effect. For SHOW PROFILE, this state means the thread is requesting the lock (not waiting
for it).

System lock

這個線程是被mysql_lock_tables()調用的。這種狀態可能是很多種原因造成的。

例如,一個線程想請求或者正在等一個表的內部或者外部的system lock;

        也可能是InnoDB在執行lock tables的時候,等表級鎖;

        也可能是請求內部鎖,比如訪問相同MyISM表沒有用多個mysqld服務;

遇到這種情況,可以用--skip-external-locking選項,禁用內部的system locks。然而,內部鎖如果默認禁用的話,那個選項就會沒用了。

如果是在show profile的時候遇到這種狀態,就說明這個線程正在請求鎖(不是等)。

來源:https://dev.mysql.com/doc/refman/5.7/en/general-thread-states.html 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM