MySQL查看最大連接數和修改最大連接數


1、查看最大連接數
show variables like '%max_connections%';
2、修改最大連接數
set GLOBAL max_connections = 200;

以下的文章主要是向大家介紹的是MySQL最大連接數的修改,我們大家都知道MySQL最大連接數的默認值是100, 這個數值對於並發連接很多的數據庫的應用是遠不夠用的,當連接請求大於默認連接數
后,就會出現無法連接數據庫的錯誤,因此我們需要把它適當調大一些。在使 用MySQL數據庫的時候,經常會遇到這么一個問題,就是“Can not connect to MySQL server. Too many connections”
-mysql 1040錯誤,這是因為訪問MySQL且還未釋放的連接數目已經達到MySQL的上限。通常,mysql的最大連接數默認是100, 最大可以達到16384。

常用的修改最大連接數的最常用的兩種方式如下:

第一種:命令行查看和修改最大連接數(max_connections)。

>mysql -uuser -ppassword(命令行登錄MySQL)

mysql>show variables like 'max_connections';(查可以看當前的最大連接數)
msyql>set global max_connections=1000;(設置最大連接數為1000,可以再次查看是否設置成功)
mysql>exit
這種方式有個問題,就是設置的最大連接數只在mysql當前服務進程有效,一旦mysql重啟,又會恢復到初始狀態。因為mysql啟動后的初始化工作是從其配置文件中讀取數據的,而這種方式沒有對
其配置文件做更改。

第二種:通過修改配置文件來修改mysql最大連接數(max_connections)。

這種方式說來很簡單,只要修改MySQL配置文件my.ini 或 my.cnf的參數max_connections,將其改為max_connections=1000,然后重啟MySQL即可。但是有一點最難的就是 my.ini這個文件在哪找
。通常有兩種可能,一個是在安裝目錄下,另一種是在數據文件的目錄下,安裝的時候如果沒有人為改變目錄的話,一般就在 C:/ProgramData/MySQL往下的目錄下,linux系統中一般在/etc目錄下。

其他需注意的:

在編程時,由於用MySQL語句調用數據庫時,在每次之執行語句前,會做一個臨時的變量用來打開數據庫,所以你在使用MySQL語句的時候,記得在每次調用完MySQL之后就關閉MySQL臨時變量。

另外對於訪問量大的,可以考慮直接寫到文本中,根據預測的訪問量,先定義假若是100個文件文件名,需要的時候,再對所有文本文件中的數據進行分析,再導入數據庫。

 

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

怎么進入mysql命令行呢? mysql的安裝目錄下面有個bin目錄,先用命令行進入該目錄,然后用 mysql -uroot -p123456 來登錄(注意:用戶名和密碼不用包含“”)


命令: show processlist;
如果是root帳號,你能看到所有用戶的當前連接。如果是其它普通帳號,只能看到自己占用的連接。


show processlist;只列出前100條,如果想全列出請使用show full processlist;
mysql> show processlist;


命令: show status;
命令:show status like '%下面變量%';
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 服務器工作了多少秒。


1、mysql服務器的線程數查看方法:

show global status like 'Thread%';

 

Threads_created:創建過的線程數,如果發現Threads_created值過大的話,表明MySQL服務器一直在創建線程,這也是比較耗資源,可以適當增加配置文件中thread_cache_size值

2、優化參數thread_cache_size

thread_cache_size:當客戶端斷開之后,服務器處理此客戶的線程將會緩存起來以響應下一個客戶而不是銷毀(前提是緩存數未達上限)

即可以重新利用保存在緩存中線程的數量,當斷開連接時如果緩存中還有空間,那么客戶端的線程將被放到緩存中,如果線程重新被請求,那么請求將從緩存中讀取,如果緩存中是空的或者是新的請
求,那么這個線程將被重新創建,如果有很多新的線程,增加這個值可以改善系統性能。

thread_cache_size大小的設置:

如果是短連接,適當設置大一點,因為短連接往往需要不停創建,不停銷毀,如果大一點,連接線程都處於取用狀態,不需要重新創建和銷毀,所以對性能肯定是比較大的提升。
對於長連接,不能保證連接的穩定性,所以設置這參數還是有一定必要,可能連接池的問題,會導致連接數據庫的不穩定性,也會出現頻繁的創建和銷毀,但這個情況比較少,如果是長連接,可以設
置成小一點,一般在50-100左右。

物理內存設置規則:通過比較Connections 和 Threads_created 狀態的變量,可以看到這個變量的作用。(-->表示要調整的值) 根據物理內存設置規則如下:
1G ---> 8
2G ---> 16
3G ---> 32
>3G ---> 64

查詢thread_cache_size設置

show global status like'thread_cache_size';

優化方法:
1、mysql> set global thread_cache_size=16
2、編輯/etc/my.cnf 更改/添加
thread_concurrency = 16

3、mysql kill線程

mysqladmin start slave stop slave kill某個連接到mysqlServer的線程

 

==================

thread_cache_size功能在mysql數據庫配置文件中是非常重要的一項功能了,如果對thread_cache_size優化做得好我們可以讓服務器跑得非常快,設置不好就會發現很小訪問量就非常的卡哦。

thread_cache_size

查詢進程使用情況
代碼如下 復制代碼
mysql> show global status like ‘Thread%’;
+——————-+———-+
| Variable_name | Value |
+——————-+———-+
| Threads_cached | 26 |
| Threads_connected | 510 |
| Threads_created | 35168165 |
| Threads_running | 459 |
+——————-+———-+
4 rows in set (0.01 sec)
查詢服務器 thread_cache_size配置
代碼如下 復制代碼
mysql> show variables like ‘thread_cache_size’;
+——————-+——-+
| Variable_name | Value |
+——————-+——-+
| thread_cache_size | 32 |
+——————-+——-+
1 row in set (0.00 sec)
如果我們在MySQL服務器配置文件中設置了thread_cache_size,當客戶端斷開之后,
服務器處理此客戶的線程將會緩存起來以響應下一個客戶而不是銷毀(前提是緩存數未達上限)。
Threads_created表示創建過的線程數,如果發現Threads_created值過大的話,
表明 MySQL服務器一直在創建線程,這也是比較耗資源,可以適當增加配置文件中thread_cache_size值,

根據調查發現以上服務器線程緩存thread_cache_size沒有進行設置,或者設置過小,這個值表示可以重新利用保存在緩存中線程的數量,當斷開 連接時如果緩存中還有空間,那么客戶端的線程將被放到
緩存中,如果線程重新被請求,那么請求將從緩存中讀取,如果緩存中是空的或者是新的請求,那么這個線 程將被重新創建,如果有很多新的線程,增加這個值可以改善系統性能.通過比較 Connections
和 Threads_created 狀態的變量,可以看到這個變量的作用。(?>表示要調整的值) 根據物理內存設置規則如下:

1G ?> 8
2G ?> 16
3G ?> 32
>3G ?> 64


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM