1. 程式人生 > >《High Performance MySQL》翻譯(2) 連線管理和安全 優化和執行

《High Performance MySQL》翻譯(2) 連線管理和安全 優化和執行

接上篇,第一章 MySQL架構和歷史

連線管理和安全


每個客戶連線在服務內部都有一個獨立的執行緒處理。查詢在這個單獨的執行緒內執行,執行緒輪流在CPU或核心上執行。執行緒在服務端被快取,所以不必針對每個新來執行緒進行建立和銷燬。(注2)。
當客戶端(應用)連線到MySQL服務的時候,服務端需要進行認證。認證是基於使用者名稱,來訪主機和密碼的。X.509認證也可用於通過SSL(安全套接層)進行的連線。當客戶端已經連線的時候,服務端會對每個請求校驗該客戶端是否具有操作許可權。(例如:校驗該客戶端是否具有在wolrd資料庫的Country表執行SELECT操作的許可權。)

優化和執行

MySQL解析查詢請求,生成內部結構(解析樹),然後執行多種優化。包括重寫查詢,決定讀取表的順序,選擇要使用的索引等等。你可以在查詢中通過特殊的關鍵字給優化器指示,以引導其決定操作步驟。你也可以向服務端詢問各種優化的方向。這會讓你知道服務端進行了如何的決策,這對你重構查詢和表結構以及優化設定以使服務高效執行給出了可參考的點。我們將在第六章討論優化的細節。

優化器並不真正關心表所使用的儲存引擎,但是儲存引擎影響服務端對查詢的優化方式。優化器向儲存引擎詢問其某些功能特性以及特定操作的耗時和表資料的統計。例如,一些儲存引擎支援索引,可以有效支援的查詢。你可以在第四和第五章瞭解到更多關於索引和表結構優化的資訊。

在解析查詢之前,服務端先檢查查詢快取,查詢快取僅儲存SELECT語句及其結果。如果某個查詢請求與快取中某條資訊一致,那麼服務端無需在解析,優化或者執行查詢,它可以直接返回儲存結果。我們將在第七章進行詳細的說明。


注2:MySQL5.5以後的版本支援執行緒池外掛,一個小型的執行緒池可以提供很多連線。