高效能MySQL讀書筆記(第六章上)

2021-10-03 16:03:20 字數 608 閱讀 3194

查詢為什麼會慢

重構查詢的方法(重要)

我們覺得查詢慢的時候就要開始考慮優化了,那麼「慢」是怎麼理解呢?當乙個查詢任務超過了我們能忍受的時間,就是「慢」了,我們就要考慮下優化。前面我們學習了索引優化、庫表結構優化,下面我們一步步看查詢優化。

乙個查詢相當於服務端的乙個任務,從開始到結束是乙個完整生命週期。那麼這個查詢過程是什麼呢?按照查詢的先後順序可以分為:從客戶端請求–>到伺服器–>伺服器解析–>生成執行計畫–>執行–>返回結果到客戶端。而**其中的「執行」是最重要的階段,包括了大量為了檢索資料到資料引擎的呼叫以及呼叫後的資料處理,包括排序、分組等。**而了解了各個生命週期的職責,會幫助你理解為什麼要這麼優化乙個查詢。

先了解下mysql是怎麼優化和執行查詢的,上圖:

客戶端和服務端通訊是半雙工的,要麼是客戶端在向服務端傳送資料,要麼是服務端在向客戶端傳送資料,不可能同時進行。也就意味著,一旦一段開始傳送資料,另一端只能等到接收完成,才能進行響應。

最基本的原因是訪問資料太多,這裡訪問是服務端執行掃瞄的資料,區別於返會個客戶端的資料。而訪問資料過多,就要考慮兩點:

1、是否向資料庫請求了不需要的資料:

2、mysql是否掃瞄了額外的資料:

《高效能mysql》第六章讀書筆記

一 慢查詢優化語句 低效查詢的分析步驟 1.確認程式是否存在檢索大量超過需要的資料。2.確認伺服器層是否在分析大量的超出需要的資料行。下面詳細描述一下這兩方面 1.1 是否查詢了大量不必要的資料 1.查詢不需要的資料 2.多表關聯時候返回全部列 3.總是取出全部列 在大部分場景不建議如此,會耗費大量...

高效能MySQL 第六章

查詢優化 索引優化 庫表結構優化 優化查詢嗎,實際上是優化其子任務。優化查詢 1。消除子任務 2。減少子任務執行次數 3。讓子任務執行的更快 查詢效能低下最基本的原因是訪問的資料太多。1 返回的結果 limit,避免返回不需要的資料 而不是返回全部結果集 select 是否需要返回全部列?2 掃瞄的...

第六章讀書筆記

linux系統將每個驅動都對映成乙個檔案,這些檔案稱為裝置檔案或驅動檔案,都儲存在 dev目錄中。編寫linux驅動程式的步驟 第1 步 建立linu x 驅動骨架 裝載和解除安裝linu x 驅動 第2 步 註冊和登出裝置檔案 第3 步z 指定與驅動相關的資訊 第4 步 指定 函式 第5 步z 編...