mysql優化
1、sql語句優化
2、索引優化
3、資料庫結構優化
4、innodb表優化
5、myisam表優化
6、memory表優化
7、理解查詢執行計畫
8、緩衝和快取
9、鎖優化
10、mysql伺服器優化
11、效能評估
12、mysql優化內幕
mysql 資料庫引擎:常用的
innodb
.frm
.ibd:表空間
資料 索引
myisam
.myd
.myi
.frm
mysql優化需要在三個不同層次上協調進行:mysql級別、os級別、硬體級別
資料庫層面的優化著眼點:
1、是否正確設定了表結構的相關屬性,尤其是每個字段是否為最佳,同時,是否為特定型別的工作組織使用合適的表及表字段也將影響系統效能,比如,資料頻繁更新的場景應該使用較多的表而每張表有著較少字段的結構,而複雜資料查詢或分析的場景應該使用較少的表而每張表較多字段的結構等。
2、是否為高效進行查詢建立了合適的索引。
3、是否為每張表選用的儲存引擎,並有效利用了選用的儲存引擎本身的優勢和特性。
4、是否基於儲存引擎為表選用了合適的行格式(row format),例如,壓縮表在讀寫操作中會降低i/o操作需求並占用較少的磁碟空間,innodb支援讀寫應用場景中使用壓縮表,但myisam僅能在讀環境中使用壓縮表。
5、是否使用了合適的鎖策略,如在併發場景中使用共享鎖,而較高優先順序的需求使用獨佔鎖等,同時,還應該考慮儲存引擎所支援的鎖型別。
6、是否為innodb的緩衝池,myisam的鍵快取以及mysql查詢快取設定了合適大小的記憶體空間,以便能夠儲存頻繁訪問的資料且又不會引起頁面換出。
作業系統和硬體級別的優化著眼點:
innodb:主索引(聚集索引),輔助索引
使用innodb儲存引擎最佳實踐:
索引:聚集索引
非聚集索引
主索引輔助索引
稠密索引
稀疏索引
多級索引
b+樹索引
hash索引
空間索引
全文索引
b+樹索引:
從根到每乙個葉子結點的路徑是等長的
平衡樹索引 balance tree
索引:加速查詢
降低寫入速度
評價乙個索引的效能不能只看加速查詢,還看對插入、刪除、更新等效能的影響。
hash索引
key-value
hash碼
hash查詢時使用等值條件比較
innodb支援自適應hash索引
覆蓋索引:只是索引使用方法
b樹索引的使用場景:
適用全鍵值、鍵值範圍或鍵字首查詢;
架構師自動化運維 (python)
dba (mysql , oracle)
mysql資料快取查詢 Mysql查詢快取
查詢快取 mysql提供了一種快取型別,會快取整個select查詢結果。mysql查詢快取儲存查詢返回的完整結果。當查詢命中該快取,mysql會立即返回結果,跳過了解析 優化和執行階段。以下兩種情況不能被快取 頻繁更新 修改的的表,所有快取資料都會失效,mysql查詢快取會跟蹤查詢中涉及的表,如果這...
mysql 查詢快取
show variables like cache my.cnf設定 mysql慢日誌 mysql有乙個功能就是可以log下來執行的比較慢的sql語句,預設是沒有這個log的,為了開啟這個功能,要修改my.cnf或者在mysql啟動的時候加入一些引數。如果在my.cnf裡面修改,需增加如下幾行 lo...
mysql查詢快取
查詢快取不開啟 r mysql query select username from user where signup date curdate 開啟查詢快取 today date y m d r mysql query select username from user where signup...