< 返回新聞公共列表

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

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

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


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


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

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

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

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

chmod +x mysqltuner.pl

第3步:運行腳本

./mysqltuner.pl


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

1、key_buffer

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

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


2、innodb_buffer_pool_size

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

該值僅適用于使用InnoDB作為其sql存儲引擎的sql服務。


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

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


4、線程緩存大小

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


5、最大連接數(shù)

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

這些選項并沒有在這里結(jié)束,但在將默認值以外的值應用于其他sql 配置參數(shù)之前要小心,因為如果我們擁有的工作負載類型和您應用的配置不匹配,它們可能會導致無法預料的問題。


6、尖端:

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

每次進行更改時重新啟動MySQL服務,因為它會幫助我們決定哪些特定更改可能有效或無效。

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


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


/template/Home/Zkeys724/PC/Static