MySQL修改最大連接數的兩個方式

解決方式一:通過命令
可以通過set GLOBAL max_connections=100; 命令將最大連接數設置爲100,此方法是即時生效的,不需要重啓mysql服務。
解決方式二:通過修改配置文件
windows下的文件名叫做my.ini,linux下文件名叫my.cnf(一般在/etc/my.cnf目錄下)
配置:max_connections=100
這兩種方式的區別
1.通過修改配置文件,需要重啓服務;而用命令修改,即時生效。
2.採用修改配置文件的方式,更穩定可靠。因爲如果配置文件中有max_connections=100,再去用命令修改的話,一旦重啓mysql服務後,會重新以配置文件中指定的連接數爲準。
3.通過命令修改,重啓mysql服務後配置失效,需要重新配置;而配置文件的方式不存在這個問題。
使用場景:我們經常會遇見“MySQL: ERROR 1040: Too many connections”的情況,一種是訪問量確實很高,MySQL服務器抗不住,這個時候就要考慮增加從服務器分散讀寫壓力,另外一種情況是MySQL配置文件中max_connections值過小。
數據庫連接池最小連接數和最大連接數:
最小連接數是連接池一直保持的數據連接。如果應用程序對數據庫連接的使用量不大,將會有大量的數據庫連接資源被浪費掉。
MySQL默認的最大連接數爲100,MySQL服務器允許的最大連接數16384
最大連接數是連接池能申請的最大連接數。如果數據連接請求超過此數,後面的數據連接請求將被加入到等待隊列中,這會影響之後的數據庫操作。如果最小連接數與最大連接數相差太大,那麼,最先的連接請求將會獲利,之後超過最小連接數量的連接請求等價於建立一個新的數據庫連接。不過,這些大於最小連接數的數據庫連接在使用完不會馬上被釋放,它將被放到連接池中等待重複使用或是空閒超時後被釋放。
MySQL服務器的連接數並不是要達到最大的100%爲好,要具體問題具體分析
mysql> show variables like 'max_connections';  //查看配置的最大連接數是多少
mysql> show global status like 'Max_used_connections';  //查看歷史最大連接數是多少
比較理想的設置是:Max_used_connections / max_connections * 100% ≈ 85%
對於併發較大的系統,建立一次連接然後緩存起來連續使用,直到程序結束等情況下再釋放連接,就能夠將系統資源集中在對數據庫操作的處理上,從而大大提高性能。通常情況下將數據連接的建立和斷開委託給一種能夠數據庫連接池的組件或服務進行管理。而DBCP, C3p0, Proxool等都是常用的開源的連接池組件。
在修改最大連接數的時候會有這樣一個疑問—這個值是不是越大越好,或者設置爲多大才合適?這個參數的大小要綜合很多因素來考慮,比如使用的平臺所支持的線程庫數量、服務器的配置(特別是內存大小)、每個連接佔用資源(內存和負載)的多少、系統需要的響應時間等。可以在global或session範圍內修改這個參數。連接數的增加會帶來很多連鎖反應,需要在實際中避免由此引發的負面影響。
MySQL爲每個連接分配線程來處理,可以通過threads_connected參數查看當前分配的線程數量:

mysql> show status like '%thread%';


比較threads_connected參數和前面提到的max_connections參數,也可以作爲目前的系統負載的參照,決定是否需要修改連接數。

其它配置參數如下(my.ini):

1.default-character-set=utf8
2.character-set-server=utf8
3.default-storage-engine=INNODB
4.max_connections=100
5.query_cache_size=0
6.table_cache=256
7.tmp_table_size=18M
8.thread_cache_size=8
9.myisam_max_sort_file_size=100G
10.myisam_sort_buffer_size=35M
11.key_buffer_size=25M
12.read_buffer_size=64K
13.read_rnd_buffer_size=256K
14.sort_buffer_size=256K
15.innodb_additional_mem_pool_size=2M
16.innodb_flush_log_at_trx_commit=1
17.innodb_log_buffer_size=1M
18.innodb_buffer_pool_size=47M
19.innodb_log_file_size=24M
20.innodb_thread_concurrency=10

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章