1 show processlist;
show processlist顯示哪些執行緒正在執行。您也可以使用mysqladmin processlist語句得到此資訊。如果您有super許可權,您可以看到所有執行緒。否則,您只能看到您自己的執行緒(也就是,與您正在使用的mysql賬戶相關的執行緒)。如果有執行緒在update或者insert 某個表,此時程序的status為updating 或者 sending data。
如果您得到「too many connections」錯誤資訊,並且想要了解正在發生的情況,本語句是非常有用的。mysql保留乙個額外的連線,讓擁有super許可權的賬戶使用,以確保管理員能夠隨時連線和檢查系統(假設您沒有把此許可權給予所有的使用者)。
status
含義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已經處理完了所有待處理的插入操作,正在等待新的請求。
大部分狀態對應很快的操作,只要有乙個執行緒保持同乙個狀態好幾秒鐘,那麼可能是有問題發生了,需要檢查一下。還有其他的狀態沒在上面中列出來,不過它們大部分只是在檢視伺服器是否有存在錯誤是才用得著。
go連線mysql GO連線MySQL
go語言沒有提供官方的資料庫驅動,所以要安裝第三方函式庫。多行查詢 多行查詢db.query 執行一次查詢,返回多行結果 即rows 一般用於執行select命令。引數args表示query中的佔位引數。具體示例 查詢多條資料示例 func querymultirowdemo fmt.printf ...
Go搭配mysql GO 使用MySQL資料庫
目前internet上流行的 構架方式是lamp,其中的m即mysql,作為資料庫,mysql以免費 開源 使用方便為優勢成為了很多web開發的後端資料庫儲存引擎。mysql驅動 go中支援mysql的驅動目前比較多,有如下幾種,有些是支援database sql標準,而有些是採用了自己的實現介面,...
go語言mysql驅動 MySQL Go驅動
建立資料庫 編寫test.sql source test.sql 檔案 編寫go檔案 test.go 內容如下 db,err sql.open mysql root root test 開啟資料庫test checkerr err stm,err db.prepare drop table if e...