mysql數據庫優化

用到啥學啥,mysql數據庫優化成了這幾天的老大難問題。瘋狂的尋找mysql優化的資料,覺得有用的不少,記錄下跟大家分享,對了,這裏僅僅是mysql數據庫本身的優化,沒有寫磁盤之類的:

開始之前,介紹倆mysql的命令:
show global status;    查看運行狀態的,顯示運行各種狀態值
show variables;          查詢MySQL服務器配置信息的
ps:在命令裏面設置配置信息的話,下次重啓不起作用,所以要寫到my.cnf裏面。

1.慢查詢
就是語句執行需要的時間,如果超過設定的值,則進行記錄。

show variables like '%slow%';這個可以查看是否開啓及設置的時間,單位爲秒。
show global status like '%slow%';這個是查看統計情況

2.連接數
遇見”MySQL: ERROR 1040: Too many connections”的情況,一種是訪問量確實很高,MySQL服務器抗不住,這個時候就要考慮增加從服務器分散讀壓力,另外一種情況是MySQL配置文件中max_connections值過小:

show variables like 'max_connections';查看最大連接數
mysql> show global status like 'Max_used_connections'查看目前出現的最大連接數

推薦的兩個者的比例:Max_used_connections / max_connections * 100% ≈ 85%

3.Key_buffer_size

show variables like 'key_buffer_size';顯示目前Key_buffer_size的設置值,單位是字節。

那麼這個參數設置多少合適呢,一般是內存的1/4大小。如何確定一個合適的值呢?
show global status like 'key_read%';這個是看索引請求(Key_read_requests)的,還可以查看內存中沒有找到直接從硬盤讀取索引(Key_reads)。兩者的比值Key_reads / Key_read_requests越小越好,至少是1:100,1:10000算是很不錯。不過比例再大的話,也沒有很大的意義了。

MySQL服務器還提供了key_blocks_*參數:show global status like 'key_blocks_u%';
Key_blocks_unused表示未使用的緩存簇(blocks)數,Key_blocks_used表示曾經用到的最大的blocks數,比如這臺服務器,所有的緩存都用到了,要麼增加key_buffer_size,要麼就是過渡索引了,把緩存佔滿了。比較理想的設置:
Key_blocks_used / (Key_blocks_unused + Key_blocks_used) * 100% ≈ 80%

4.Open_tables

show global status like 'open%tables%';查看打開表的情況
Open_tables表示打開表的數量,Opened_tables表示打開過的表數量,如果Opened_tables數量過大,說明配置中table_cache(5.1.3之後這個值叫做table_open_cache)值可能太小。
比較適合的值:
Open_tables / Opened_tables * 100% >= 85%
  Open_tables / table_cache * 100% <= 95%

5.查詢緩存(query cache)
詳細出處:mysql數據庫優化 - 23生活
http://www.23live.cn/article.asp?id=436

發佈了74 篇原創文章 · 獲贊 1 · 訪問量 29萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章