第一步,咱們會先鏈接到 MySQL 數據庫,此時就是鏈接上鍊接器。鏈接器負責和客戶創建鏈接,獲取權限,維持和管理鏈接。mysql
mysql -h $ip -u root -p
複製代碼
創建好鏈接以後,咱們就可使用 SELECT 語句了,執行邏輯就會來到第二步:查詢緩存。MySQL 會如今查詢緩存看看以前是否是執行過這條語句,若是有就直接返回。在 MySQL 8.0 以後,此模塊已被移除。sql
若是沒有查詢緩存,從這裏 MySQL 就要開始分析咱們要幹什麼,須要對咱們編寫 SQL 語句進行分析。分析器會先作詞法分析,識別出字符串以及它表明的含義。而後再進行語法分析,判斷咱們編寫的 SQL 語句有沒有錯誤,若是有錯誤就會拋出錯誤。數據庫
通過了分析器以後,MySQL 知道你要幹什麼了,此時優化器會根據表結構以及語句目的來決定使用哪一個方案。緩存
MySQL 經過分析器知道了咱們要作什麼,經過優化器知道了該怎麼作效率最高。因而就能夠進入執行器,真正執行 SQL 語句了。bash
select * from users where name = ‘operator' 複製代碼
假設 users 表中,name 字段上沒有創建索引,那麼執行器調用 InnoDB 引擎接口取第一行,判斷 name 是否是等於 operator,如不是則跳過,若是是就放在結果集中。而後再調用引擎接口取下一行,重複相同的邏輯判斷,直到取到這個表的最後一行。最後將結果集返回給客戶端。優化