-
在配置文件裏打開慢查詢
linux環境下的配置文件位於/etc/my.cnf
windows環境下的配置文件位於 my.ini
配置 slow_query_log = 1 開啓慢查詢日誌
slow_query_log_file= 慢查詢日誌存放地址
long_query_time=10 慢查詢標準 -
慢查詢分析工具
mysql自帶的分析工具mysqlfumpslow,需要安裝perl環境運行
這個工具可以對日誌進行(時間,次數等)排序
mysql和mysqld是有區別的:
mysql.exe指的是mysql的客戶端,比如登錄等。
mysqld 指mysql的服務端,開啓mysql服務。
3.慢查詢優化方法- 硬件的優化(硬盤,內存,cpu等)
- 服務器優化(linux服務器比mysql服務器穩定)
- sql語句進行優化
- 反範式化設計(三大範式)
參考《阿里java開發手冊》,適當冗餘,以空間換時間
- 索引優化
mysql索引顯式支持b-tree,實際上也支持hash,只是看起來顯示的是b-tree,技術上實際上使用的是b+樹
-
三大範式
- 字段不可拆分
- 完全依賴
- 消除傳遞依賴
-
索引
索引(Index)是幫助MySQL高效獲取數據的數據結構。
mysql索引包含 普通索引 、唯一索引、符合索引主鍵索引不需要單獨創建,主鍵索引跟唯一索引的區別就是:
主鍵索引不能爲空,唯一索引可以爲null執行計劃 EXPLAIN(執行計劃詳細的知識參考ppt)
查詢結果中的key字段表示用到的索引,爲null表示沒用到索引
sql是否充分用到了索引,看ken_len字段(百度ken_len的算法) -
索引查詢的策略
全值匹配我最愛,最左前綴要遵守;儘量全值匹配,最佳左前綴法則
帶頭大哥不能死,中間兄弟不能斷;
最佳左前綴法則,(查詢從索引的最左前列開始並且不跳過索引中的列)
索引列上少計算,範圍之後全失效;
不在索引列上做任何操作,範圍條件放最後
LIKE百分寫最右,覆蓋索引不寫*;
like左側寫%不能使用索引,儘量使用覆蓋索引(只訪問索引的查詢(索引列和查詢列一致)),減少select *
不等空值還有OR,索引影響要注意;
OR改UNION效率高
VARCHAR引號不可丟, SQL優化有訣竅。
-
覆蓋索引,要查詢的列全部都是索引列,只用查索引目錄就能找到數據,這種查詢叫做覆蓋索引
-
type system>const>eq_rel>rel>range>index>all
-
分頁也是一種重要的優化方式
-
進階(mycat 分庫分表,讀寫分離,性能瓶頸,b+樹,索引失效)
mysql(一)性能優化
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.