《Mysql必讀數(shù)據(jù)庫MySQL調(diào)優(yōu)實戰(zhàn)經(jīng)驗總結(jié)》要點:
本文介紹了Mysql必讀數(shù)據(jù)庫MySQL調(diào)優(yōu)實戰(zhàn)經(jīng)驗總結(jié),希望對您有用。如果有疑問,可以聯(lián)系我們。
一、架構(gòu)層面MYSQL學習
1、做主從復制.
2、實現(xiàn)讀寫分離.MYSQL學習
二、系統(tǒng)層面MYSQL學習
1、增加內(nèi)存.
2、硬盤使用固態(tài)硬盤 SSD.
3、給磁盤做 raid0 或者 raid5 以增加磁盤的讀寫速度.
4、可以重新掛載磁盤,并加上 noatime 參數(shù),這樣可以減少磁盤的 I/O.MYSQL學習
三、MySQL本身的優(yōu)化MYSQL學習
1、如果未配置主從同步,可以把 bin-log 功能關(guān)閉,減少磁盤 I/O.
2、在 my.cnf 中加上 skip-name-resolve ,這樣可以避免由于解析主機名延遲造成 M有SQL 執(zhí)行慢.
3、調(diào)整幾個關(guān)鍵的 buffer 和 cache.調(diào)整的依據(jù),主要根據(jù)數(shù)據(jù)庫的狀態(tài)來調(diào)試.如何調(diào)優(yōu)可以參考五.
4、根據(jù)具體的使用場景,選擇合適的存儲引擎.MYSQL學習
四、應用層次MYSQL學習
查看慢查詢?nèi)罩?根據(jù)慢查詢?nèi)罩緝?yōu)化程序中的 SQL 語句,比如增加索引MYSQL學習
五、調(diào)整關(guān)鍵的buffer和cacheMYSQL學習
1、key_buffer_sizeMYSQL學習
首先可以根據(jù)系統(tǒng)的內(nèi)存大小設定它,大概的一個參考值:1G以下內(nèi)存設定 128M;2G/256M; 4G/384M; 8G/1024M;16G/2048M.這個值可以通過檢查狀態(tài)值 Key_read_requests 和 Key_reads,可以知道 key_buffer_size 設置是否合理.比例 key_reads / key_read_requests 應該盡可能的低,至少是 1:100,1:1000更好(上述狀態(tài)值可以使用?SHOW STATUS LIKE 'key_read%'?獲得).注意:該參數(shù)值設置的過大反而會是服務器整體效率降低!MYSQL學習
2、table_open_cacheMYSQL學習
打開一個表的時候,會臨時把表里面的數(shù)據(jù)放到這部分內(nèi)存中,一般設置成 1024 就夠了,它的大小我們可以通過這樣的方法來衡量: 如果你發(fā)現(xiàn) open_tables 等于 table_cache,并且 opened_tables 在不斷增長,那么你就需要增加 table_cache 的值了(上述狀態(tài)值可以使用 SHOW STATUS LIKE 'Open%tables' 獲得).注意,不能盲目地把 table_cache 設置成很大的值.如果設置得太高,可能會造成文件描述符不足,從而造成性能不穩(wěn)定或者連接失敗.MYSQL學習
3、sort_buffer_sizeMYSQL學習
查詢排序時所能使用的緩沖區(qū)大小,該參數(shù)對應的分配內(nèi)存是每連接獨占! 如果有 100 個連接,那么實際分配的總共排序緩沖區(qū)大小為100 × 4 = 400MB.所以,對于內(nèi)存在 4GB 左右的服務器推薦設置為:4-8M.MYSQL學習
4、read_buffer_sizeMYSQL學習
讀查詢操作所能使用的緩沖區(qū)大小.和 sort_buffer_size 一樣,該參數(shù)對應的分配內(nèi)存也是每連接獨享!MYSQL學習
5、join_buffer_sizeMYSQL學習
聯(lián)合查詢操作所能使用的緩沖區(qū)大小,和 sort_buffer_size 一樣,該參數(shù)對應的分配內(nèi)存也是每連接獨享!MYSQL學習
6、myisam_sort_buffer_sizeMYSQL學習
這個緩沖區(qū)主要用于修復表過程中排序索引使用的內(nèi)存或者是建立索引時排序索引用到的內(nèi)存大小,一般 4G 內(nèi)存給 64M 即可.MYSQL學習
7、query_cache_sizeMYSQL學習
MySQL查詢操作緩沖區(qū)的大小,通過以下做法調(diào)整:SHOW STATUS LIKE ‘Qcache%’; 如果Qcache_lowmem_prunes該參數(shù)記錄有多少條查詢因為內(nèi)存不足而被移除出查詢緩存.通過這個值,用戶可以適當?shù)恼{(diào)整緩存大小.如果該值非常大,則表明經(jīng)常出現(xiàn)緩沖不夠的情況,需要增加緩存大小Qcache_free_memory:查詢緩存的內(nèi)存大小,通過這個參數(shù)可以很清晰的知道當前系統(tǒng)的查詢內(nèi)存是否夠用,是多了,還是不夠用,我們可以根據(jù)實際情況做出調(diào)整.一般情況下 4G 內(nèi)存設置 64M 足夠了.MYSQL學習
8、thread_cache_sizeMYSQL學習
表示可以重新利用保存在緩存中線程的數(shù),參考如下值:1G??—> 8; 2G??—> 16; 3G??—> 32; 3G??—> 64
除此之外,還有幾個比較關(guān)鍵的參數(shù)MYSQL學習
9、thread_concurrencyMYSQL學習
這個值設置為 CPU 核數(shù)的2倍即可.MYSQL學習
10、wait_timeoutMYSQL學習
表示空閑的連接超時時間,默認是:28800s,這個參數(shù)是和 interactive_timeout 一起使用的,也就是說要想讓 wait_timeout 生效,必須同時設置 interactive_timeout,建議他們兩個都設置為10.MYSQL學習
11、max_connect_errorsMYSQL學習
是一個 MySQL 中與安全有關(guān)的計數(shù)器值,它負責阻止過多嘗試失敗的客戶端以防止暴力破解密碼的情況.與性能并無太大關(guān)系.為了避免一些錯誤我們一般都設置比較大,比如說10000.MYSQL學習
12、max_connectionsMYSQL學習
最大的連接數(shù),根據(jù)業(yè)務請求量適當調(diào)整,設置 500 足夠.MYSQL學習
13、max_user_connectionsMYSQL學習
是指同一個賬號能夠同時連接到 mysql 服務的最大連接數(shù).設置為 0 表示不限制.通常我們設置為 100 足夠.MYSQL學習
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/5769.html