MySQL查詢和修改連線數

2021-10-22 09:20:15 字數 4101 閱讀 6122

mysql中如果是root帳號,你能看到所有使用者的當前連線;如果是其它普通帳號,只能看到自己占用的連線。

show processlist;和show full processlist;

如果是root帳號,你能看到所有使用者的當前連線。如果是其它普通帳號,只能看到自己占用的連線。

show processlist;只列出前100條

show full processlist;全列出

show processlist;命令結果解析:

id:正在執行伺服器執行緒id

user:使用者名稱,連線中的使用者名稱

host:連線客戶端外網id和埠

db:連線使用的資料庫

command:命令模式,一般為sleep,dql(data query language)等則是query,show也是query。

time:時間

state:狀態

info:正在使用的命令

mysql預設最大連線數是100。

max_connections:全域性的限制連線數(最大連線數)

max_user_connections:單使用者的連線數(最大連線數)

注意:mysql的最大連線數是2000,比較理想的設定是max_user_connections/max_connections*100%≈85%

最大連線數佔上限連線數的85%左右,如果發現比例在10%以下,mysql伺服器連線數上限設定的過高了。

區別總結

(1)結論1

max_connections變數的意義是 限制當前mysql server中 允許同時連線的不同使用者數,並不對相同使用者的多次連線進行限制

(2)結論2

max_user_connections變數的意義是 限制當前mysql server中 允許同時連線的相同使用者的連線數,不對連線的不同使用者數進行限制

(3)結論3

對max_connections變數的設定,由於是設定的全域性變數,因此均是對所有使用者生效

(4)結論4

對max_user_connections的設定,分為以下兩種情況:

針對所有使用者有效

mysql>

set @@global.max_user_connections=2

;

針對單個使用者有效

mysql>

grant

usageon*

.*to [email protected]

with max_user_connections 2

;#此時的設定將僅對keyman使用者有效。

注:與max_user_connections引數類似的還有max_queries_per_hour,max_updates_per_hour及max_connections_per_hours,見名知意,用法同上。

如何修改:

(1)windows中可在my.ini中(linux中在my.cnf)新增或修改:max_connections=***;

然後重啟mysql服務就會生效。

(2)命令修改

max_connections是mysql的系統變數。所以可以通過命令:

set

[grobal|

session

|@@global.

|@@session.

] var_name =

value

;

注意:grobal和session的區別則是乙個是全域性,乙個是當前會話,修改全域性的系統變數後需要重啟mysql才能有效。

(3)通過命令生成殺程序指令碼

select concat(

'kill '

,id,

';')

from information_schema.processlist where

user

=』sam' into outfile '

/tmp/a.txt

執行上面生成的kill指令碼

source /tmp/a.txt
通過mysql的狀態變數threads檢視,狀態變數則是通過show status like '%variables%';檢視。

show

status

like

'%threads%';+

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

| variable_name |

value|+

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

| threads_cached |58|

| threads_connected |57|

###這個數值指的是開啟的連線數

| threads_created |

3676

|| threads_running |4|

###這個數值指的是啟用的連線數,這個數值一般遠低於connected數值

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

通過show status like 『%vriables%』;檢視。

aborted_clients 由於客戶沒有正確關閉連線已經死掉,已經放棄的連線數量。

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 伺服器工作了多少秒。

mysql 連線數修改

這點連線數顯然不夠用檢視最大連線數 show variables like connections 或者 show status like thread 方式1 最大連線數 set global max connections 1000 最大錯誤連線數set global max connect e...

mysql修改連線數

一 檢視相關連線數 資料庫最大連線數 show variables like max connections 已使用連線數 show global status like max used connections 連線線程數 show status like threads 連線詳細資訊 show ...

mysql 連線數修改

先臨時修改連線數 修改連線數 設定連線數 set global max connections 2000 查詢連線數 show variables like max connections 查詢錯誤連線數 連線數包括錯誤連線數 即錯誤連線數不可超過連線數數量 show variables like ...