一、mysql登入方式
(一)、tcp/ip方式(遠端、本地)
mysql -uroot -poldboy123 -h 10.0.0.51 -p3306
(二)、socket方式
mysql -uroot -poldboy123 -s /tmp/mysql.sock
二、例項介紹
例項=mysqld後台守護程序+主線程(master thread)+工作執行緒(worker thread)+預分配記憶體
三、mysql程式結構(mysqld核心程式工作原理)
(一)、server層
1、連線層
(1)提供連線協議:tcp/ip 、unix socket
(2)載入授權表(mysql.user、mysql.db、mysql.table_priv、mysql.columns_priv、mysql.table_proc、mysql.table_proxy)
提供驗證:使用者、密碼,ip,socket
(3)提供專用連線線程:接收使用者sql,返回結果(show processlist;)
2、sql層
(1)接收上層傳輸的sql語句
(2)驗證語法模組,驗證語句語法,是否滿足sql_mode
(3)語義檢查,判斷sql語句型別
ddl:資料定義語言
dcl:資料控制語言
dml:資料操作語言
dql:資料查詢語言
(4)許可權檢查:檢查使用者對庫表有沒有許可權
(5)解析器:進行sql的預處理,生成解析樹(執行計畫),並統計執行代價
統計資訊表:
innodb_index_stats
innodb_table_stats
(6)優化器:根據解析器得出的多種執行計畫,進行判斷,選擇最優的執行計畫
(代價模型:資源(cpu、io、mem)的耗損進行選擇執行計畫)
(7)執行器:根據最優執行計畫,執行sql語句,產生執行結果
(8)提供查詢快取(預設是沒開啟的),會使用redis tair替代查詢快取功能
(9)提供日誌記錄(日誌管理章節):binlog,預設是沒開啟的
(二)、儲存引擎層(engine)(類似於linux中的檔案系統)
負責根據sql層執行的結果,從磁碟上拿資料。
將16進製制的磁碟資料,交由sql結構化生成表,
連線層的專用線程返回給使用者。
ps:哪個執行緒接手了使用者傳送過來的sql語句,
返回資料的時候也由該執行緒返回給使用者
其實,客戶端傳送一條查詢給mysq|伺服器, 伺服器先檢查查詢快取,如果命中了快取,則立刻返回儲存在快取中的結果。否則伺服器端進行sql解析、預處理,再由優化器生成對應的執行計畫,按照執行計畫執行sql語句告知engine層, engine層與磁碟做互動,獲取到資料,交給sql層,sql層生成**格式的資料,返還給使用者.
四、mysql資料儲存邏輯結構
(一)、庫
名稱屬性
(二)、表
1、字段(列)
名稱屬性
資料型別
約束2、記錄(行)
欄位名稱對應的資料
3、表屬性
五、mysql物理儲存結構
(一)、庫的物理儲存結構
用檔案系統的目錄來儲存
(二)、表的物理儲存結構
1、多個檔案組成
2、myisam表
*.myi:索引資訊
3、innodb表
*.ibd:資料行+索引資訊
關係:表-->段(segments)(乙個表就是乙個段,包含乙個或多個區)-->區(extents)(乙個或多個連續的頁)-->頁(page)(最小的io單元:16k)
ORACLE體系結構簡述
sql的解析開始的位置是pga 私有sql區 pga program global area 程式全域性區 資料庫session儲存在uga裡面 user global area 使用者全域性區 sga system global area 系統全域性區 pga sga 記憶體結構 pga sga ...
mysql 體系結構 了解MySQL體系結構
mysql 資料庫體系結構圖 mysql 由以下幾部分組成 1 connectors 不同語言中與 sql 的互動 show variables like connection variable name value character set connection utf8 collation c...
MySQL體系結構
了解mysql必須牢牢記住其體系結構圖,mysql是由sql介面,解析器,優化器,快取,儲存引擎組成的 1 connectors指的是不同語言中與sql的互動 2 management serveices utilities 系統管理和控制工具 3 connection pool 連線池。管理緩衝使...