分析問題的幾個步驟:
1. 開啟慢查詢日誌。
這個步驟就是為了記錄慢查詢的sql,為下個步驟做準備,此步驟相關的知識點有如下:
1. show variables like '%slow_query_log%'; 檢視慢查詢的日誌記錄是否開啟。
2. set global slow_query_log=1; 設定慢查詢開啟。
2. 用explain 分析sql 語句。
ps: explain select * from temp 得到如下圖所示:
通過這個步驟的分析基本能找到問題出現在哪? 主要看紅框的那幾個點(type,key,ref,extra).。應該避免type為all,這就是說這個sql是通過全表掃瞄查詢的,key代表這個sql實際是否用到了索引,null代表沒有。ref 表示這個操作引用了那些東西,
比如const(常量)。extra 表示一些額外的資訊。比如using index,using filesort(檔案排序,盡量避免使用)。
注釋:如何檢視步驟的執行順序呢? 如果id相同,從上到下執行。如果id不同id大的先執行。
3. 使用profile 來檢視sql 的執行週期,看看sql的問題出錯在執行的哪個步驟上。
1. set profiling=1; 設定profile 功能開啟。2. show profiles: 用來檢視mysql 前十幾條查詢的。
比如:show profile for query 2; 就是 檢視 第二條sql 的執行生命週期,
4. 修改mysql 資料庫配置檔案,這個步驟一般都是dba 運維操作.
這個步驟主要是修改mysql的配置檔案,比如設定查詢緩衝區的大小等等。
Mysql資料庫的慢sql優化步驟
慢sql優化步驟 先檢視慢日誌,獲得具體哪條sql語句是慢sql。再使用explain sql語句,進行對慢sql分析。修改sql語句,或者增加索引。在資料庫視覺化工具中,顯示有關慢日誌的資訊 show variables like quer image.png 主要是檢視這三個欄位的資訊 long...
資料庫優化的幾個階段
大家在面試的時候,是否遭遇過,面試官詢問 你們是如何進行資料庫優化的?這才是調優的第一階段啊,為什麼呢?因為這一步成本最低啊,不需要加什麼中介軟體。你沒經過索引優化和sql優化,就來什麼水平拆分,這不是坑人麼。那步驟是什麼樣呢?我說個大概 1 用慢查詢日誌定位執行效率低的sql語句 2 用expla...
資料庫優化的幾個階段
大家在面試的時候,是否遭遇過,面試官詢問 你們是如何進行資料庫優化的?第一階段 優化sql和索引 這才是調優的第一階段啊,為什麼呢?因為這一步成本最低啊,不需要加什麼中介軟體。你沒經過索引優化和sql優化,就來什麼水平拆分,這不是坑人麼。那步驟是什麼樣呢?我說個大概 1 用慢查詢日誌定位執行效率低的...