MySQL 體系架構(gòu)

MySQL Server 架構(gòu)自頂向下大致可以分 網(wǎng)絡(luò)連接層服務(wù)層存儲引擎層系統(tǒng)文件層

1. 網(wǎng)絡(luò)連接層

  • 客戶端連接器(Client Connectors):提供與 MySQL 服務(wù)器建立的支持顺饮。目前幾乎支持所有主流的服務(wù)端編程技術(shù),例如常見的 Java凌那、C兼雄、Python、.NET等帽蝶,它們通過各自API技術(shù)與 MySQL 建立連接赦肋。

2. 服務(wù)層(MySQL Server)

服務(wù)層MySQL Server的核心,主要包含系統(tǒng)管理和控制工具連接池佃乘、SQL接口局蚀、解析器查詢優(yōu)化器緩存六個部分恕稠。

  • 連接池(Connection Pool):負責存儲和管理客戶端與數(shù)據(jù)庫的連接琅绅,一個線程負責管理一個連接。
  • 系統(tǒng)管理和控制工具(Management Services & Utilities):例如備份恢復(fù)鹅巍、安全管理千扶、集群管理等
  • SQL接口(SQL Interface):用于接受客戶端發(fā)送的各種 SQL 命令,并且返回用戶需要查詢的結(jié)果骆捧。比如 DML澎羞、DDL、存儲過程敛苇、視圖妆绞、觸發(fā)器等。
  • 解析器(Parser):負責將請求的 SQL 解析生成一個"解析樹"枫攀。然后根據(jù)一些 MySQL 規(guī)則進一步檢查解析樹是否合法括饶。
  • 查詢優(yōu)化器(Optimizer):當“解析樹”通過解析器語法檢查后,將交由優(yōu)化器將其轉(zhuǎn)化成執(zhí)行計劃来涨,然后與存儲引擎交互图焰。

select uid,name from user where gender=1;
選取 > 投影 > 聯(lián)接 策略
1)select 先根據(jù) where 語句進行選取,并不是查詢出全部數(shù)據(jù)再過濾
2)select 查詢根據(jù) uid 和 name 進行屬性投影蹦掐,并不是取出所有字段
3)將前面選取和投影聯(lián)接起來最終生成查詢結(jié)果

  • 緩存(Cache & Buffer)緩存機制是由一系列小緩存組成的技羔。比如表緩存記錄緩存卧抗,權(quán)限緩存藤滥,引擎緩存等。如果查詢緩存有命中的查詢結(jié)果社裆,查詢語句就可以直接去查詢緩存中取數(shù)據(jù)拙绊。

3. 存儲引擎層(Pluggable Storage Engines)

存儲引擎負責MySQL中數(shù)據(jù)的存儲與提取,與底層系統(tǒng)文件進行交互浦马。MySQL 存儲引擎是插件式的时呀,服務(wù)器中的查詢執(zhí)行引擎通過接口與存儲引擎進行通信,接口屏蔽了不同存儲引擎之間的差異 【現(xiàn)在有很多種存儲引擎谨娜,各有各的特點,最常見的是MyISAMInnoDB磺陡。

4. 系統(tǒng)文件層(File System)

該層負責將數(shù)據(jù)庫的數(shù)據(jù)和日志存儲在文件系統(tǒng)之上趴梢,并完成與存儲引擎的交互漠畜,是文件的物理存儲層。主要包含日志文件坞靶,數(shù)據(jù)文件憔狞,配置文件pid 文件彰阴,socket 文件等瘾敢。

4.1 日志文件

  • 錯誤日志(Error log)
    默認開啟
SHOW VARIABLES LIKE '%log_error%'
  • 通用查詢?nèi)罩荆℅eneral query log)
    記錄一般查詢語句
SHOW VARIABLES LIKE '%general%'
  • 二進制日志(binary log)
    記錄了對 MySQL 數(shù)據(jù)庫執(zhí)行的更改操作,并且記錄了語句的發(fā)生時間尿这、執(zhí)行時長簇抵;但是它不記錄select、show等不修改數(shù)據(jù)庫的 SQL射众。主要用于數(shù)據(jù)庫恢復(fù)和主從復(fù)制碟摆。
SHOW VARIABLES LIKE '%log_bin%'; // 是否開啟
SHOW VARIABLES LIKE '%binlog%';  // 參數(shù)查看
SHOW BINARY LOGS;  // 查看日志文件
  • 慢查詢?nèi)罩荆⊿low query log)
    記錄所有執(zhí)行時間超時的查詢SQL,默認是10秒叨橱。
SHOW VARIABLES LIKE '%slow_query%'; // 是否開啟
SHOW VARIABLES LIKE '%long_query_time%';  // 時長
SET long_query_time = 5; // 設(shè)置慢查詢時長

4.2 配置文件

用于存放 MySQL 所有的配置信息文件典蜕,比如my.cnf、my.ini等罗洗。

4.3 數(shù)據(jù)文件

查看數(shù)據(jù)存儲所在位置

SHOW VARIABLES LIKE '%datadir%'; // 查看數(shù)據(jù)文件所在位置
  • db.opt 文件:記錄這個庫的默認使用的字符集和校驗規(guī)則愉舔。
  • frm 文件:存儲與表相關(guān)的元數(shù)據(jù)(meta)信息,包括表結(jié)構(gòu)的定義信息等栖博,每一張表都會有一個frm文件屑宠。
  • MYD 文件:MyISAM 存儲引擎專用,存放 MyISAM 表的數(shù)據(jù)(data)仇让,每一張表都會有一個.MYD 文件
  • MYI 文件:MyISAM 存儲引擎專用躺翻,存放 MyISAM 表的索引相關(guān)信息丧叽,每一張 MyISAM 表對應(yīng)一個 .MYI 文件
  • ibd 文件 和 IBDATA 文件:存放 InnoDB 的數(shù)據(jù)文件(包括索引)公你。InnoDB 存儲引擎有兩種表空間方式:獨立表空間共享表空間踊淳。獨立表空間使用 .ibd 文件 來存放數(shù)據(jù),且每一張InnoDB 表對應(yīng)一個 .ibd 文件陕靠。共享表空間使用 .ibdata 文件迂尝,所有表共同使用一個(或多個,自行配置).ibdata 文件剪芥。
  • ibdata1 文件:系統(tǒng)表空間數(shù)據(jù)文件垄开,存儲表元數(shù)據(jù)Undo日志等 税肪。
  • ib_logfile0溉躲、ib_logfile1 文件:Redo log 日志文件榜田。

4.4 pid 文件

pid 文件mysqld 應(yīng)用程序在 Unix/Linux 環(huán)境下的一個進程文件,和許多其他 Unix/Linux 服務(wù)端程序一樣锻梳,它存放著自己的進程 id箭券。

4.5 socket 文件

socket 文件 也是在 Unix/Linux 環(huán)境下才有的,用戶在 Unix/Linux 環(huán)境下客戶端連接可以不通過 TCP/IP 網(wǎng)絡(luò)而直接使用 Unix Socket 來連接 MySQL疑枯。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末辩块,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子荆永,更是在濱河造成了極大的恐慌废亭,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件屁魏,死亡現(xiàn)場離奇詭異滔以,居然都是意外死亡,警方通過查閱死者的電腦和手機氓拼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進店門你画,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人桃漾,你說我怎么就攤上這事坏匪。” “怎么了撬统?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵适滓,是天一觀的道長。 經(jīng)常有香客問我恋追,道長凭迹,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任苦囱,我火速辦了婚禮嗅绸,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘撕彤。我一直安慰自己鱼鸠,他們只是感情好,可當我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布羹铅。 她就那樣靜靜地躺著蚀狰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪职员。 梳的紋絲不亂的頭發(fā)上麻蹋,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天,我揣著相機與錄音廉邑,去河邊找鬼哥蔚。 笑死倒谷,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的糙箍。 我是一名探鬼主播渤愁,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼深夯!你這毒婦竟也來了抖格?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤咕晋,失蹤者是張志新(化名)和其女友劉穎雹拄,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體掌呜,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡滓玖,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了质蕉。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片势篡。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖模暗,靈堂內(nèi)的尸體忽然破棺而出禁悠,到底是詐尸還是另有隱情,我是刑警寧澤兑宇,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布碍侦,位于F島的核電站,受9級特大地震影響隶糕,放射性物質(zhì)發(fā)生泄漏瓷产。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一枚驻、第九天 我趴在偏房一處隱蔽的房頂上張望拦英。 院中可真熱鬧,春花似錦测秸、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至钞瀑,卻和暖如春沈撞,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背雕什。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工缠俺, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留显晶,地道東北人。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓壹士,卻偏偏與公主長得像磷雇,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子躏救,可洞房花燭夜當晚...
    茶點故事閱讀 43,446評論 2 348

推薦閱讀更多精彩內(nèi)容