程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 經由過程mysql show processlist 敕令檢討mysql鎖的辦法

經由過程mysql show processlist 敕令檢討mysql鎖的辦法

編輯:MySQL綜合教程

經由過程mysql show processlist 敕令檢討mysql鎖的辦法。本站提示廣大學習愛好者:(經由過程mysql show processlist 敕令檢討mysql鎖的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是經由過程mysql show processlist 敕令檢討mysql鎖的辦法正文


processlist敕令的輸入成果顯示了有哪些線程在運轉,可以贊助辨認出有成績的查詢語句,兩種方法應用這個敕令。

1.      進入mysql/bin目次下輸出mysqladmin processlist;

2.      啟動mysql,輸出show processlist;

假如有SUPER權限,則可以看到全體的線程,不然,只能看到本身提議的線程(這是指,以後對應的MySQL帳戶運轉的線程)。

獲得數據情勢以下(只截取了三條):

mysql> show processlist;

+-----+-------------+--------------------+-------+---------+-------+----------------------------------+----------

| Id | User | Host           | db  | Command | Time| State    | Info                                                                                          

+-----+-------------+--------------------+-------+---------+-------+----------------------------------+----------

|207|root |192.168.0.20:51718 |mytest | Sleep   | 5   |        | NULL                                                                                                

|208|root |192.168.0.20:51719 |mytest | Sleep   | 5   |        | NULL        

|220|root |192.168.0.20:51731 |mytest |Query   | 84  | Locked |

select bookname,culture,value,type from book where id=001

先簡略說一下各列的寄義和用處,第一列,id,不消說了吧,一個標識,你要kill一個語句的時刻很有效。user列,顯示單前用戶,假如不是root,這個敕令就只顯示你權限規模內的sql語句。host列,顯示這個語句是從哪一個ip的哪一個端口上收回的。呵呵,可以用來追蹤出成績語句的用戶。db列,顯示這個過程今朝銜接的是哪一個數據庫。command列,顯示以後銜接的履行的敕令,普通就是休眠(sleep),查詢(query),銜接(connect)。time列,此這個狀況連續的時光,單元是秒。state列,顯示應用以後銜接的sql語句的狀況,很主要的列,後續會有一切的狀況的描寫,請留意,state只是語句履行中的某一個狀況,一個sql語句,已查詢為例,能夠須要經由copying to tmp table,Sorting result,Sending data等狀況才可以完成,info列,顯示這個sql語句,由於長度無限,所以長的sql語句就顯示不全,然則一個斷定成績語句的主要根據。

這個敕令中最症結的就是state列,mysql列出的狀況重要有以下幾種:

  Checking table
 正在檢討數據表(這是主動的)。
 Closing tables
 正在將表中修正的數據刷新到磁盤中,同時正在封閉曾經用完的表。這是一個很快的操作,假如不是如許的話,就應當確認磁盤空間能否曾經滿了或許磁盤能否正處於重負中。
 Connect Out
 復制從辦事器正在銜接主辦事器。
 Copying to tmp table on disk
 因為暫時成果集年夜於tmp_table_size,正在將暫時表從內存存儲轉為磁盤存儲以此節儉內存。
 Creating tmp table
 正在創立暫時表以寄存部門查詢成果。
 deleting from main table
 辦事器正在履行多表刪除中的第一部門,剛刪除第一個表。
 deleting from reference tables
 辦事器正在履行多表刪除中的第二部門,正在刪除其他表的記載。
 Flushing tables
 正在履行FLUSH TABLES,期待其他線程封閉數據表。
 Killed
 發送了一個kill要求給某線程,那末這個線程將會檢討kill標記位,同時會廢棄下一個kill要求。MySQL會在每次的主輪回中檢討kill標記位,不外有些情形下該線程能夠會過一小段能力逝世失落。假如該線程程被其他線程鎖住了,那末kill要求會在鎖釋放時立時失效。
 Locked
 被其他查詢鎖住了。
 Sending data
 正在處置Select查詢的記載,同時正在把成果發送給客戶端。
 Sorting for group
 正在為GROUP BY做排序。
 Sorting for order
 正在為ORDER BY做排序。
 Opening tables
 這個進程應當會很快,除非遭到其他身分的攪擾。例如,在執Alter TABLE或LOCK TABLE語句行完之前,數據表沒法被其他線程翻開。正測驗考試翻開一個表。
 Removing duplicates
 正在履行一個Select DISTINCT方法的查詢,然則MySQL沒法在前一個階段優化失落那些反復的記載。是以,MySQL須要再次去失落反復的記載,然後再把成果發送給客戶端。
 Reopen table
 取得了對一個表的鎖,然則必需在表構造修正以後能力取得這個鎖。曾經釋放鎖,封閉數據表,正測驗考試從新翻開數據表。
 Repair by sorting
 修復指令阃在排序以創立索引。
 Repair with keycache
 修復指令阃在應用索引緩存一個一個地創立新索引。它會比Repair by sorting慢些。
 Searching rows for update
 正在講相符前提的記載找出來以備更新。它必需在Update要修正相干的記載之前就完成了。
 Sleeping
 正在期待客戶端發送新要求.
 System lock
 正在期待獲得一個內部的體系鎖。假如以後沒有運轉多個mysqld辦事器同時要求統一個表,那末可以經由過程增長--skip-external-locking參數來制止內部體系鎖。
 Upgrading lock
 Insert DELAYED正在測驗考試獲得一個鎖表以拔出新記載。
 Updating
 正在搜刮婚配的記載,而且修正它們。
 User Lock
 正在期待GET_LOCK()。
 Waiting for tables
 該線程獲得告訴,數據表構造曾經被修正了,須要從新翻開數據表以獲得新的構造。然後,為了能的從新翻開數據表,必需比及一切其他線程封閉這個表。以下幾種情形下會發生這個告訴:FLUSH TABLES tbl_name, Alter TABLE, RENAME TABLE, REPAIR TABLE, ANALYZE TABLE,或OPTIMIZE TABLE。
 waiting for handler insert
 Insert DELAYED曾經處置完了一切待處置的拔出操作,正在期待新的要求。
 年夜部門狀況對應很快的操作,只需有一個線程堅持統一個狀況好幾秒鐘,那末能夠是有成績產生了,須要檢討一下。
 還有其他的狀況沒在下面中列出來,不外它們年夜部門只是在檢查辦事器能否有存在毛病是才用得著。

mysql手冊裡有一切狀況的解釋,鏈接以下:http://dev.mysql.com/doc/refman/5.0/en/general-thread-states.html
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved