< 返回新聞公共列表

如何調(diào)整和優(yōu)化MySQL?

發(fā)布時(shí)間:2023-03-02 14:55:50

如何調(diào)整和優(yōu)化MySQL? 需要用到MySQL調(diào)諧器,這是一個(gè)用Perl 語言編寫的漂亮的小腳本,可讓我們驗(yàn)證MySQL安裝并提供簡短報(bào)告以及一些改進(jìn)性能的建議。


如何調(diào)整和優(yōu)化MySQL?.png


下面,我們來了解運(yùn)行MySQL調(diào)諧器的步驟:

第1步:從此處下載調(diào)諧器腳本:

wget https://github.com/major/MySQLTuner-perl/blob/461c8fb60e032ce29172393d38183549331fa840/mysqltuner.pl

第2步:提供 mysqltuner.pl 文件執(zhí)行權(quán)限以運(yùn)行腳本。

chmod +x mysqltuner.pl

第3步:運(yùn)行腳本

./mysqltuner.pl


腳本完成后,那么如何調(diào)整和優(yōu)化MySQL?可以查看建議并根據(jù)我們的用例決定實(shí)施。它們是:

1、key_buffer

通過更改key_buffer參數(shù),我們可以控制對(duì)MySQL的內(nèi)存分配。假設(shè)我們有那么多可用內(nèi)存,這可以顯著加快我們的數(shù)據(jù)庫速度。一般的經(jīng)驗(yàn)法則是,當(dāng)使用MyISAM 表引擎時(shí),key_buffer大小不應(yīng)占用超過系統(tǒng)內(nèi)存的25%,而對(duì)于InnoDB,則最多可達(dá)70%。如果這個(gè)值設(shè)置得太高,會(huì)浪費(fèi)資源。

根據(jù)MySQL官方文檔,具有256MB(或更多)RAM且包含許多表的服務(wù)器,建議使用64M key_buffer值,而默認(rèn)值為 16MB。我們可以修改更大的值并為自己的特定服務(wù)器找到最佳點(diǎn),但在決定之前始終監(jiān)控服務(wù)器負(fù)載統(tǒng)計(jì)信息。


2、innodb_buffer_pool_size

InnoDB緩沖池是優(yōu)化MySQL/MariaDB的關(guān)鍵組件。它存儲(chǔ)數(shù)據(jù)和索引。我們通??梢宰屗M可能大,以便在內(nèi)存中保留盡可能多的數(shù)據(jù)和索引,減少磁盤IO,這是主要瓶頸。因此,假設(shè)服務(wù)器專門用于處理/處理sql查詢,則典型值介于系統(tǒng) RAM的70%到80%之間。

該值僅適用于使用InnoDB作為其sql存儲(chǔ)引擎的sql服務(wù)。


3、最大允許數(shù)據(jù)包

使用此參數(shù),我們可以設(shè)置數(shù)據(jù)包的最大大小。對(duì)于外行來說,數(shù)據(jù)包是單個(gè)SQL狀態(tài)、發(fā)送到客戶端的單行,或者它可以是從源數(shù)據(jù)庫發(fā)送到副本的日志。如果我們的用例涉及處理大數(shù)據(jù)包,最好將此值增加到最大數(shù)據(jù)包的大小。如果設(shè)置得太小,我們會(huì)在錯(cuò)誤日志中收到錯(cuò)誤消息。


4、線程緩存大小

如果thread_cache_size設(shè)置為0,它實(shí)際上是關(guān)閉的,任何新連接都需要為其創(chuàng)建一個(gè)新線程。當(dāng)連接關(guān)閉時(shí),相應(yīng)的線程被銷毀。thread_cache_size 參數(shù)控制要存儲(chǔ)在緩存中的未使用線程的數(shù)量,直到它們可以重新用于連接。如果我們每分鐘接收數(shù)百個(gè)連接,則應(yīng)增加此值,以便大多數(shù)連接可以使用緩存的線程。


5、最大連接數(shù)

該值設(shè)置最大并發(fā)連接數(shù)。最好在設(shè)置此數(shù)字之前考慮我們過去擁有的最大連接數(shù),以便在該上限數(shù)字和max_connections值之間有一個(gè)緩沖區(qū)。請(qǐng)記住,這并不表示在任何給定時(shí)間我們網(wǎng)站上的最大用戶數(shù),而是同時(shí)收到的最大請(qǐng)求數(shù)。

這些選項(xiàng)并沒有在這里結(jié)束,但在將默認(rèn)值以外的值應(yīng)用于其他sql 配置參數(shù)之前要小心,因?yàn)槿绻覀儞碛械墓ぷ髫?fù)載類型和您應(yīng)用的配置不匹配,它們可能會(huì)導(dǎo)致無法預(yù)料的問題。


6、尖端:

在開始修改MySQL參數(shù)之前,請(qǐng)務(wù)必備份/etc/my.cnf

每次進(jìn)行更改時(shí)重新啟動(dòng)MySQL服務(wù),因?yàn)樗鼤?huì)幫助我們決定哪些特定更改可能有效或無效。

實(shí)施MySQL調(diào)諧器建議不是一次性修復(fù),我們必須根據(jù)正在處理的數(shù)據(jù)量或隨著系統(tǒng)的垂直擴(kuò)展定期優(yōu)化服務(wù)參數(shù)。


以上是調(diào)整和優(yōu)化MySQL的建議,希望能幫助到大家!


/template/Home/Zkeys724/PC/Static