1. 程式人生 > >mysql優化的關鍵_個人總結

mysql優化的關鍵_個人總結

1.知道什麼是索引

  • 官網的翻譯解釋:
    資料本身之外,資料庫還維護著滿足特定查詢演算法的資料結構,這些資料結構以某種方式引用(指向)資料,這樣就可以在這些資料結構的基礎上實現高階查詢演算法。這種資料結構就是索引。

  • MySQL官方對索引的解釋:索引是幫助MySQL高效獲取資料的資料結構。

索引本質上是一種資料結構,用於快速的查詢資料和排序資料,別說什麼書籍的目錄,太low了。


2.索引的主要作用

  • 快速查詢資料
  • 快速排序資料

3.索引在查詢,排序,分組等情況下,如何生效。記住口訣

假如有索引(a,b,c)

  • 在select xxx where a = xxx and b = xxx and xxx 的情況下 where後面的查詢條件的順序和個數要符合索引的個數和順序(最後面的可以少,但是開頭必須有,中間不能斷。即:可以a或者a,b或者a,b,c但是不能是b或者a,c)
  • 在order by的情況下,order by 後面的排序的順序和個數要符合索引的個數和順序(最後面的可以少,但是開頭必須有,中間不能斷。即:可以a或者a,b或者a,b,c但是不能是b或者a,c);
  • order by 的特殊說明,如果前面有了where a = 1 order by b,c這樣也是可以的(等效於order by a=1,b,c)

4.索引失效的情況


5.explain
知道它的作用,以及他的每個引數的主要效能指標。以及如何根據指標進行優化
使用explain關鍵字可以模擬優化器執行sql查詢語句,從而知道Mysql是如何處理你的sql語句的.

如何使用
explain + sql語句.

指標中最重要的五個是:
id,type,key,rows,Extra。


6.慢查詢

知道如何開啟慢查詢,怎麼設定慢查詢,怎麼知道哪些語句慢了

查詢是否開啟慢查詢sql功能
SHOW VARIABLES LIKE ‘%slow_query_log%’;

SHOW VARIABLES LIKE ‘%long_query_time%’;

怎麼樣模擬出慢sql
select sleep(秒數);

檢視慢日誌
cat xxx.log

檢視記錄有幾條慢日誌
SHOW GLOBAL STATUS LIKE ‘%Slow_queries%’;

日誌分析工具:mysqldumpslow

得到返回記錄集最多的10個sql
mysqldumpslow -s r -t 10 +慢查詢日誌的全路徑

得到訪問次數最多的10個sql
mysqldumpslow -s c -t 10 +慢查詢日誌的全路徑


7.show profile
如何開啟,怎麼診斷,診斷的結果以及主要的效能指標
什麼是show profile
MySQL用來分享當前語句的資源消耗情況的工具。

如何開啟profile,系統預設是關閉的
show variable like ‘%profiling%’
set profiling=on

如何查詢最近記錄下來的profile
show profile
show profile CPU, block io for query +id
show profile可以展示那些引數,哪些引數是主要的
cpu,block io
出現那些引數的時候,是表示效能差了。
1.converting head to myisam,查詢結果資料集太大了
2. creating tem table,建立了臨時表
3.copying to tem table on disk,把記憶體中的臨時表複製到了硬碟中


8.伺服器效能引數調節設定