MySQL 資料庫的基本結構

2021-10-08 11:23:57 字數 1379 閱讀 4260

參考:

首先看一張圖

根據這張圖簡單說一下資料庫的執行流程和基本架構。

1、聯結器

我們要進行查詢,第一步就是先去鏈結資料庫,那這個時候就使用聯結器把客戶端和資料庫連線起來,他負責跟客戶端建立鏈結、獲取許可權、維持和管理連線。從本質上講,資料庫的連線就是程序間的通訊,主要方式有tcp/ip+管道和命名管道等等,比如如果使用tcp/ip連線,那麼就會經過tcp握手,然後身份驗證,然後我們輸入使用者名稱密碼就好了。

2、查詢快取

mysql拿到乙個查詢請求後,會先到查詢快取看看,之前是不是執行過這條語句。比如同一條語句在mysql執行兩次,第一次和後面的時間是不一樣的,後者明顯快一些,這就是因為快取的存在。他跟redis一樣,只要是你之前執行過的語句,都會在記憶體裡面用key-value形式儲存著(把sql語句的hash值作為鍵,sql語句的結果集作為值)。

查詢的時候就會拿著語句先去快取中查詢,如果能夠命中就返回快取的value,如果不命中就執行後面的階段。

但是查詢快取有乙個缺點,快取的失效很容易,只要對錶有任何的更新,這個表的所有查詢快取就會全部被清空,就會出現快取還沒使用,就直接被清空了,或者積累了很多快取準備用來著,但是乙個更新打回原形。

這就導致查詢的命中率低的可怕,只有那種只查詢不更新的表適用快取,但是這樣的表往往很少存在,一般都是什麼配置表之類的。

那麼如何關閉快取呢?query_cache_type=0時表示關閉,1時表示開啟,2表示只要select 中明確指定sql_cache才快取。012這三個值其實代表off、on、demand。因此我們可以使用demand,這樣預設不使用,但是當你想用快取就加上sql_cache。

3、分析器

一旦快取沒有命中,就到了分析器。分析器首先會先做詞法分析(判斷每個詞的含義),你的語句有這麼多單詞、空格,mysql就需要識別每個字串所代表的是什麼,是關鍵字,還是表名,還是列名等等。然後就開始語法分析(判斷對錯),根據詞法分析的結果,語法分析會判斷你sql的對錯,錯了會提醒你的,並且會提示你**錯了。

4、優化器

因為我們建立表可能會建立很多索引,優化有一步就是要確認使用哪個索引,比如使用你的主鍵索引,聯合索引還是什麼索引更好。還有就是對執行順序進行優化,條件那麼多,先查哪個表,還是先關聯,會出現很多方案,最後由優化器決定選用哪種方案。

5、執行器

開始執行的時候,要先判斷使用者對這個表有沒有查詢許可權,如果沒有,就會返回許可權的錯誤;如果有許可權,就開啟表繼續執行。開啟表的時候,執行器就會根據表的引擎定義,去使用這個引擎提供的介面

資料庫的基本結構

資料庫的基本結構分三個層次,反映了觀察資料庫的三種不同角度。1 物理資料層。它是資料庫的最內層,是物理存貯裝置上實際儲存的資料的集合。這些資料是原始資料,是使用者加工的物件,由內部模式描述的指令操作處理的位串 字元和字組成。2 概念資料層。它是資料庫的中間一層,是資料庫的整體邏輯表示。指出了每個資料...

mysql資料庫基本操作 MYSQL資料庫基本操作

1.連線mysql mysql u 使用者名稱 p 回車後要求輸入密碼,密碼不可見 2.退出mysql命令 exit 回車 3.修改密碼 mysqladmin u使用者名稱 p舊密碼 password 新密碼4.檢視mysql許可權和使用者select host,user fromuser 對資料庫...

mysql資料庫基本語法 MySQL資料庫基本語法

toc sqlwhat sql是什麼?structured query language 結構化查詢語 why 為何要使用sql?難道僅僅使用sql server management studio運算元據庫?應用程式如何與資料庫打交道?when 何時使用?對sql server執 所有的操作都可以...