久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

MySQL并發(fā)參數(shù)調(diào)整的示例分析

127次閱讀
沒有評論

共計(jì) 2585 個字符,預(yù)計(jì)需要花費(fèi) 7 分鐘才能閱讀完成。

自動寫代碼機(jī)器人,免費(fèi)開通

這篇文章主要介紹了 MySQL 并發(fā)參數(shù)調(diào)整的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓丸趣 TV 小編帶著大家一起了解一下。

Mysql 并發(fā)參數(shù)調(diào)整

從實(shí)現(xiàn)上來說,MySQL Server 是多線程結(jié)構(gòu),包括后臺線程和客戶服務(wù)線程。多線程可以有效利用服務(wù)器資源,提高數(shù)據(jù)庫的并發(fā)性能。在 Mysql 中,控制并發(fā)連接和線程的主要參數(shù)包括 max_connections、back_log、thread_cache_size、table_open_cahce。

1、max_connections

采用 max_connections 控制允許連接到 MySQL 數(shù)據(jù)庫的最大數(shù)量,默認(rèn)值是 151。如果狀態(tài)變量 connection_errors_max_connections 不為零,并且一直增長,則說明不斷有連接請求因數(shù)據(jù)庫連接數(shù)已達(dá)到允許最大值而失敗,這是可以考慮增大 max_connections 的值。
說明:當(dāng)同時連接的請求超過 151 個之后,就沒有可用的連接來處理客戶端的請求了。后面進(jìn)來的這些連接都會處于等待狀態(tài)。等待 MySQL 連接被釋放,如果沒有空閑的連接,就會請求超時

Mysql 最大可支持的連接數(shù),取決于很多因素,包括給定操作系統(tǒng)平臺的線程庫的質(zhì)量、內(nèi)存大小、每個連接的負(fù)荷、CPU 的處理速度,期望的響應(yīng)時間等。在 Linux 平臺下,性能好的服務(wù)器,支持 500-1000 個連接不是難事,需要根據(jù)服務(wù)器性能進(jìn)行評估設(shè)定。

2、back_log

back_log 參數(shù)控制 MySQL 監(jiān)聽 TCP 端口時設(shè)置的積壓請求棧大小。如果 MySql 的連接數(shù)達(dá)到 max_connections 時,新來的請求將會被存在堆棧中,以等待某一連接釋放資源,該堆棧的數(shù)量即 back_log,如果等待連接的數(shù)量超過 back_log,將不被授予連接資源,將會報錯。5.6.6 版本之前默認(rèn)值為 50,之后的版本默認(rèn)為 50 +(max_connections / 5),但最大不超過 900。
說明:當(dāng)客戶端同時發(fā)過來的請求并發(fā)量大于 151,后面過來的請求處于等待的狀態(tài)。那么等待的連接數(shù)可以達(dá)到 back_log。這些新來的請求就會被存儲在堆棧當(dāng)中。以等待某個連接被釋放。該堆棧的數(shù)量就通過 back_log 來設(shè)置。

如果需要數(shù)據(jù)庫在較短的時間內(nèi)處理大量連接請求,可以考慮適當(dāng)增大 back_log 的值。

3、table_open_cache

該參數(shù)用來控制所有 SQL 語句執(zhí)行線程可打開表緩存的數(shù)量,而在執(zhí)行 SQL 語句時,每一個 SQL 執(zhí)行線程至少要打開 1 個表緩存。該參數(shù)的值應(yīng)該根據(jù)設(shè)置的最大連接數(shù) max_connections 以及每個連接執(zhí)行關(guān)聯(lián)查詢中涉及的表的最大數(shù)量來設(shè)定:

max_connections x N;
說明:這個不是針對于某個會話的,這個是針對于所有客戶端執(zhí)行線程。表緩存的數(shù)量,也就是每個 SQL 語句中操作表的個數(shù),比如一條 SQL 語句一般至少操作一張表。操作一張表,就有 1 個表緩存,操作多張表,就有多個表緩存。

mysql  show variables like  table_open_cache% +----------------------------+-------+| Variable_name | Value |+----------------------------+-------+| table_open_cache | 431 || table_open_cache_instances | 16 |+----------------------------+-------+2 rows in set (0.06 sec)

4、thread_cache_size

為了加快連接數(shù)據(jù)庫的速度,MySQL 會緩存一定數(shù)量的客戶服務(wù)線程以備重用,通過參數(shù) thread_cache_size 可控制 MySQL 緩存客戶服務(wù)線程的數(shù)量。
說明:這就相當(dāng)于在 MySQL 的服務(wù)端開啟了一個線程池,客戶端有請求過來,我們在線程池中拿出一個線程來執(zhí)行任務(wù)處理。

mysql  show variables like  thread_cache_size% +-------------------+-------+| Variable_name | Value |+-------------------+-------+| thread_cache_size | 8 |+-------------------+-------+1 row in set (0.00 sec)

一共緩存了 8 個線程信息。

5、innodb_lock_wait_timeout

該參數(shù)是用來設(shè)置 InnoDB 事務(wù)等待行鎖的時間,默認(rèn)值是 50ms,可以根據(jù)需要進(jìn)行動態(tài)設(shè)置。對于需要快速反饋的業(yè)務(wù)系統(tǒng)來說,可以將行鎖的等待時間調(diào)小,以避免事務(wù)長時間掛起;對于后臺運(yùn)行的批量處理程序來說,可以將行鎖的等待時間調(diào)大,以避免發(fā)生大的回滾操作。

說明:如果在比較快速響應(yīng)的業(yè)務(wù)系統(tǒng)中,如果沒有拿到行鎖,就直接報錯即可,不需要讓事務(wù)長時間響應(yīng)。
可以看到,默認(rèn)超時時間為 50ms

mysql  show variables like  innodb_lock_wait_timeout% +--------------------------+-------+| Variable_name | Value |+--------------------------+-------+| innodb_lock_wait_timeout | 50 |+--------------------------+-------+1 row in set (0.01 sec)

    | Value |+————————–+——-+| innodb_lock_wait_timeout | 50    |+————————–+——-+1 row in set (0.01 sec)

感謝你能夠認(rèn)真閱讀完這篇文章,希望丸趣 TV 小編分享的“MySQL 并發(fā)參數(shù)調(diào)整的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持丸趣 TV,關(guān)注丸趣 TV 行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!

向 AI 問一下細(xì)節(jié)

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-12-04發(fā)表,共計(jì)2585字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 灵川县| 奎屯市| 河源市| 崇州市| 台北县| 镇沅| 泗水县| 新余市| 柳林县| 兴隆县| 盐池县| 平南县| 兰西县| 和硕县| 濮阳市| 文安县| 遵义市| 介休市| 潢川县| 鹤庆县| 襄垣县| 德江县| 天津市| 海盐县| 十堰市| 揭西县| 通渭县| 巨鹿县| 赤峰市| 清苑县| 金秀| 宜章县| 烟台市| 安福县| 赤峰市| 雷山县| 利川市| 呼和浩特市| 浪卡子县| 上高县| 嘉峪关市|