1. 程式人生 > >mysql 檢視當前連線數

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

相關推薦

mysql 檢視當前連線

processlist命令的輸出結果顯示了有哪些執行緒在執行,可以幫助識別出有問題的查詢語句,兩種方式使用這個命令。1.      進入mysql/bin目錄下輸入mysqladmin processlist;2.      啟動mysql,輸入show processlist;如果有SUPER許可權,則可以

linux 檢視MySQL當前連線

檢視最大連線數 mysqladmin -uroot -p processlist 一般來說提示的thread數目就是當前的連線數 或者是登入到mysql客戶端後,使用status命令也能獲得thread連線數以及當前連線的id。 [[email prot

ORACLE 檢視當前連線、修改最大連線相關SQL或命令

SQL: 1. 檢視當前的資料庫連線數  select count(*) fromv$process  select count(*) from v$process where program=‘Oracle.EXE(SHAD)’; 2. 檢視資料庫允許的最大連線數  s

連線檢視當前連線

在網上找了好久,始終不知道如何檢視當前連線數,偶然一機會除錯,發現了BasicDataSource 環境:tomcat+mysql 通過除錯可以發現,(DataSource)ctx.lookup("java:comp/env/j***");返回的值型別是BasicDataSource,BasicDataSou

【Oracle】檢視當前連線和最大連線

檢視當前資料庫連線數 select count(*) from v$session where username is not null; select count(*) from v$proces

Windows server 2008 R2檢視當前連線

在執行中輸入perfmon.msc 開啟效能監視器——監視工具——效能監視器: 右鍵藍色部分 新增計數器 點選WEB Service 下面的Current Connections 選擇相應的例項,點選新增即可。

hbase命令和檢視當前連線

名稱 命令表示式 建立表 create '表名稱', '列名稱1','列名稱2','列名稱N' 新增記錄 put '表名稱', '行名稱', '列名稱:', '值' 檢視記錄 get '表名稱', '行名稱' 查看錶中的記錄總數 count '表名稱' 刪除記錄

怎麼實時檢視mysql當前連線

如何實時檢視mysql當前連線數? 1、檢視當前所有連線的詳細資料: ./mysqladmin -uadmin -p -h10.140.1.1 processlist 2、只檢視當前連線數(Threads就是連線數.): ./mysqladmin -uadmin -p

如何檢視Apache的連線當前連線

查看了連線數和當前的連線數 複製程式碼 程式碼如下: netstat -ant | grep $ip:80 | wc -l netstat -ant | grep $ip:80 | grep EST | wc -l 檢視IP訪問次數 複製

查詢mysql當前連線

1.show status    Threads_connected  當前的連線數    Connections  試圖連線到(不管是否成功)MySQL伺服器的連線數。    Max_used_connections  伺服器啟動後已經同時使用的連線的最大數量。 2.set GLOBAL max_con

檢視oracle資料庫允許的最大連線當前連線

在檢視資料的連線情況很有用,寫完程式一邊測試程式碼一邊檢視資料庫連線的釋放情況有助於分析優化出一個健壯的系統程式來。 1、檢視當前的資料庫連線數  select count(*) from v$pr

oracle檢視/修改最大連線當前連線/使用者等資訊

select count(*) from v$process; --當前的資料庫連線數 select value from v$parameter where name ='processes';

檢視Oracle當前連線

1.檢視Oracle最大連線數 SQL>show parameter processes    #最大連線數 2.修改最大連線數 SQL>alter system set processes=value scope=spfile 重啟資料庫 SQL>sh

sql server- 檢視程序池預設最大連線和資料當前連線

1、獲取SQL Server允許同時使用者連線的最大數      SELECT @@MAX_CONNECTIONS         2、獲取當前指定資料庫的連線資訊      SELECT * FROM master.dbo.sysprocesses WHERE dbid

centOS伺服器 netstat命令 檢視TCP連線資訊

netstat命令的功能是顯示網路連線、路由表和網路介面的資訊,可以讓使用者得知有哪些網路連線正在運作。在日常工作中,我們最常用的也就兩個引數,即netstat –an,如下所示: [[email protected] ~]# netstat -an Active Inter

mysql在linux下表名大小寫以及mysql最大連線

“Can not connect to MySQL server. Too many connections”-mysql 1040錯誤,這是因為訪問MySQL且還未釋放的連線數目已經達到MySQL的上限。通常,mysql的最大連線數預設是100, 最大可以達到16384。 第一種:命

ORACLE資料生成awr報告與檢視資料庫連線

一,生成awr報告 查詢awrrpt.sql檔案位置 1 find / -name awrrpt.sql 2,進入oracle目錄 3登入oracle sqlplus / as sysdba 4, SQL>@/home/oracle/app/oracle/produc

檢視oracle連線的消耗情況

前言 oracle 12c linux 7.0 PL/SQL 11.0.2 oracle中的連線數量是有限的。如果有程式一直消耗連線數量,則連線數量就會耗盡。 資料庫允許的最大連線數 select value from v$parameter

mysql檢視當前資料庫鎖請求

information_shcema下的三張表(通過這三張表可以更新監控當前事物並且分析存在的鎖問題)  —— innodb_trx (列印innodb核心中的當前活躍事務)  —— innodb_locks ( 列印當前狀態產生的innodb鎖 僅在有鎖等待時列印) ——

檢視db連線sql

/****** Object: StoredProcedure [dbo].[SP_Conn] Script Date: 12/09/2018 19:03:28 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO C