查看完整版本: MySQL 效能調整 - MySQL Basic Tunning


ppstream 2012-1-27 21:38

MySQL 效能調整 - MySQL Basic Tunning

要調整MySQL效能,如果是利用phpMyAdmin工具的話,可以從【狀態】按鈕中,大致查看到MySQL的狀態,phpMyAdmin會針對異常狀態的值用紅色標示出來,此時管理員就可以針對這些異常狀態做效能的調整,當然您也可以直接在mysql command中下 #show status; 的指令查看。

最近常常 SHOW STATUS 看效能,而之前最常遭遇到的問題是:

[b]Handler_read_rnd_next [/b]:當進行大量排序查詢的時候不理想,或許可以調高 read_buffer_size
[b]Handler_read_rnd [/b]:表示每次 query 都必須要直接掃整個 table 而且 index 可能沒有發揮作用,但是我不曉得是不是 Active Record 造成的,因為我 WHERE 和 ORDER BY 選用的欄位都有檢查過了,應該都建了 index
[b]Qcache_lowmem_prunes[/b] :我應該要把 query cache 調小,因為每次查出來結果都不同(鮮少重複的查詢),所以不需要調太大。
[b]Created_tmp_disk_tables[/b]:在磁碟上建立的臨時 table 太大,應該要調高 tmp_table_size 的數值(記憶體中建立臨時 table ),以改善效能。
[b]Sort_merge_passes[/b]:應該要增加 sort_buffer 的值。
[b]Opened_tables[/b]:則要增加 table_cache 的值。
[b]Table_locks_waited[/b]:雖然我的 Table_locks_immediate 有 12M,而 Table_locks_waited 有 112K ,發生鎖定等待的情況大約是比例上為 1/100 (一百次鎖定中,可以直接鎖定 99 次,有一次要等待)

底下為符合硬碟設備設定的範例:
[indent]64 bit system – 假設 64 bit CPU 以及作業系統
8GB+ of memory – 超過 8 GB 記憶體
Dedicated DB Box – 專職的資料庫伺服器
All MyISAM – 使用 MyISAM 儲存引擎
[mysqld]
thread_cache_size = 256
table_cache = 1024
key_buffer = 4000M
sort_buffer_size = 256K
read_buffer_size = 256K
read_rnd_buffer_size = 256K
max_allowed_packet = 1M
tmp_table_size=64M
max_heap_table_size=64M
query_cache_size=128M
myisam_recover = backup
myisam_sort_buffer_size=512M
skip-innodb
[/indent]資料參考:[url=http://blog.roga.tw/2009/06/mysql-basic-tunning/]http://blog.roga.tw/2009/06/mysql-basic-tunning/[/url]

tttaco 2012-1-29 23:51

:call: :call: :time: :time: :kiss: :kiss: :loveliness: :loveliness: :loveliness: :loveliness:
頁: [1]
查看完整版本: MySQL 效能調整 - MySQL Basic Tunning