MySQL show processlist命令詳解及檢視當前連線數
官網:https://dev.mysql.com/doc/refman/5.6/en/show-processlist.html
select * from information_schema.processlist;
SHOW PROCESSLIST顯示哪些執行緒正在執行。您也可以使用mysqladmin processlist語句得到此資訊。如果您有SUPER許可權,您可以看到所有執行緒。否則,您只能看到您自己的執行緒(也就是,與您正在使用的MySQL賬戶相關的執行緒)。請參見13.5.5.3節,“KILL語法”。如果您不使用FULL關鍵詞,則只顯示每個查詢的前100個字元。
本語句報告TCP/IP連線的主機名稱(採用host_name:client_port格式),以方便地判定哪個客戶端正在做什麼。
如果您得到“too many connections”錯誤資訊,並且想要了解正在發生的情況,本語句是非常有用的。保留一個額外的連線,讓擁有SUPER許可權的 賬戶使用,以確保管理員能夠隨時連線和檢查系統(假設您沒有把此許可權給予所有的使用者)。
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已經處理完了所有待處理的插入操作,正在等待新的請求。
大部分狀態對應很快的操作,只要有一個執行緒保持同一個狀態好幾秒鐘,那麼可能是有問題發生了,需要檢查一下。
還有其他的狀態沒在上面中列出來,不過它們大部分只是在檢視伺服器是否有存在錯誤是才用得著。
狀態 建議 copy to tmp table 執行ALTER TABLE修改表結構時 建議: 放在凌晨執行或者採用類似pt-osc工具 Copying to tmp table 複製資料到記憶體中的,常見於GROUP BY操作時 建議: 建立適當的索引 Copying to tmp table on disk 臨時結果集太大,記憶體中放不下,需要將記憶體中的複製到磁碟上,形成 #sql***.MYD、#sql***.MYI(在5.6及更高的版本,可以改成InnoDB引擎了,可以參考選項 default_tmp_storage_engine ) 建議: 建立適當的索引,並且適當加大 sort_buffer_size/tmp_table_size/max_heap_table_size Creating sort index 當前的SELECT中需要用到臨時表在進行ORDER BY排序 建議: 建立適當的索引 Creating tmp table 建立基於記憶體或磁碟的臨時表,當從記憶體轉成磁碟的臨時表時,狀態會變成:Copying to tmp table on disk 建議: 建立適當的索引,或者少用UNION、檢視(VIEW)之類的 Reading from net 表示server端正透過網路讀取客戶端傳送過來的請求 建議: 減小客戶端傳送資料包大小,提高/質量 Sending data 從server端傳送資料到客戶端,也有可能是接收層返回的資料,再傳送給客戶端,資料量很大時尤其經常能看見備註:Sending Data不是網路傳送,是從硬碟讀取,傳送到網路是Writing to net 建議: 透過索引或加上LIMIT,減少需要掃描並且傳送給客戶端的資料量 Sorting result 正在對結果進行排序,類似Creating sort index,不過是正常表,而不是在記憶體表中進行排序 建議: 建立適當的索引 statistics 進行以便解析執行計劃,如果狀態比較經常出現,有可能是磁碟IO效能很差建議: 檢視當前io效能狀態,例如iowait Waiting for global read lock FLUSH TABLES WITH READ LOCK整等待全域性讀鎖 建議: 不要對線上業務資料庫加上全域性讀鎖,通常是備份引起,可以放在業務低谷期間執行或者放在slave伺服器上執行備份 Waiting for tables,Waiting for table flush FLUSH TABLES, ALTER TABLE, RENAME TABLE, REPAIR TABLE, ANALYZE TABLE, OPTIMIZE TABLE等需要重新整理表結構並重新開啟 建議: 不要對線上業務資料庫執行這些操作,可以放在業務低谷期間執行 Waiting for lock_type lock 等待各種型別的鎖:? Waiting for event metadata lock? Waiting for global read lock ? Waiting for schema metadata lock ? Waiting for stored function metadata lock ? Waiting for stored procedure metadata lock ? Waiting for table level lock ? Waiting for table metadata lock ? Waiting for trigger metadata lock 建議:比較常見的是上面提到的global read lock以及table metadata lock,建議不要對線上業務資料庫執行這些操作,可以放在業務低谷期間執行。如果是table level lock,通常是因為還在使用MyISAM引擎表,趕緊轉投InnoDB引擎吧,別再老頑固了
一般情況下,DBA能從監控mysql的狀態列表中檢視出資料庫的執行端倪,需要注意的是STATUS所表示的不同內容。且需要注意的是TIME欄位表示的意思。它表示的只是最後那個STAT狀態持續的時間。這個時間是有可能忽大忽小的。而不是SQL開始執行到現在的時間。單位時間是秒。
—————————————————————————————————————————————
After create
This occurs when the thread creates a table (including internal temporary tables), at the end of the function that creates the table. This state is used even if the table could not be created due to some error.
這個狀態當執行緒建立一個表(包括內部臨時表)時,在這個建表功能結束時出現。即使某些錯誤導致建表失敗,也會使用這個狀態。
Analyzing
The thread is calculating a MyISAM table key distributions (for example, for ANALYZE TABLE).
當計算MyISAM表索引分佈時。(比如進行ANALYZE TABLE時)
checking permissions
The thread is checking whether the server has the required privileges to execute the statement.
這個執行緒檢查伺服器是否有具有執行該語句的所需許可權。
Checking table
The thread is performing a table check operation.
執行緒正在執行表檢查操作。
cleaning up
The thread has processed one command and is preparing to free memory and reset certain state variables.
執行緒處理一個命令,並正準備釋放記憶體和重置某些狀態變數。
closing tables
The thread is flushing the changed table data to disk and closing the used tables. This should be a fast operation. If not, verify that you do not have a full disk and that the disk is not in very heavy use.
執行緒正在將變更的表中的資料重新整理到磁碟上並正在關閉使用過的表。這應該是一個快速的操作。如果不是這樣的話,則應該檢查硬碟空間是否已滿或者硬碟IO是否達到瓶頸。
converting HEAP to MyISAM
The thread is converting an internal temporary table from a MEMORY table to an on-disk MyISAM table.
執行緒將一個內部臨時錶轉換為磁碟上的MyISAM表。
copy to tmp table
The thread is processing an ALTER TABLE statement. This state occurs after the table with the new structure has been created but before rows are copied into it.
執行緒正在處理一個ALTER TABLE語句。這個狀態發生在新的表結構已經建立之後,但是在資料被複制進入之前。
Copying to group table
If a statement has different ORDER BY and GROUP BY criteria, the rows are sorted by group and copied to a temporary table.
如果一個語句有不同的ORDER BY和GROUP BY條件,資料會被複制到一個臨時表中並且按組排序。
Copying to tmp table
The server is copying to a temporary table in memory.
執行緒將資料寫入記憶體中的臨時表。 正在建立臨時表以存放部分查詢結果
Copying to tmp table on disk
The server is copying to a temporary table on disk. The temporary result set has become too large (see Section 8.4.3.3, “How MySQL Uses Internal Temporary Tables”). Consequently, the thread is changing the temporary table from in-memory to diskbased format to save memory.
執行緒正在將資料寫入磁碟中的臨時表。臨時表的結果集過大(大於tmp_table_size)。所以,執行緒將臨時表由基於記憶體模式改為基於磁碟模式,以節省記憶體。
Creating index
The thread is processing ALTER TABLE … ENABLE KEYS for a MyISAM table.
執行緒正在對一個MyISAM表執行ALTER TABLE … ENABLE KEYS語句。
Creating sort index
The thread is processing a SELECT that is resolved using an internal temporary table.
執行緒正在使用內部臨時表處理一個SELECT 操作。
creating table
The thread is creating a table. This includes creation of temporary tables.
執行緒正在建立一個表,包括建立臨時表。
Creating tmp table
The thread is creating a temporary table in memory or on disk. If the table is created in memory but later is converted to an ondisk table, the state during that operation will be Copying to tmp table on disk.
執行緒正在建立一個臨時表在記憶體或者磁碟上。如果這個表建立在記憶體上但是之後被轉換到磁碟上,這個狀態在執行Copying to tmp table on disk 的時候保持。
deleting from main table
The server is executing the first part of a multiple-table delete. It is deleting only from the first table, and saving columns and offsets to be used for deleting from the other (reference) tables.
執行緒正在執行多表刪除的第一部分,只從第一個表中刪除。並且儲存列和偏移量用來從其他(參考)表刪除。
deleting from reference tables
The server is executing the second part of a multiple-table delete and deleting the matched rows from the other tables.
執行緒正在執行多表刪除的第二部分,並從其他表中刪除匹配的行。
discard_or_import_tablespace
The thread is processing an ALTER TABLE … DISCARD TABLESPACE or ALTER TABLE … IMPORT TABLESPACE statement.
執行緒正在執行ALTER TABLE … DISCARD TABLESPACE 或 ALTER TABLE … IMPORT TABLESPACE語句。
end
This occurs at the end but before the cleanup of ALTER TABLE, CREATE VIEW, DELETE, INSERT, SELECT, or UPDATE statements.
這個狀態出現在結束時,但是在對ALTER TABLE, CREATE VIEW, DELETE, INSERT, SELECT, 或者 UPDATE 語句進行清理之前。
executing
The thread has begun executing a statement.
該執行緒已開始執行一條語句。
Execution of init_command
The thread is executing statements in the value of the init_command system variable.
執行緒正在執行處於init_command系統變數的值中的語句。
freeing items
The thread has executed a command. Some freeing of items done during this state involves the query cache. This state is usually followed by cleaning up.
執行緒已經執行了命令。在這個狀態中涉及的查詢快取可以得到一些釋放。這個狀態通常後面跟隨cleaning up狀態。
Flushing tables
The thread is executing FLUSH TABLES and is waiting for all threads to close their tables.
執行緒正在執行FLUSH TABLES 並且等待所有執行緒關閉他們的表。
FULLTEXT initialization
The server is preparing to perform a natural-language full-text search.
伺服器正在準備進行自然語言全文檢索。
init
This occurs before the initialization of ALTER TABLE, DELETE, INSERT, SELECT, or UPDATE statements. Actions taken by the server in this state include flushing the binary log, the InnoDB log, and some query cache cleanup operations.
For the end state, the following operations could be happening:
Removing query cache entries after data in a table is changed
Writing an event to the binary log
Freeing memory buffers, including for blobs
這個狀態出現線上程初始化ALTER TABLE, DELETE, INSERT, SELECT, 或 UPDATE語句之前。伺服器在這種狀態下進行的操作,包括:重新整理全日誌、Innodb日誌,和一些查詢快取清理操作。
對於end狀態,可能會發生下列操作:
在表中的資料變更之後移除查詢快取。
將事務寫入全日誌。
釋放記憶體緩衝區,包括大的二進位制資料塊。
Killed
Someone has sent a KILL statement to the thread and it should abort next time it checks the kill flag. The flag is checked in each major loop in MySQL, but in some cases it might still take a short time for the thread to die. If the thread is locked by some other thread, the kill takes effect as soon as the other thread releases its lock.
程式對執行緒傳送了KILL語句,並且它應該放棄下一次對KILL標記的檢查。這個標記在每一個MySQL的主要迴圈中被檢查,但在某些情況下,它可能需要令執行緒在很短的時間內死亡。如果這個執行緒被其他執行緒鎖住了,這個KILL操作會在其他執行緒釋放鎖的瞬時執行。
Locked
The query is locked by another query.
As of MySQL 5.5.3, this state was removed because it was equivalent to the Table lock state and no longer appears in SHOW PROCESSLIST output.
這個查詢被其他查詢鎖住了。
在MySQL 5.5.3版本,這個狀態被移除了。因為它相當於表鎖狀態,並且不再出現在SHOW PROCESSLIST輸出中。
logging slow query
The thread is writing a statement to the slow-query log.
這個執行緒正在將語句寫入慢查詢日誌。
NULL
This state is used for the SHOW PROCESSLIST state.
沒有操作的狀態。
login
The initial state for a connection thread until the client has been authenticated successfully.
執行緒連線的初始狀態。直到客戶端已經成功驗證。
manage keys
The server is enabling or disabling a table index.
伺服器啟用或禁用表索引。
Opening tables, Opening table
The thread is trying to open a table. This is should be very fast procedure, unless something prevents opening. For example, an ALTER TABLE or a LOCK TABLE statement can prevent opening a table until the statement is finished. It is also worth checking that your table_open_cache value is large enough.
執行緒正試圖開啟一張表。這應該是非常快的過程,除非開啟受到阻止。一個ALTER TABLE 或LOCK TABLE語句能夠阻止開啟一張表直到語句執行結束。有必要檢查table_open_cache的值是否足夠大。
optimizing
The server is performing initial optimizations for a query.
伺服器執行查詢的初步最佳化。
preparing
This state occurs during query optimization.
在查詢最佳化過程中出現這個狀態。
Purging old relay logs
The thread is removing unneeded relay log files.
執行緒正在移除不必要的中繼日誌檔案。
query end
This state occurs after processing a query but before the freeing items state.
這個狀態出現在處理一個查詢之後,但是在freeing items狀態之前。
Reading from net
The server is reading a packet from the network.
伺服器正在從網路閱讀資料包。
Removing duplicates
The query was using SELECT DISTINCT in such a way that MySQL could not optimize away the distinct operation at an early stage. Because of this, MySQL requires an extra stage to remove all duplicated rows before sending the result to the client.
查詢正在使用SELECT DISTINCT,這種情況下MySQL不能在早期階段最佳化掉一些distinct操作。因此,MySQL需要一個額外的階段,在將結果傳送到客戶端之前刪除所有重複的行。
removing tmp table
The thread is removing an internal temporary table after processing a SELECT statement. This state is not used if no temporary table was created.
執行緒正在移除一個內建臨時表,在執行一條SELECT語句之後。 如果沒有臨時表產生,那麼這個狀態不被使用。
rename
The thread is renaming a table.
執行緒正在重新命名一張表。
rename result table
The thread is processing an ALTER TABLE statement, has created the new table, and is renaming it to replace the original table.
執行緒正在處理ALTER TABLE語句,建立新的表,並且重新命名它來代替原有的表。
Reopen tables
The thread got a lock for the table, but noticed after getting the lock that the underlying table structure changed. It has freed the lock, closed the table, and is trying to reopen it.
執行緒獲得了表鎖,但是在取得表鎖之後才發現該表的底層結構已經發生了變化。執行緒釋放這個鎖,關閉表,並試圖重新開啟該表。
Repair by sorting
The repair code is using a sort to create indexes.
修復程式碼正在使用一個分類來建立索引。
Repair done
The thread has completed a multi-threaded repair for a MyISAM table.
執行緒完成一個多執行緒的MyISAM表的修復。
Repair with keycache
The repair code is using creating keys one by one through the key cache. This is much slower than Repair by sorting.
修復程式碼正在透過索引快取一個接一個地使用建立索引。這比透過分類修復要慢很多。
Rolling back
The thread is rolling back a transaction.
執行緒正在回滾一個事務
Saving state
For MyISAM table operations such as repair or analysis, the thread is saving the new table state to the .MYI file header. State includes information such as number of rows, the AUTO_INCREMENT counter, and key distributions.
對於MyISAM表的類似repair或analysis操作,執行緒在.MYI檔案的頭部儲存一個新表的狀態。狀態資訊包括行數、自增數、索引分佈等等。
Searching rows for update
The thread is doing a first phase to find all matching rows before updating them. This has to be done if the UPDATE is changing the index that is used to find the involved rows.
執行緒正在進行第一階段,在更新前尋找所有匹配的行。如果update正在更改用於查詢相關行的索引,則必須這麼做。
Sending data
The thread is reading and processing rows for a SELECT statement, and sending data to the client. Because operations occurring during this this state tend to perform large amounts of disk access (reads), it is often the longest-running state over the lifetime of a given query.
執行緒正在讀取和處理一條SELECT語句的行,並且將資料傳送至客戶端。由於在此期間會執行大量的磁碟訪問(讀操作),這個狀態在一個指定查詢的生命週期中經常是耗時最長的。
setup
The thread is beginning an ALTER TABLE operation.
執行緒正開始進行一個ALTER TABLE操作。
Sorting for group
The thread is doing a sort to satisfy a GROUP BY.
執行緒正在執行一個由GROUP BY指定的排序。
Sorting for order
The thread is doing a sort to satisfy a ORDER BY.
執行緒正在執行一個由ORDER BY指定的排序。
Sorting index
The thread is sorting index pages for more efficient access during a MyISAM table optimization operation.
執行緒正在對索引頁進行排序,為了對MyISAM表進行操作時獲得更優的效能。
Sorting result
For a SELECT statement, this is similar to Creating sort index, but for nontemporary tables.
對於一個SELECT語句,這與建立排序索引相似,但是是對非臨時表。
statistics
The server is calculating statistics to develop a query execution plan. If a thread is in this state for a long time, the server is probably disk-bound performing other work.
伺服器計算統計去規劃一個查詢。如果一個執行緒長時間處於這個狀態,這個伺服器的磁碟可能在執行其他工作。
System lock
The thread is going to request or is waiting for an internal or external system lock for the table. 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).
這個執行緒正在請求或者等待一個內部的或外部的系統表鎖。如果這個狀態是由於外部鎖的請求產生的,並且你沒有使用多個正在訪問相同的表的mysqld伺服器,那麼你可以使用–skip-external-locking選項禁用外部系統鎖。然而,外部系統鎖預設情況下禁用,因此這個選項可能不會產生效果。對於SHOW PROFILE,這個狀態意味著執行緒正在請求鎖。(而非等待)
Table lock
The next thread state after System lock. The thread has acquired an external lock and is going to request an internal table lock.
This state was replaced in MySQL 5.5.6 with Waiting for table level lock.
系統鎖定後的下一個執行緒狀態。執行緒已獲得外部鎖並且將請求內部表鎖。
這個狀態在MySQL 5.5.6版本中被Waiting for table level lock取代。
Updating
The thread is searching for rows to update and is updating them.
執行緒尋找更新匹配的行並進行更新。
updating main table
The server is executing the first part of a multiple-table update. It is updating only the first table, and saving columns and offsets to be used for updating the other (reference) tables.
執行緒正在執行多表更新的第一部分,只從第一個表中更新。並且儲存列和偏移量用來從其他(參考)表更新。
updating reference tables
The server is executing the second part of a multiple-table update and updating the matched rows from the other tables.
執行緒正在執行多表更新的第二部分,並從其他表中更新匹配的行。
User lock
The thread is going to request or is waiting for an advisory lock requested with a GET_LOCK() call. For SHOW PROFILE, this state means the thread is requesting the lock (not waiting for it).
執行緒正在請求或等待一個GET_LOCK()呼叫所要求的諮詢鎖。對於SHOW PROFILE,這個狀態意味這執行緒正在請求鎖。(而非等待)
User sleep
The thread has invoked a SLEEP() call.
執行緒呼叫了一個SLEEP()。
Waiting for all running commits to finish
A statement that causes an explicit or implicit commit is waiting for release of a read lock. This state was removed in MySQL 5.5.8; Waiting for commit lock is used instead.
一個顯式或隱式語句在提交時等待釋放讀鎖。這個狀態在MySQL 5.5.8版本中被移除,以Waiting for commit lock代替。
Waiting for commit lock
A statement that causes an explicit or implicit commit is waiting for release of a read lock or FLUSH TABLES WITH READ LOCK) is waiting for a commit lock. This state was added in MySQL 5.5.8.
同上,這個狀態於MySQL 5.5.8版本加入。
Waiting for global read lock
FLUSH TABLES WITH READ LOCK) is waiting for a global read lock.
等待全域性讀鎖。
Waiting for release of readlock
The thread is waiting for a global read lock obtained by another thread (with FLUSH TABLES WITH READ LOCK) to be released.This state was removed in MySQL 5.5.8; Waiting for global read lock or Waiting for commit lock are used instead.
等待釋放讀鎖。
Waiting for tables, Waiting for table, Waiting for table flush
The thread got a notification that the underlying structure for a table has changed and it needs to reopen the table to get the new structure. However, to reopen the table, it must wait until all other threads have closed the table in question.
This notification takes place if another thread has used FLUSH TABLES or one of the following statements on the table in question: FLUSH TABLES tbl_name, ALTER TABLE, RENAME TABLE, REPAIR TABLE, ANALYZE TABLE, or OPTIMIZE TABLE.
In MySQL 5.5.6, Waiting for table was replaced with Waiting for table flush.
執行緒獲得一個通知,底層表結構已經發生變化,它需要重新開啟表來獲取新的結構。然而,重新開啟表,它必須等到所有其他執行緒關閉這個有問題的表。
這個通知產生通常因為另一個執行緒對問題表執行了FLUSH TABLES或者以下語句之一:FLUSH TABLES tbl_name, ALTER TABLE, RENAME TABLE, REPAIR TABLE, ANALYZE TABLE, or OPTIMIZE TABLE.
Waiting for lock_type lock
The server is waiting to acquire a lock, where lock_type indicates the type of lock:
Waiting for event metadata lock (added in MySQL 5.5.8)
Waiting for global metadata lock (replaced by Waiting for global read lock in MySQL 5.5.8)
Waiting for global read lock (added in MySQL 5.5.8)
Waiting for schema metadata lock
Waiting for stored function metadata lock
Waiting for stored procedure metadata lock
Waiting for table level lock
Waiting for table metadata lock
Waiting for trigger metadata lock (added in MySQL 5.5.8)
等待各個種類的表鎖。
Waiting on cond
A generic state in which the thread is waiting for a condition to become true. No specific state information is available.
一個普通的狀態,執行緒正在等待一個條件為真。沒有特定的狀態資訊可用。
Waiting to get readlock
The thread has issued a FLUSH TABLES WITH READ LOCK statement to obtain a global read lock and is waiting to obtain the lock. This state was removed in MySQL 5.5.8; Waiting for global read lock is used instead.
執行緒發出了一個FLUSH TABLES WITH READ LOCK語句來獲取一個全域性讀鎖,並且等待獲得這個鎖。這個狀態在MySQL 5.5.8被移除,使用Waiting for global read lock 來代替。
Writing to net
The server is writing a packet to the network.
伺服器正在寫一個網路資料包。
mysql 檢視當前連線數
命令: show processlist;
如果是root帳號,你能看到所有使用者的當前連線。如果是其它普通帳號,只能看到自己佔用的連線。
show processlist;只列出前100條,如果想全列出請使用show full processlist;
mysql> show processlist;
命令: show status;
Aborted_connects 嘗試已經失敗的MySQL伺服器的連線的次數。
Connections 試圖連線MySQL伺服器的次數。
Created_tmp_tables 當執行語句時,已經被創造了的隱含臨時表的數量。
Delayed_insert_threads 正在使用的延遲插入處理器執行緒的數量。
Delayed_writes 用INSERT DELAYED寫入的行數。
Delayed_errors 用INSERT DELAYED寫入的發生某些錯誤(可能重複鍵值)的行數。
Flush_commands 執行FLUSH命令的次數。
Handler_delete 請求從一張表中刪除行的次數。
Handler_read_first 請求讀入表中第一行的次數。
Handler_read_key 請求數字基於鍵讀行。
Handler_read_next 請求讀入基於一個鍵的一行的次數。
Handler_read_rnd 請求讀入基於一個固定位置的一行的次數。
Handler_update 請求更新表中一行的次數。
Handler_write 請求向表中插入一行的次數。
Key_blocks_used 用於關鍵字快取的塊的數量。
Key_read_requests 請求從快取讀入一個鍵值的次數。
Key_reads 從磁碟物理讀入一個鍵值的次數。
Key_write_requests 請求將一個關鍵字塊寫入快取次數。
Key_writes 將一個鍵值塊物理寫入磁碟的次數。
Max_used_connections 同時使用的連線的最大數目。
Not_flushed_key_blocks 在鍵快取中已經改變但是還沒被清空到磁碟上的鍵塊。
Not_flushed_delayed_rows 在INSERT DELAY佇列中等待寫入的行的數量。
Open_tables 開啟表的數量。
Open_files 開啟檔案的數量。
Open_streams 開啟流的數量(主要用於日誌記載)
Opened_tables 已經開啟的表的數量。
Questions 發往伺服器的查詢的數量。
Slow_queries 要花超過long_query_time時間的查詢數量。
Threads_connected 當前開啟的連線的數量。
Threads_running 不在睡眠的執行緒數量。
Uptime 伺服器工作了多少秒。
檢視配置引數:
SHOW VARIABLES LIKE '%timeout%'
如何實時檢視mysql當前連線數? 1、檢視當前所有連線的詳細資料: ./mysqladmin -uadmin -p -h10.140.1.1 processlist 2、只檢視當前連線數(Threads就是連線數.): ./mysqladmin -uadmin -p -h10.140.1.1 status 、檢視當前所有連線的詳細資料: mysqladmin -uroot -proot processlist D:\MySQL\bin>mysqladmin -uroot -proot processlist +-----+------+----------------+---------+---------+------+-------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +-----+------+----------------+---------+---------+------+-------+------------------+ | 591 | root | localhost:3544 | bbs | Sleep | 25 | | | | 701 | root | localhost:3761 | | uery | 0 | | show processlist | +-----+------+----------------+---------+---------+------+-------+------------------+ 2、只檢視當前連線數(Threads就是連線數.): mysqladmin -uroot -proot status D:\MySQL\bin>mysqladmin -uroot -proot status Uptime: 2102 Threads: 3 Questions: 15531 Slow queries: 0 Opens: 0 Flush tab les: 1 Open tables: 61 Queries per second avg: 7.389 3、修改mysql最大連線數: 開啟my.ini,修改max_connections=100(預設為100)。 今天有一臺mysql伺服器突然連線數暴增,並且等待程式全部被鎖...因為問題解決不當,導致被罵...OTL 總結:以後要快速定位錯誤,佈置解決方案 登入到mysql客戶端後,使用status命令也能獲得thread連線數以及當前連線的id 或者用 show full processlist 看一下所有連線程式,注意檢視程式等待時間以及所處狀態 是否locked 如果程式過多,就把程式列印下來,然後檢視 mysql -e 'show full processlist;' > 111 查詢非locked的程式,一般就是當前執行中卡死,導致後面的程式排隊的原因。 另外,修改mysql最大連線數的方法: 編輯MySQL(和PHP搭配之最佳組合)配置檔案 my.cnf 或者是 my.ini 在[MySQL(和PHP搭配之最佳組合)d]配置段新增: max_connections = 1000 儲存,重啟MySQL(和PHP搭配之最佳組合)服務。 然後用命令: MySQL(和PHP搭配之最佳組合)admin -uroot -p variables 輸入root資料庫賬號的密碼後可看到 | max_connections | 1000 | 檢視MySQL連線數和當前使用者Mysql連線數 先用管理員身份進入mysql提示符。 #mysql -uroot -pxxxx mysql> show processlist; 可以顯示前100條連線資訊 show full processlist; 可以顯示全部。隨便說下,如果用普通賬號登入,就只顯示這使用者的。注意命令後有分號。 如果我們想檢視這臺伺服器設定。 #vi /etc/my.cnf set-variable=max_user_connections=30 這個就是單使用者的連線數 set-variable=max_connections=800 這個是全域性的限制連線數
About Me
.............................................................................................................................................
● 本文整理自網路
● 本文在itpub(http://blog.itpub.net/26736162/abstract/1/)、部落格園(http://www.cnblogs.com/lhrbest)和個人微信公眾號(xiaomaimiaolhr)上有同步更新
● 本文itpub地址:http://blog.itpub.net/26736162/abstract/1/
● 本文部落格園地址:http://www.cnblogs.com/lhrbest
● 本文pdf版、個人簡介及小麥苗雲盤地址:http://blog.itpub.net/26736162/viewspace-1624453/
● 資料庫筆試面試題庫及解答:http://blog.itpub.net/26736162/viewspace-2134706/
● DBA寶典今日頭條號地址:
.............................................................................................................................................
● QQ群號:230161599(滿)、618766405
● 微信群:可加我微信,我拉大家進群,非誠勿擾
● 聯絡我請加QQ好友(646634621),註明新增緣由
● 於 2017-08-01 09:00 ~ 2017-08-31 22:00 在魔都完成
● 文章內容來源於小麥苗的學習筆記,部分整理自網路,若有侵權或不當之處還請諒解
● 版權所有,歡迎分享本文,轉載請保留出處
.............................................................................................................................................
● 小麥苗的微店:
● 小麥苗出版的資料庫類叢書:http://blog.itpub.net/26736162/viewspace-2142121/
.............................................................................................................................................
使用微信客戶端掃描下面的二維碼來關注小麥苗的微信公眾號(xiaomaimiaolhr)及QQ群(DBA寶典),學習最實用的資料庫技術。
小麥苗的微信公眾號 小麥苗的DBA寶典QQ群1 小麥苗的DBA寶典QQ群2 小麥苗的微店
.............................................................................................................................................
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26736162/viewspace-2144193/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mysql show processlist命令詳解MySql
- mysql show processlist 詳解MySql
- MySQL 中 show full processlist 詳解MySql
- 如何實時檢視mysql當前連線數? 薦MySql
- 檢視當前pg會話連線數會話
- Oracle檢視允許的最大連線數和當前連線數Oracle
- oracle檢視允許的最大連線數和當前連線數等資訊Oracle
- mysql的show processlistMySql
- mysql show processlist stateMySql
- MySQL:show processlist Time負數的思考MySql
- MySQL show status 命令詳解MySql
- MySQL 之 show processlist 神器MySql
- MySQL show processlist故障處理MySql
- Mysql show processlist 排查問題MySql
- 轉載:mysql的show processlistMySql
- Linux檢視環境變數當前資訊和檢視命令Linux變數
- MYSQL 檢視最大連線數和修改最大連線數MySql
- show processlist time負數的初探
- MySQL8 show processlist 最佳化MySql
- MySQL檢視當前資料庫庫MySql資料庫
- 檢視Oracle連線數Oracle
- 檢視sqlserver連線數SQLServer
- MySQL show status命令輸出結果詳解MySql
- Centos下檢視當前目錄大小及檔案個數CentOS
- 檢視當前Windows系統CMD所有的命令Windows
- MySQL show status命令常用輸出欄位詳解MySql
- 檢視Linux連線數Linux
- MySQL View(檢視)詳解MySqlView
- 檢視oracle當前sessionOracleSession
- 檢視資料庫的當前連線session,以及其執行的sql資料庫SessionSQL
- 連線池和連線數詳解
- 檢視mysql連線數 sql語句執行時間MySql
- 檢視mysql資料庫連線數、併發數相關資訊MySql資料庫
- git show-branch命令詳解Git
- MySQL調優使用者監控之show processlistMySql
- mysql show命令MySql
- centOS伺服器 netstat命令 檢視TCP連線數資訊CentOS伺服器TCP
- 在SQL Server裡檢視當前連線的線上使用者數_相約在明天_新浪部落格SQLServer