欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL優(yōu)化之連接優(yōu)化

 更新時(shí)間:2017年03月12日 11:07:25   作者:roverliang  
MySQL連接優(yōu)化主要指客戶端連接數(shù)據(jù)庫以及數(shù)據(jù)庫為響應(yīng)客戶端的請(qǐng)求而打開數(shù)據(jù)表和索引的過程中涉及到的參數(shù)調(diào)整。下面我們來詳細(xì)的探討下

上文MySQL優(yōu)化之緩存優(yōu)化 這篇文章中提到了一個(gè)很重要的概念,就是show variables是用來表示系統(tǒng)編譯或者配置在my.cnf中的變量值。而show status則稱之為狀態(tài)值,顯示的是當(dāng)前服務(wù)實(shí)例運(yùn)行所具有的狀態(tài)信息,是一個(gè)動(dòng)態(tài)改變的值。因此常用來觀測(cè)當(dāng)前MySQl的運(yùn)行是否正常,如果不正常那么依靠調(diào)整靜態(tài)參數(shù)來提高M(jìn)ySQL的性能。所以明白這兩個(gè)概念的不同,是后面調(diào)優(yōu)的基礎(chǔ)。

MySQL 連接優(yōu)化

記得有一次在公司內(nèi)部連接MySQL的時(shí)候,總是連接不上。找到DBA后,經(jīng)過排查原因,是當(dāng)前MySQL連接數(shù)滿了,經(jīng)過調(diào)整后,解決了問題。引發(fā)連接數(shù)過多的錯(cuò)誤原因一般有兩個(gè),第一的確是有很多人在連接MySQL,造成連接數(shù)用完。第二種是max_connections值過小。

1、連接參數(shù)(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服務(wù)實(shí)例能夠同時(shí)接受的的最大并發(fā)連接數(shù)。MySQL實(shí)際上支持最大連接數(shù)加一的算法,保障當(dāng)連接數(shù)用完的時(shí)候,超級(jí)管理員依然可以和服務(wù)端建立連接,進(jìn)行管理。

max_user_connections設(shè)置指定賬號(hào)的最大并發(fā)連接數(shù)。

max_connect_errors 當(dāng)某臺(tái)非法主機(jī)惡意連接MySQL服務(wù)端,遭到的錯(cuò)誤達(dá)到設(shè)置值后,MySQL會(huì)解決來自該主機(jī)的所有連接。但執(zhí)行flush hosts后會(huì)清零。

2、連接狀態(tài)(show status)

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

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

Connection_errors_max_connections 當(dāng)MySQL的最大并發(fā)數(shù)大于系統(tǒng)變量(show variables)中max_connections的最大并發(fā)數(shù),因此而被拒絕的次數(shù),將會(huì)記錄在這個(gè)變量里。如果Connection_error_max_connections值比較大,則說明當(dāng)前系統(tǒng)并發(fā)比較高,要考慮調(diào)大max_connections的值。

Connections表示MySQL從啟動(dòng)至今,成功建立連接的連接數(shù),這個(gè)值是不斷累加的。

Max_used_connections表示MySQL從啟動(dòng)至今,同一時(shí)刻并發(fā)的連接數(shù),取得是最大值。如果這個(gè)值大于 max_connections則表明系統(tǒng)經(jīng)常處于高并發(fā)的狀態(tài),應(yīng)該考慮調(diào)大最大并發(fā)連接數(shù)。

3、連接線程參數(shù)(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 設(shè)置連接線程緩存的數(shù)目。這個(gè)緩存相當(dāng)于MySQL線程的緩存池(thread cache pool),將空閑的連接線程放入連接池中緩存起來,而非立即銷毀。當(dāng)有新的連接請(qǐng)求時(shí),如果連接池中有空閑的連接,則直接使用。否則要重新創(chuàng)建線程。創(chuàng)建線程是一個(gè)不小的系統(tǒng)開銷。MySQL的這部分線程處理和Nginx 的線程處理有異曲同工之妙,以后介紹Nginx的線程處理時(shí),會(huì)拿來做對(duì)比。

thread_handling 默認(rèn)值是: one-thread-per-connection 表示為每個(gè)連接提供或者創(chuàng)建一個(gè)線程來處理請(qǐng)求,直至請(qǐng)求完畢,連接銷毀或者存入緩存池。當(dāng)值是no-threads 時(shí),表示在始終只提供一個(gè)線程來處理連接,一般是單機(jī)做測(cè)試使用的。

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

查看線程狀態(tài)信息

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

Thread_cached 當(dāng)前線程池的線程數(shù)

Thread_connected 當(dāng)前的連接數(shù)

Thread_cached: 當(dāng)前連接線程創(chuàng)建數(shù), 如果這個(gè)值過高,可以調(diào)整threadcachesize 也就是調(diào)整線程緩存池的大小。

Thred_runnint: 當(dāng)前活躍的線程數(shù)。

連接請(qǐng)求堆棧

MySQL在很短的時(shí)間內(nèi),突然收到很多的連接請(qǐng)求時(shí),MySQL會(huì)將不能來得及處理的連接請(qǐng)求保存在堆棧中,以便MySQL后續(xù)處理。back_log參數(shù)設(shè)置了堆棧的大小,可以通過如下命令查看:

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 客戶機(jī)被異常關(guān)閉的次數(shù)。

Aborted_connects 試圖連接到MySQL服務(wù)器而失敗的連接次數(shù)。

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 創(chuàng)建線程的時(shí)間過長(zhǎng),超過slow_launch_time的設(shè)定值,則會(huì)記錄。

可以通過使用 Connection_error%來查看連接的錯(cuò)誤狀態(tài)信息:

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客戶機(jī)IP地址是發(fā)生的錯(cuò)誤數(shù)。

相關(guān)文章

  • MySQL聯(lián)表查詢的簡(jiǎn)單示例

    MySQL聯(lián)表查詢的簡(jiǎn)單示例

    這篇文章主要給大家介紹了關(guān)于MySQL聯(lián)表查詢的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MySQL具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • 關(guān)于mysql的時(shí)區(qū)問題

    關(guān)于mysql的時(shí)區(qū)問題

    這篇文章主要介紹了關(guān)于mysql的時(shí)區(qū)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家,
    2023-11-11
  • mysql zip archive 版本(5.7.19)安裝教程詳細(xì)介紹

    mysql zip archive 版本(5.7.19)安裝教程詳細(xì)介紹

    這篇文章主要介紹了mysql zip archive 版本(5.7.19)安裝教程詳細(xì)介紹,需要的朋友可以參考下
    2017-10-10
  • 解決MySQL?Varchar?類型尾部空格的問題

    解決MySQL?Varchar?類型尾部空格的問題

    這篇文章主要介紹了MySQL?Varchar?類型尾部空格,在這里需要注意的是?binary?排序規(guī)則的?pad?屬性為?NO?PAD,這里其實(shí)不是個(gè)例外,因?yàn)?char、varchar?和?text?類型都?xì)w類為?nonbinary,感興趣的朋友跟隨小編一起學(xué)習(xí)下吧
    2022-04-04
  • MySQL中的排序規(guī)則

    MySQL中的排序規(guī)則

    這篇文章主要介紹了MySQL中的排序規(guī)則,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • mysql 使用B+樹索引有哪些優(yōu)勢(shì)

    mysql 使用B+樹索引有哪些優(yōu)勢(shì)

    這篇文章主要介紹了mysql 使用B+樹索引有哪些優(yōu)勢(shì),幫助大家更好的理解和使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2021-01-01
  • MySQL 查詢某個(gè)字段含有字母數(shù)字的值示例詳解

    MySQL 查詢某個(gè)字段含有字母數(shù)字的值示例詳解

    在本文中,我們?cè)敿?xì)介紹了如何在 MySQL 中查詢某個(gè)字段含有字母和數(shù)字的值,我們首先介紹了正則表達(dá)式的基礎(chǔ)知識(shí),然后通過五個(gè)具體示例展示了如何應(yīng)用這些知識(shí),通過這些示例,我們可以看到正則表達(dá)式在處理復(fù)雜字符串模式匹配時(shí)的強(qiáng)大功能,感興趣的朋友跟隨小編一起看看吧
    2024-05-05
  • MySQL 創(chuàng)建主鍵,外鍵和復(fù)合主鍵的語句

    MySQL 創(chuàng)建主鍵,外鍵和復(fù)合主鍵的語句

    MySQL 創(chuàng)建主鍵,外鍵和復(fù)合主鍵的方法,需要的朋友可以參考下。
    2009-12-12
  • Mysql中創(chuàng)建高性能索引詳解

    Mysql中創(chuàng)建高性能索引詳解

    這篇文章主要介紹了Mysql中創(chuàng)建高性能索引詳解,索引相信大家都聽說過,但是真正會(huì)用的又有幾人,平時(shí)工作中寫SQL真的會(huì)考慮到這條SQL如何能夠用上索引,如何能夠提升執(zhí)行效率,文本就來詳細(xì)解讀如何創(chuàng)建高性能索引,需要的朋友可以參考下
    2023-07-07
  • MySQL常見錯(cuò)誤有哪些_MySQL常見錯(cuò)誤的快速解決方法

    MySQL常見錯(cuò)誤有哪些_MySQL常見錯(cuò)誤的快速解決方法

    MySQL常見錯(cuò)誤有哪些呢?下面小編就為大家?guī)硪黄狹ySQL常見錯(cuò)誤的快速解決方法?,F(xiàn)在分享個(gè)大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-03-03

最新評(píng)論