<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
很多人都在使用mysql資料庫,但是很少有人能夠說出來整個sql語句的執行過程是怎樣的,如果不瞭解執行過程的話,就很難進行sql語句的優化處理,也很難設計出來優良的資料庫表結構。這篇文章主要是講解一下sql語句的執行過程。
使用者端、聯結器、分析器、優化器、執行器、儲存引擎幾個階段。
聯結器的作用:管理連結、許可權驗證的處理。
分析器的作用:詞法分析、語法分析。
優化器的作用:執行計劃的生成、索引選擇。
執行器的作用:操作引擎、返回結果。
儲存引擎的作用:儲存資料、提供讀寫介面。
另外的一個分支是,會進行查詢快取的操作,如果命中了快取則直接返回的操作。
mysql可以分為server層和儲存引擎層兩個部分:
server層:
包括連結器、查詢快取、分析器、優化器、執行器等,涵蓋Mysql的大多數核心服務功能,以及所有的內建函數(日期、時間、數學、和加密函數等),所有的儲存引擎的功能都在這一部分實現的,比如說儲存過程、觸發器、檢視。
儲存引擎:
主要負責資料的儲存和提取,其架構模式是外掛式的,支援InnoDB、Memory等多個儲存引擎。最常用的是InnoDB,這個主要在Mysql5.5版本開始成為了預設儲存引擎。
當在執行sql查詢的時候,如果不指定引擎型別、預設使用的innoDB。當然也可以指定儲存引擎型別進行處理,比如說建立表的時候,可以把儲存引擎修改為memory,進行表的建立出合理。當然了,不同的儲存引擎的表資料儲存方式也是不一樣的。
聯結器:
執行sql語句的時候,第一步需要進行資料庫的連線處理,聯結器負責使用者端建立連線、獲取許可權、維持和管理連線。
根據命令可以看出來,主要進行幾個引數的輸入,IP地址、埠號、以及使用者名稱、密碼的處理。連線mysql是使用者端工具,使用者伺服器建立連線,進行tcp握手之後,聯結器需要進行身份的驗證,然後輸入使用者名稱、密碼。
密碼不對的時候,會收到一個“Access denied for user”的錯誤提示,然後使用者端結束執行。
使用者名稱、密碼驗證通過之後,聯結器就會開始進行許可權表查詢許可權,然後進行許可權的操作處理。
連線完成之後,沒有進行其他的操作,這個時候連線就處於空閒狀態,show processlist。
使用者端如果長時間不操作的話,預設的等待時間(wait_timeout)是八個小時。
資料庫建立連線是比較複雜的,建議在專案中儘量少的建立連線的操作,也就是說盡量使用長連線的處理。
在專案中經常會遇到一種情況就是資料庫的長連線,很長時間不關閉的操作,這個時候會導致記憶體的佔用太大,被系統殺掉導致的Mysql的異常。
解決方案有下面兩種方案:
連線建立完畢之後,進行查詢快取的處理,執行sql語句會先到快取中看看是不是剛剛執行了這條語句,之前執行過的語句及其結果就會以key-value對的形式直接儲存在記憶體中的,key是查詢的語句,value是查詢的結果,如果查詢能夠直接在這個快取中找到key,那麼這個value可以直接返回給使用者端。
如果語句不在查詢快取中的話,就會繼續後面的執行階段,執行完成後,執行結果會被存入查詢快取中。如果可以查詢到快取的話,就不會進行後面的複雜操作了,效率會高很多。
查詢快取的弊端:
查詢快取失敗一般情況下會比較頻繁,只要對一個表的進行了更新的話,這個表上面所有的快取就會被清空。因此一般情況下查詢快取的命中率很低。一般情況下,一個系統的設定表或者靜態的表才會使用到查詢快取的方式進行處理。
分析器首先會進行詞法分析,輸入的是由多個字串和空格組成的一條sql語句,mysql需要識別出來裡面的字串分別是什麼,代表什麼意思。
首先:mysql從輸入的select這個關鍵詞識別出來,這個是一個查詢的語句,需要把from關鍵字後面的,字串t識別出來表名稱等等的操作。
然後進行語法分析的處理,根據詞法分析,根據詞法分析的結果,語句分析器就會根據語法規則判斷輸入的這個sql語句是否滿足mysql的語法。
檢查出來錯誤提示如下圖:
一般提示錯誤的資訊只會進行第一個錯誤的位置。
經過了分析器的處理,mysql就知道了該如何進行優化器的處理了,優化器的處理邏輯是在表裡面進行多個索引的時候,決定使用那個索引,或者說在一個語句有多個關聯的時候,決定各個表的連線順序的情況,如下圖所示:
第一種執行的結果是處理t1.c=10是否走索引,然後可以先判斷 一下邏輯的結果是否一樣,如果執行的結果是一樣的話,可以任意選擇一種方案進行處理。
到此這篇關於MySql中sql語句執行過程詳細講解的文章就介紹到這了,更多相關MySql sql語句執行過程內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45