您好,登錄后才能下訂單哦!
這篇文章主要講解了“MYSQL數據庫的基本架構”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“MYSQL數據庫的基本架構”吧!
MYSQL內部可分為兩大部分:Server層和存儲層
server層中大致包含了以下部分:
連接器
查詢緩存
分析層
優化層
執行層
首先介紹一下連接器
每次進入mysql前都需要登錄,其實這就是在跟連接器打交道,你將登錄信息給它檢查,它提供你在該數據庫操作中擁有的權限,我們所需要提供的登錄信息如下所示:
mysql -h 主機ip -u 用戶名 -p 密碼
連接分為兩種:長連接和短連接
長連接是指:連接成功后,如果客戶端不斷請求(執行sql語句),則一直使用同一個連接
短連接是指:每次執行完很少的幾次查詢就斷開連接,下次查詢需要重新建立新的連接
它們也各有各的優缺點:
運行效率 | 占用內存空間 | |
長連接 | 高 | 當積累的數據大時,占用的內存是很大的 |
短連接 | 低 | 小 |
當長連接積累的數據大到內存裝不下的時候,數據庫會自動斷開連接,也可以稱為異常重啟,但是這個問題也是有辦法解決的:
定期斷開連接
執行命令 mysql_reset_connection(重新初始化連接資源)
因為每次重新建立連接其實是很累的,效率也很低,所以一般都是使用長連接
有時候想查看數據庫的連接狀態,可以執行這個命令:
show processlist
有兩種狀態:空閑(sleep)和連接(query)兩個
如果一定時間內一直沒有操作數據庫,那么它會自動斷開連接,如果還要繼續操作,就得重新建立新的連接
接下來介紹一下 查詢緩存
緩存就是之前操作的信息暫時存儲在一個地方,查詢就是查找之前操作過的信息
那在數據庫中,查詢緩存就是查詢之前執行過的sql語句,這樣的運行效率會很高,但是也有一個缺點就是表已更新,它就失效了。。所以一般不用,除非那表是靜態的,就是很長時間都不會更新的那種
為什么說查詢緩存效率高呢?因為執行一個新的sql語句是需要很多流程的,當然使用的時候并沒有表現出來。那現在就來一一介紹這些流程
當用戶與數據庫建立連接后,接下來就到了分析層。
分析層又分為兩部分:詞法分析和語義分析。
詞法分析就是分析輸入的mysql語句中的每個單詞是什么意思,比如分析 show databases;這個語句。[show]是[查看]的意思,[databases]是指所有的數據庫,所以這個語句就是用來查看所有數據庫的。分析完每個詞的意思后,接著就是判斷是否符合mysql的語法,就跟咱學的英語是一樣的。語法沒問題后就繼續往下執行,來到優化層。
優化層也分為兩部分:判斷使用哪個索引和決定各表的連接順序
如果你的數據表中有很多個字段可以作為索引條件的話,優化層就會自動判斷使用最適合的那個索引。如果有多個表進行關聯,那它就會判斷各個表的連接順序。總的來說還是挺方便和智能的
萬事俱備,只差執行,優化層結束后就來到了執行層。
開頭我們說了,數據庫是用來存儲數據的,那肯定有存儲引擎,存儲引擎屬于存儲引擎層,而不是sercver層。
MYSQL的存儲引擎大致有三種:innoDB(默認)、Memory、MylSAM。
那這么多存儲引擎在哪里選擇呢?答案就是執行層階段,執行層的作用就是選擇存儲引擎,默認是innoDB,你也可以選擇其他的,通過執行” engine= 存儲引擎名 “來進行切換。除此之外,執行層還要確定該用戶有沒有執行該語句的權限,沒有的話就會報錯
最后,就是在存儲引擎中對數據進行一系列操作啦,比如查詢、插入、刪除和修改等
感謝各位的閱讀,以上就是“MYSQL數據庫的基本架構”的內容了,經過本文的學習后,相信大家對MYSQL數據庫的基本架構這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。