於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 連線池。管理緩衝使...