關(guān)于MySQL的體系結(jié)構(gòu)及存儲(chǔ)引擎圖解
一、MySQL的體系結(jié)構(gòu)
① 結(jié)構(gòu)圖

② 各結(jié)構(gòu)的功能
連接層:最上層是一些客戶端和鏈接服務(wù),主要完成一些類(lèi)似于連接處理、授權(quán)認(rèn)證、及相關(guān)的安全方 案。服務(wù)器也會(huì)為安全接入的每個(gè)客戶端驗(yàn)證它所具有的操作權(quán)限。
服務(wù)層:第二層架構(gòu)主要完成大多數(shù)的核心服務(wù)功能,如SQL接口,并完成緩存的查詢(xún),SQL的分析 和優(yōu)化,部分內(nèi)置函數(shù)的執(zhí)行。所有跨存儲(chǔ)引擎的功能也在這一層實(shí)現(xiàn),如過(guò)程、函數(shù)等。
引擎層:存儲(chǔ)引擎真正的負(fù)責(zé)了MySQL中數(shù)據(jù)的存儲(chǔ)和提取,服務(wù)器通過(guò)API和存儲(chǔ)引擎進(jìn)行通信。 不同的存儲(chǔ)引擎具有不同的功能,這樣我們可以根據(jù)自己的需要,來(lái)選取合適的存儲(chǔ)引擎。
存儲(chǔ)層:主要是將數(shù)據(jù)存儲(chǔ)在文件系統(tǒng)之上,并完成與存儲(chǔ)引擎的交互。
二、存儲(chǔ)引擎
① 簡(jiǎn)介及支持

② 建表時(shí),指定引擎
CREATE TABLE表名( 字段1字段1類(lèi)型[COMMENT字段1注釋], ... 字段n字段n類(lèi)型[COMMENT字段n注釋] )ENGINE = INNODB [COMMENT表注釋];
查看當(dāng)前數(shù)據(jù)庫(kù)支持的引擎
SHOW ENGINES;
三、各存儲(chǔ)引擎的特點(diǎn)
InnoDB
介紹:
InnoDB是一種兼顧高可靠性和高性能的通用存儲(chǔ)引擎,在MySQL 5.5之后,InnoDB是默認(rèn)的MySQL存儲(chǔ)引擎。
特點(diǎn):
DML操作遵循ACID模型,支持事務(wù)﹔
行級(jí)鎖,提高并發(fā)訪問(wèn)性能;
支持外鍵FOREIGN KEY約束,保證數(shù)據(jù)的完整性和正確性;
文件:
xxx.ibd: xxx代表的是表名,innoDB引擎的每張表都會(huì)對(duì)應(yīng)這樣一個(gè)表空間文件,存儲(chǔ)該表的表結(jié)構(gòu)(frm、sdi)、數(shù)據(jù)和索引。
參數(shù): innodb_file_per_table

MyISAM
介紹:
MylSAM是MySQL早期的默認(rèn)存儲(chǔ)引擎。
特點(diǎn):
不支持事務(wù),不支持外鍵;
支持表鎖,不支持行鎖訪問(wèn)速度快
文件:
xxx.sdi:存儲(chǔ)表結(jié)構(gòu)信息
xxx.MYD:存儲(chǔ)數(shù)據(jù)
xxx.MYI:存儲(chǔ)索引

Memory
介紹:
Memory引擎的表數(shù)據(jù)時(shí)存儲(chǔ)在內(nèi)存中的,由于受到硬件問(wèn)題、或斷電問(wèn)題的影響,只能將這些表作為臨時(shí)表或緩存使用。
特點(diǎn):
內(nèi)存存放
hash索引(默認(rèn))
文件:
Xxx.sdi:存儲(chǔ)表結(jié)構(gòu)信息
對(duì)以上三種總結(jié):

四、存儲(chǔ)引擎的選擇
在選擇存儲(chǔ)引擎時(shí),應(yīng)該根據(jù)應(yīng)用系統(tǒng)的特點(diǎn)選擇合適的存儲(chǔ)引擎。對(duì)于復(fù)雜的應(yīng)用系統(tǒng),還可以根據(jù)實(shí)際情況選擇多種存儲(chǔ)引擎進(jìn)行組合。
- InnoDB:是Mysql的默認(rèn)存儲(chǔ)引擎,支持事務(wù)、外鍵。如果應(yīng)用對(duì)事務(wù)的完整性有比較高的要求,在并發(fā)條件下要求數(shù)據(jù)的一致性,數(shù)據(jù)操作除了插入和查詢(xún)之外,還包含很多的更新、刪除操作,那么InnoDB存儲(chǔ)引擎是比較合適的選擇。
- MyISAM:如果應(yīng)用是以讀操作和插入操作為主,只有很少的更新和刪除操作,并且對(duì)事務(wù)的完整性、并發(fā)性要求不是很高,那么選擇這個(gè)存儲(chǔ)引擎是非常合適的。
- MEMORY:將所有數(shù)據(jù)保存在內(nèi)存中,訪問(wèn)速度快,通常用于臨時(shí)表及緩存。MEMORY的缺陷就是對(duì)表的大小有限制,太大的表無(wú)法緩存在內(nèi)存中,而且無(wú)法保障數(shù)據(jù)的安全性。
注意:
- DDL:數(shù)據(jù)定義語(yǔ)言:這些語(yǔ)句定義不同的數(shù)據(jù)段、數(shù)據(jù)庫(kù)、表、列、索引等數(shù)據(jù)庫(kù)對(duì)象。常用語(yǔ)句關(guān)鍵字主要包括create,drop,alter,truncate等
- DML:數(shù)據(jù)操作語(yǔ)句:用于添加、刪除、更新和查詢(xún)數(shù)據(jù)庫(kù)記錄,并檢查數(shù)據(jù)完整性。常用語(yǔ)句關(guān)鍵字主要包括 insert,delete,update。
- DCL數(shù)據(jù)控制語(yǔ)句(Data Control Language):用來(lái)授權(quán)或回收訪問(wèn)數(shù)據(jù)庫(kù)的某種特權(quán),并控制數(shù)據(jù)庫(kù)操縱事務(wù)發(fā)生的時(shí)間及效果,能夠?qū)?shù)據(jù)庫(kù)進(jìn)行監(jiān)視。比如常見(jiàn)的授權(quán)、取消授權(quán)、回滾、提交等等操作。
- DQL:數(shù)據(jù)查詢(xún)語(yǔ)言全稱(chēng)是Data Query Language,是用來(lái)進(jìn)行數(shù)據(jù)庫(kù)中數(shù)據(jù)的查詢(xún)的,即最常用的select語(yǔ)句
ACID
原子性:是指事務(wù)是一個(gè)不可再分割的工作單位,事務(wù)中的操作要么都發(fā)生,要么都不發(fā)生。
一致性:是指在事務(wù)開(kāi)始之前和事務(wù)結(jié)束以后,數(shù)據(jù)庫(kù)的完整性約束沒(méi)有被破壞。這是說(shuō)數(shù)據(jù)庫(kù)事務(wù)不能破壞關(guān)系數(shù)據(jù)的完整性以及業(yè)務(wù)邏輯上的一致性。
隔離性:多個(gè)事務(wù)并發(fā)訪問(wèn)時(shí),事務(wù)之間是隔離的,一個(gè)事務(wù)不應(yīng)該影響其它事務(wù)運(yùn)行效果。
持久性:意味著在事務(wù)完成以后,該事務(wù)所對(duì)數(shù)據(jù)庫(kù)所作的更改便持久的保存在數(shù)據(jù)庫(kù)之中,并不會(huì)被回滾。
到此這篇關(guān)于關(guān)于MySQL的體系結(jié)構(gòu)及存儲(chǔ)引擎圖解的文章就介紹到這了,更多相關(guān)MySQL體系結(jié)構(gòu)及存儲(chǔ)引擎內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- MySql存儲(chǔ)引擎的作用
- MySQL之存儲(chǔ)引擎使用及說(shuō)明
- Mysql詳細(xì)剖析數(shù)據(jù)庫(kù)中的存儲(chǔ)引擎
- 關(guān)于Mysql的四種存儲(chǔ)引擎
- MySQL8中的存儲(chǔ)引擎以及文件解析
- MySQL存儲(chǔ)引擎的實(shí)現(xiàn)要素分析
- MySQL之修改數(shù)據(jù)表存儲(chǔ)引擎的三種方式
- MySQL如何改變表的存儲(chǔ)引擎方式
- MySQL數(shù)據(jù)庫(kù)存儲(chǔ)引擎的應(yīng)用
- Mysql中的默認(rèn)存儲(chǔ)引擎
- 一文詳解MySQL 存儲(chǔ)引擎
相關(guān)文章
MySQL數(shù)據(jù)庫(kù)遷移到Oracle數(shù)據(jù)庫(kù)的完整步驟記錄
在研發(fā)過(guò)程中可能會(huì)用到將表數(shù)據(jù)庫(kù)中的表結(jié)構(gòu)及數(shù)據(jù)遷移到另外一種數(shù)據(jù)庫(kù)中,比如說(shuō)從mysql中遷移到oracle中,這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫(kù)遷移到Oracle數(shù)據(jù)庫(kù)的完整步驟,需要的朋友可以參考下2024-06-06
MySQL的存儲(chǔ)函數(shù)與存儲(chǔ)過(guò)程相關(guān)概念與具體實(shí)例詳解
MySQL存儲(chǔ)函數(shù)(自定義函數(shù)),函數(shù)一般用于計(jì)算和返回一個(gè)值,可以將經(jīng)常需要使用的計(jì)算或功能寫(xiě)成一個(gè)函數(shù),存儲(chǔ)函數(shù)和存儲(chǔ)過(guò)程一樣,都是在數(shù)據(jù)庫(kù)中定義一些SQL語(yǔ)句的集合2023-03-03
MySQL導(dǎo)入導(dǎo)出助手類(lèi)庫(kù)MysqlHelper安裝使用
這篇文章主要為大家介紹了MySQL導(dǎo)入導(dǎo)出助手類(lèi)庫(kù)MysqlHelper安裝使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09
PHP mysqli擴(kuò)展庫(kù) 預(yù)處理技術(shù)的使用分析
本篇文章,介紹了PHP mysqli擴(kuò)展庫(kù) 預(yù)處理技術(shù)的使用分析。需要的朋友參考下2013-05-05
Mysql 5.7 忘記root密碼或重置密碼的詳細(xì)方法
在Centos中安裝完MySQL數(shù)據(jù)庫(kù)以后,不知道密碼,這可怎么辦,下面給大家說(shuō)一下怎么重置密碼2016-12-12
windows下MySQL5.6版本安裝及配置過(guò)程附有截圖和詳細(xì)說(shuō)明
這篇文章主要介紹了windows下MySQL5.6版本安裝及配置過(guò)程附有截圖和詳細(xì)說(shuō)明,需要的朋友可以參考下2013-06-06
MySQL性能參數(shù)詳解之Skip-External-Locking參數(shù)介紹
MySQL的配置文件my.cnf中默認(rèn)存在一行skip-external-locking的參數(shù),即跳過(guò)外部鎖定。根據(jù)MySQL開(kāi)發(fā)網(wǎng)站的官方解釋?zhuān)珽xternal-locking用于多進(jìn)程條件下為MyISAM數(shù)據(jù)表進(jìn)行鎖定2016-05-05
MySQL刪除數(shù)據(jù)后自增主鍵ID不連貫問(wèn)題及解決
這篇文章主要介紹了MySQL刪除數(shù)據(jù)后自增主鍵ID不連貫問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-09-09

