mysql調優的層面

2021-07-14 22:56:29 字數 2238 閱讀 7549

mysql調優可以從幾個方面來做:

1. 架構層:

做從庫,實現讀寫分離;

2.系統層次:

增加記憶體;

給磁碟做raid0或者raid5以增加磁碟的讀寫速度;

可以重新掛載磁碟,並加上noatime引數,這樣可以減少磁碟的i/o;

3. mysql本身調優:

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

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

(3) 調整幾個關鍵的buffer和cache。調整的依據,主要根據資料庫的狀態來除錯。如何調優可以參考5.

4. 應用層次:

檢視慢查詢日誌,根據慢查詢日誌優化程式中的sql語句,比如增加索引

5. 調整幾個關鍵的buffer和cache

1) key_buffer_size  首先可以根據系統的記憶體大小設定它,大概的乙個參考值:1g以下記憶體設定128m;2g/256m; 4g/384m;8g/1024m;16g/2048m.這個值可以通過檢查狀態值key_read_requests和 key_reads,可以知道key_buffer_size設定是否合理。比例key_reads / key_read_requests應該盡可能的低,至少是1:100,1:1000更好(上述狀態值可以使用show status like 『key_read%』獲得)。注意:該引數值設定的過大反而會是伺服器整體效率降低!

2) table_open_cache 開啟乙個表的時候,會臨時把錶裡面的資料放到這部分記憶體中,一般設定成1024就夠了,它的大小我們可以通過這樣的方法來衡量: 如果你發現 open_tables等於table_cache,並且opened_tables在不斷增長,那麼你就需要增加table_cache的值了(上述狀態值可以使用show status like 『open%tables』獲得)。注意,不能盲目地把table_cache設定成很大的值。如果設定得太高,可能會造成檔案描述符不足,從而造成效能不穩定或者連線失敗。

3) sort_buffer_size 查詢排序時所能使用的緩衝區大小,該引數對應的分配記憶體是每連線獨佔!如果有100個連線,那麼實際分配的總共排序緩衝區大小為100 × 4 = 400mb。所以,對於內存在4gb左右的伺服器推薦設定為4-8m。

4) read_buffer_size 讀查詢操作所能使用的緩衝區大小。和sort_buffer_size一樣,該引數對應的分配記憶體也是每連線獨享!

5) join_buffer_size 聯合查詢操作所能使用的緩衝區大小,和sort_buffer_size一樣,該引數對應的分配記憶體也是每連線獨享!

6) myisam_sort_buffer_size 這個緩衝區主要用於修復表過程中排序索引使用的記憶體或者是建立索引時排序索引用到的記憶體大小,一般4g記憶體給64m即可。

7) query_cache_size mysql查詢操作緩衝區的大小,通過以下做法調整:show status like 『qcache%』; 如果qcache_lowmem_prunes該引數記錄有多少條查詢因為記憶體不足而被移除出查詢快取。通過這個值,使用者可以適當的調整快取大小。如果該值非常大,則表明經常出現緩衝不夠的情況,需要增加快取大小;qcache_free_memory:查詢快取的記憶體大小,通過這個引數可以很清晰的知道當前系統的查詢記憶體是否夠用,是多了,還是不夠用,我們可以根據實際情況做出調整。一般情況下4g記憶體設定64m足夠了。

8) thread_cache_size 表示可以重新利用儲存在快取中線程的數,參考如下值:1g  —> 8 2g  —> 16 3g  —> 32  >3g  —> 64

除此之外,還有幾個比較關鍵的引數:

9) thread_concurrency 這個值設定為cpu核數的2倍即可

10) wait_timeout 表示空閒的連線超時時間,預設是28800s,這個引數是和interactive_timeout一起使用的,也就是說要想讓wait_timeout 生效,必須同時設定interactive_timeout,建議他們兩個都設定為10

11) max_connect_errors 是乙個mysql中與安全有關的計數器值,它負責阻止過多嘗試失敗的客戶端以防止暴力破解密碼的情況。與效能並無太大關係。為了避免一些錯誤我們一般都設定比較大,比如說10000 

12) max_connections 最大的連線數,根據業務請求量適當調整,設定500足夠

13) max_user_connections 是指同乙個賬號能夠同時連線到mysql服務的最大連線數。設定為0表示不限制。通常我們設定為100足夠 

mysql 調優 Mysql調優

表設計 1 禁止使用外來鍵 2 多表中的相同列,必須保證列定義一致 3 國內表預設使用innodb,表字符集預設使用gbk,國際預設使用utf8的表 4 表必須包含gmt create和gmt modified欄位,即表必須包含記錄建立時間和修改時間的字段 5 單錶一到兩年內資料量超過500w或資料...

mysql卡的調優思路 MySQL效能調優思路

1.mysql效能調優思路 如果一台伺服器出現長時間負載過高 週期性負載過大,或偶爾卡住如何來處理?是週期性的變化還是偶爾問題?是伺服器整體效能的問題,還是某單條語句的問題?具體到單條語句,這條語句是在等待上花的時間,還是查詢上花的時間?1.1.監測並觀察伺服器的狀態.觀察伺服器狀態,一般用如下2個...

mysql調優書籍 mysql調優從書寫sql開始

理論知識 mysql 的執行機制 mysql 的sql關鍵字執行順序 1 mysql 的優化方案有哪些?1 mysql 資料庫常見的優化手段分為三個層面 sql 和索引優化 資料庫結構優化 系統硬體優化等 前兩個可以通過日常的書寫sql來實現,養成好的習慣可以事半功倍。2 sql 和索引優化習慣準則...