婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > MySQL優化之連接優化

MySQL優化之連接優化

熱門標簽:電銷機器人市場價 遂寧400電話申請 dq8 全地圖標注 趙縣地圖標注 地圖標注直通車 永州智能外呼系統 南寧智能電銷機器人價格 邯鄲400電話注冊辦理 哈爾濱云外呼系統運營商

上文MySQL優化之緩存優化 這篇文章中提到了一個很重要的概念,就是show variables是用來表示系統編譯或者配置在my.cnf中的變量值。而show status則稱之為狀態值,顯示的是當前服務實例運行所具有的狀態信息,是一個動態改變的值。因此常用來觀測當前MySQl的運行是否正常,如果不正常那么依靠調整靜態參數來提高MySQL的性能。所以明白這兩個概念的不同,是后面調優的基礎。

MySQL 連接優化

記得有一次在公司內部連接MySQL的時候,總是連接不上。找到DBA后,經過排查原因,是當前MySQL連接數滿了,經過調整后,解決了問題。引發連接數過多的錯誤原因一般有兩個,第一的確是有很多人在連接MySQL,造成連接數用完。第二種是max_connections值過小。

1、連接參數(show variables)

mysql> show variables like '%connect%';
+-----------------------------------------------+-----------------+
| Variable_name                 | Value      |
+-----------------------------------------------+-----------------+
| character_set_connection           | utf8      |
| collation_connection             | utf8_general_ci |
| connect_timeout                | 10       |
| disconnect_on_expired_password        | ON       |
| init_connect                 |         |
| max_connect_errors              | 100       |
| max_connections                | 151       |
| max_user_connections             | 0        |
| performance_schema_session_connect_attrs_size | 512       |
+-----------------------------------------------+-----------------+ 

max_connections是指MySQL服務實例能夠同時接受的的最大并發連接數。MySQL實際上支持最大連接數加一的算法,保障當連接數用完的時候,超級管理員依然可以和服務端建立連接,進行管理。

max_user_connections設置指定賬號的最大并發連接數。

max_connect_errors 當某臺非法主機惡意連接MySQL服務端,遭到的錯誤達到設置值后,MySQL會解決來自該主機的所有連接。但執行flush hosts后會清零。

2、連接狀態(show status)

有一點需要注意的,變量值(show variables)是以小寫字母開頭的,而狀態值(show status)是以大寫字母開頭。這樣區分有助于記憶和分類

mysql> show status like '%connections%';
+-----------------------------------+-------+
| Variable_name           | Value |
+-----------------------------------+-------+
| Connection_errors_max_connections | 0   |
| Connections            | 197  |
| Max_used_connections       | 2   |
+-----------------------------------+-------+

Connection_errors_max_connections 當MySQL的最大并發數大于系統變量(show variables)中max_connections的最大并發數,因此而被拒絕的次數,將會記錄在這個變量里。如果Connection_error_max_connections值比較大,則說明當前系統并發比較高,要考慮調大max_connections的值。

Connections表示MySQL從啟動至今,成功建立連接的連接數,這個值是不斷累加的。

Max_used_connections表示MySQL從啟動至今,同一時刻并發的連接數,取得是最大值。如果這個值大于 max_connections則表明系統經常處于高并發的狀態,應該考慮調大最大并發連接數。

3、連接線程參數(thread variabls and status)

mysql> show variables like 'thread%';
+--------------------+---------------------------+
| Variable_name   | Value           |
+--------------------+---------------------------+
| thread_cache_size | 9             |
| thread_concurrency | 10            |
| thread_handling  | one-thread-per-connection |
| thread_stack    | 262144          |
+--------------------+---------------------------+

thread_cache_size 設置連接線程緩存的數目。這個緩存相當于MySQL線程的緩存池(thread cache pool),將空閑的連接線程放入連接池中緩存起來,而非立即銷毀。當有新的連接請求時,如果連接池中有空閑的連接,則直接使用。否則要重新創建線程。創建線程是一個不小的系統開銷。MySQL的這部分線程處理和Nginx 的線程處理有異曲同工之妙,以后介紹Nginx的線程處理時,會拿來做對比。

thread_handling 默認值是: one-thread-per-connection 表示為每個連接提供或者創建一個線程來處理請求,直至請求完畢,連接銷毀或者存入緩存池。當值是no-threads 時,表示在始終只提供一個線程來處理連接,一般是單機做測試使用的。

thread_stack stack 是堆的意思,由PHP 進程詳解這篇博客,知道進程和線程都是有唯一的ID的,進程的ID系統會維護,二線程的ID,則由具體的線程庫區維護,當進程或者線程休眠的時候,進程的上下文信息要在內存中開辟出一塊區域,保存進程的上下文信息,以便于迅速喚醒程序。默認為MySQL的每個線程設置的堆棧大小為:262144/1024=256k

查看線程狀態信息

mysql> show status like 'Thread%';
+-------------------+-------+
| Variable_name   | Value |
+-------------------+-------+
| Threads_cached  | 1   |
| Threads_connected | 1   |
| Threads_created  | 2   |
| Threads_running  | 1   |
+-------------------+-------+

Thread_cached 當前線程池的線程數

Thread_connected 當前的連接數

Thread_cached: 當前連接線程創建數, 如果這個值過高,可以調整threadcachesize 也就是調整線程緩存池的大小。

Thred_runnint: 當前活躍的線程數。

連接請求堆棧

MySQL在很短的時間內,突然收到很多的連接請求時,MySQL會將不能來得及處理的連接請求保存在堆棧中,以便MySQL后續處理。back_log參數設置了堆棧的大小,可以通過如下命令查看:

mysql> show variables like 'back_log';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| back_log   | 80  |
+---------------+-------+

連接異常

mysql> show status like 'Aborted%';
+------------------+-------+
| Variable_name  | Value |
+------------------+-------+
| Aborted_clients | 0   |
| Aborted_connects | 219  |
+------------------+-------+

Aborted_clients MySQL 客戶機被異常關閉的次數。

Aborted_connects 試圖連接到MySQL服務器而失敗的連接次數。

other

mysql> show status like 'Slow%';
+---------------------+-------+
| Variable_name    | Value |
+---------------------+-------+
| Slow_launch_threads | 0   |
| Slow_queries    | 0   |
+---------------------+-------+

mysql> show variables like 'slow_launch_time';
+------------------+-------+
| Variable_name  | Value |
+------------------+-------+
| slow_launch_time | 2   |
+------------------+-------+

Slow_lunch_threads 創建線程的時間過長,超過slow_launch_time的設定值,則會記錄。

可以通過使用 Connection_error%來查看連接的錯誤狀態信息:

mysql> show status like 'Connection_error%';
+-----------------------------------+-------+
| Variable_name           | Value |
+-----------------------------------+-------+
| Connection_errors_accept     | 0   |
| Connection_errors_internal    | 0   |
| Connection_errors_max_connections | 0   |
| Connection_errors_peer_address  | 0   |
| Connection_errors_select     | 0   |
| Connection_errors_tcpwrap     | 0   |
+-----------------------------------+-------+

Connection_errors_peer_address 查找MySQL客戶機IP地址是發生的錯誤數。

您可能感興趣的文章:
  • MySQL中對表連接查詢的簡單優化教程
  • mysql優化連接數防止訪問量過高的方法
  • MySQL查詢優化:連接查詢排序limit(join、order by、limit語句)介紹
  • MySQL查詢優化:用子查詢代替非主鍵連接查詢實例介紹
  • MySQL查詢優化:連接查詢排序淺談

標簽:浙江 南寧 中衛 上海 張家界 阿里 定西 鄂州

巨人網絡通訊聲明:本文標題《MySQL優化之連接優化》,本文關鍵詞  MySQL,優化,之,連接,MySQL,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《MySQL優化之連接優化》相關的同類信息!
  • 本頁收集關于MySQL優化之連接優化的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 崇信县| 西吉县| 平原县| 宁夏| 公主岭市| 那曲县| 蒲江县| 双柏县| 饶阳县| 丰镇市| 镶黄旗| 浑源县| 乌鲁木齐市| 兴义市| 肃宁县| 临桂县| 蓬莱市| 台东市| 永州市| 清苑县| 县级市| 金乡县| 永靖县| 锡林浩特市| 公安县| 乌拉特中旗| 娄底市| 大竹县| 育儿| 六盘水市| 普兰店市| 沙洋县| 金山区| 洛南县| 合川市| 牡丹江市| 惠东县| 紫阳县| 东至县| 保德县| 全州县|