三 MySQL體系結構

2022-05-06 18:57:13 字數 2730 閱讀 7302

於2023年1月20日重新編輯

mysql基於cs架構

mysql分為服務端和客戶端,服務端僅乙個,而客戶端可以有多個,每個shell都能算乙個單獨的客戶端. 而服務端也設定了預設的最大連線數,一般是151,可以自己調節數量。

兩種連線方式

#tcp/ip方式(遠端、本地):

$ mysql -uroot -p123 -h 10.154.0.111 -p3306

#socket方式(僅本地):

$ mysql -uroot -p123 -s /tmp/mysql.sock

例項

例項 = mysqld後台守護程序+master thread +幹活的thread+預分配的記憶體

相當於公司=老闆+經理+員工+辦公室

mysql的體系結構

連線層

(1)提供連線協議:tcp/ip 、socket

(2)提供驗證:使用者、密碼,ip,socket

(3)提供專用連線線程:接收使用者sql,返回結果

#通過以下語句可以檢視到連線線程基本情況

mysql> show processlist;

sql層(1)接收上層傳送的sql語句

(2)語法驗證模組:驗證語句語法,是否滿足sql_mode規範

(3)語義檢查:判斷sql語句的型別

ddl :資料定義語言

dcl :資料控制語言

dml :資料操作語言

dql: 資料查詢語言

...等等

(4)許可權檢查:使用者對庫表有沒有許可權。

(5)解析器:對語句執行前,進行預處理,生成多種執行方案。

(6)優化器:根據解析器得出的多種執行計畫,進行判斷,選擇最優的執行計畫。代價模型:資源(cpu io mem)的耗損評估效能好壞。

(7)執行器:根據最優執行計畫,執行sql語句,產生執行結果。執行結果:在磁碟的某個位置上。

(8)提供查詢快取(預設是沒開啟的),會使用redis tair替代查詢快取功能。

(9)提供日誌記錄(日誌管理章節):binlog,預設是沒開啟的。

儲存引擎層

負責根據sql層執行的結果,從磁碟上讀取資料。將16進製制的磁碟資料返回sql層,結構化生成二維表,

再轉給連線層的專用線程返回給使用者,最終展示出來結果。

mysql邏輯結構

物理儲存結構

資料庫的物理儲存結構

登入mysql建立資料庫test

$ mysql -uroot -p

mysql> create database test;

mysql> exit

$ cd /usr/local/mysql-5.7.26/data

會發現建立的資料庫test其實是乙個目錄

表的物理儲存結構

#進入mysql資料庫

$ cd mysql

#檢視user表

$ ll user.*

-rw-r-----. 1 mysql mysql 10816 jan 17 07:15 user.frm

-rw-r-----. 1 mysql mysql 340 jan 17 07:15 user.myd

-rw-r-----. 1 mysql mysql 4096 jan 17 07:15 user.myi

myisam(一種引擎)的表:

-rw-r----- 1 mysql mysql   10816 apr 18 11:37 user.frm #儲存列相關資訊(列,列屬性)

-rw-r----- 1 mysql mysql 396 apr 18 12:20 user.myd #儲存資料行(每一行都是資料)

-rw-r----- 1 mysql mysql 4096 apr 18 14:48 user.myi #索引資訊

innodb(預設的儲存引擎)的表:

-rw-r----- 1 mysql mysql    8636 apr 18 11:37 time_zone.frm  #儲存列相關資訊

-rw-r----- 1 mysql mysql 98304 apr 18 11:37 time_zone.ibd #儲存資料行+索引資訊

$ cd /usr/local/mysql-5.7.26/data

$ ll ibdata1

-rw-r-----. 1 mysql mysql 12582912 jan 17 07:23 ibdata1 #innodb資料字典資訊,也就是元資料

mysql 體系結構 了解MySQL體系結構

mysql 資料庫體系結構圖 mysql 由以下幾部分組成 1 connectors 不同語言中與 sql 的互動 show variables like connection variable name value character set connection utf8 collation c...

簡述mysql體系結構 MySQL體系結構

一 mysql登入方式 一 tcp ip方式 遠端 本地 mysql uroot poldboy123 h 10.0.0.51 p3306 二 socket方式 mysql uroot poldboy123 s tmp mysql.sock 二 例項介紹 例項 mysqld後台守護程序 主線程 ma...

MySQL體系結構

了解mysql必須牢牢記住其體系結構圖,mysql是由sql介面,解析器,優化器,快取,儲存引擎組成的 1 connectors指的是不同語言中與sql的互動 2 management serveices utilities 系統管理和控制工具 3 connection pool 連線池。管理緩衝使...