溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

mysql配置文件調(diào)優(yōu)

發(fā)布時(shí)間:2020-09-01 10:04:44 來(lái)源:網(wǎng)絡(luò) 閱讀:205 作者:limingyu0312 欄目:MySQL數(shù)據(jù)庫(kù)


mysql配置文件/etc/my.cnf

核心文件是mysqld這部分:

mysql配置文件調(diào)優(yōu)



mysql調(diào)優(yōu):


mysql調(diào)優(yōu)可以從幾個(gè)方面來(lái)做:


1.架構(gòu)層:

    做從庫(kù),實(shí)現(xiàn)讀寫分離


2.系統(tǒng)層次:

    增加內(nèi)存;

    給磁盤做raid0或raid5,以增加磁盤的讀寫速度;

    可以重新掛載磁盤,并加上noatime參數(shù),這樣可以減少磁盤的i/o?。?br />


3.mysql本身調(diào)優(yōu):

    1.如果未配置主從同步,可以把bin-log功能關(guān)閉,減少磁盤i/o

    2.在my.cnf中加上skip-name-resove,這樣可以避免由于解析主機(jī)名延遲造成mysql執(zhí)行慢

    3.調(diào)整幾個(gè)關(guān)鍵的buffer和cache ,調(diào)整的依據(jù),主要根據(jù)數(shù)據(jù)庫(kù)的狀態(tài)來(lái)調(diào)試。


4.應(yīng)用層次:

    查看慢查詢?nèi)罩?,根?jù)慢查詢?nèi)罩緝?yōu)化程序中的sql語(yǔ)句,比如增加索引


5.調(diào)整幾個(gè)關(guān)鍵的buffer和cache

    

    1. key_buffer_size  首先可以根據(jù)系統(tǒng)的內(nèi)存大小設(shè)定它,大概的一個(gè)參考值:1G以下內(nèi)存設(shè)定128M;2G/256M; 4G/384M;8G/1024M;16G/2048M.這個(gè)值可以通過(guò)檢查狀態(tài)值Key_read_requests和 Key_reads,可以知道key_buffer_size設(shè)置是否合理。比例key_reads / key_read_requests應(yīng)該盡可能的低,至少是1:100,1:1000更好(上述狀態(tài)值可以使用SHOW STATUS LIKE ‘key_read%’獲得)。注意:該參數(shù)值設(shè)置的過(guò)大反而會(huì)是服務(wù)器整體效率降低!


    2. table_open_cache 打開一個(gè)表的時(shí)候,會(huì)臨時(shí)把表里面的數(shù)據(jù)放到這部分內(nèi)存中,一般設(shè)置成1024就夠了,它的大小我們可以通過(guò)這樣的方法來(lái)衡量: 如果你發(fā)現(xiàn) open_tables等于table_cache,并且opened_tables在不斷增長(zhǎng),那么你就需要增加table_cache的值了(上述狀態(tài)值可以使用SHOW STATUS LIKE ‘Open%tables’獲得)。注意,不能盲目地把table_cache設(shè)置成很大的值。如果設(shè)置得太高,可能會(huì)造成文件描述符不足,從而造成性能不穩(wěn)定或者連接失敗。


    3. sort_buffer_size 查詢排序時(shí)所能使用的緩沖區(qū)大小,該參數(shù)對(duì)應(yīng)的分配內(nèi)存是每連接獨(dú)占!如果有100個(gè)連接,那么實(shí)際分配的總共排序緩沖區(qū)大小為100 × 4 = 400MB。所以,對(duì)于內(nèi)存在4GB左右的服務(wù)器推薦設(shè)置為4-8M。


    4. read_buffer_size 讀查詢操作所能使用的緩沖區(qū)大小。和sort_buffer_size一樣,該參數(shù)對(duì)應(yīng)的分配內(nèi)存也是每連接獨(dú)享!


    5. join_buffer_size 聯(lián)合查詢操作所能使用的緩沖區(qū)大小,和sort_buffer_size一樣,該參數(shù)對(duì)應(yīng)的分配內(nèi)存也是每連接獨(dú)享!


    6. myisam_sort_buffer_size 這個(gè)緩沖區(qū)主要用于修復(fù)表過(guò)程中排序索引使用的內(nèi)存或者是建立索引時(shí)排序索引用到的內(nèi)存大小,一般4G內(nèi)存給64M即可。


    7. query_cache_size MySQL查詢操作緩沖區(qū)的大小,通過(guò)以下做法調(diào)整:SHOW STATUS LIKE ‘Qcache%’; 如果Qcache_lowmem_prunes該參數(shù)記錄有多少條查詢因?yàn)閮?nèi)存不足而被移除出查詢緩存。通過(guò)這個(gè)值,用戶可以適當(dāng)?shù)恼{(diào)整緩存大小。如果該值非常大,則表明經(jīng)常出現(xiàn)緩沖不夠的情況,需要增加緩存大小;Qcache_free_memory:查詢緩存的內(nèi)存大小,通過(guò)這個(gè)參數(shù)可以很清晰的知道當(dāng)前系統(tǒng)的查詢內(nèi)存是否夠用,是多了,還是不夠用,我們可以根據(jù)實(shí)際情況做出調(diào)整。一般情況下4G內(nèi)存設(shè)置64M足夠了。


    8. thread_cache_size 表示可以重新利用保存在緩存中線程的數(shù),參考如下值:1G  —> 8 2G  —> 16 3G  —> 32  >3G  —> 64

    

    除此之外,還有幾個(gè)比較關(guān)鍵的參數(shù):


    9. thread_concurrency 這個(gè)值設(shè)置為cpu核數(shù)的2倍即可


    10. wait_timeout 表示空閑的連接超時(shí)時(shí)間,默認(rèn)是28800s,這個(gè)參數(shù)是和interactive_timeout一起使用的,也就是說(shuō)要想讓wait_timeout 生效,必須同時(shí)設(shè)置interactive_timeout,建議他們兩個(gè)都設(shè)置為10


    11. max_connect_errors 是一個(gè)MySQL中與安全有關(guān)的計(jì)數(shù)器值,它負(fù)責(zé)阻止過(guò)多嘗試失敗的客戶端以防止暴力破解密碼的情況。與性能并無(wú)太大關(guān)系。為了避免一些錯(cuò)誤我們一般都設(shè)置比較大,比如說(shuō)10000


    12. max_connections 最大的連接數(shù),根據(jù)業(yè)務(wù)請(qǐng)求量適當(dāng)調(diào)整,設(shè)置500足夠


    13. max_user_connections 是指同一個(gè)賬號(hào)能夠同時(shí)連接到mysql服務(wù)的最大連接數(shù)。設(shè)置為0表示不限制。通常我們?cè)O(shè)置為100足夠


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

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI