Mysql詳細(xì)剖析數(shù)據(jù)庫(kù)中的存儲(chǔ)引擎
前言??
哈嘍各位友友們??,我今天又學(xué)到了很多有趣的知識(shí),現(xiàn)在迫不及待的想和大家分享一下!??我僅已此文,和大家分享【Mysql系列】——詳細(xì)剖析數(shù)據(jù)庫(kù)中的存儲(chǔ)引擎~都是精華內(nèi)容,可不要錯(cuò)過(guò)喲!?。??????
存儲(chǔ)引擎
什么是存儲(chǔ)引擎?
存儲(chǔ)引擎是數(shù)據(jù)庫(kù)中非常關(guān)鍵的部分,它就像是飛機(jī)、火箭中的引擎那樣。我們能不能把飛機(jī)上的存儲(chǔ)引擎發(fā)到火箭上去呢? 顯然是不可能的,因?yàn)橐娴氖褂檬且词褂玫膱?chǎng)景的。而在Mysql中,存儲(chǔ)引擎也是一樣的,其沒(méi)有好壞之分。我們需要在合適的場(chǎng)景下使用合適的存儲(chǔ)引擎才是我們需要做到位的。存儲(chǔ)引擎就是存儲(chǔ)數(shù)據(jù)、建立索引、更新/查詢數(shù)據(jù)等技術(shù)的實(shí)現(xiàn)方式。存儲(chǔ)引擎是基于表的,而不是基于庫(kù)的,所以存儲(chǔ)引擎也可以被稱為表類型。
Mysql的體系結(jié)構(gòu):
Mysql的體系結(jié)構(gòu)分為四層:
MYsql的體系結(jié)構(gòu)如下圖所示:
連接層
最上層是一些客戶端和鏈接服務(wù),主要完成一些類似于連接處理,授權(quán)認(rèn)證,及相關(guān)的安全方案,服務(wù)器也會(huì)為安全接入的每個(gè)客戶端驗(yàn)證它所具有的操作權(quán)限。
服務(wù)層
第二層架構(gòu)主要完成大多數(shù)的核心服務(wù)功能,如SOL接口,并完成緩存的查詢,SOL的分析和優(yōu)化,部分內(nèi)置函數(shù)的執(zhí)行。所有跨存儲(chǔ)引擎的功能也在這一層實(shí)現(xiàn),如 過(guò)程、函數(shù)等。
引擎層
存儲(chǔ)引警真正的負(fù)責(zé)了MvSOL中數(shù)據(jù)的存儲(chǔ)和提取,服務(wù)器通過(guò)API和存儲(chǔ)引警進(jìn)行通信。不同的存儲(chǔ)引擎具有不同的功能,這樣我們可以根據(jù)自己的需要,來(lái)選取合適的存儲(chǔ)引擎。
存儲(chǔ)層
主要是將數(shù)據(jù)存儲(chǔ)在文件系統(tǒng)之上:并完成與存儲(chǔ)引擎的交互。
存儲(chǔ)引擎的查看
存儲(chǔ)引擎是有很多的,在MYsql 5.5 之后,默認(rèn)的存儲(chǔ)引擎是InnoDB 存儲(chǔ)引擎。之前默認(rèn)的是Memory 存儲(chǔ)引擎。
show engines;
create table Course( Con int primary key auto_increment, Cname varchar(10), Cpon int, Ccredit int ) show create table course;
存儲(chǔ)引擎的指定
例如,我們可以在創(chuàng)建表的同時(shí),指定此表的存儲(chǔ)引擎類型。
create table test_mysql( name varchar(10), age int ) engine = Memory;
存儲(chǔ)引擎的特點(diǎn)
這里重點(diǎn)介紹以下 InnoDB
InnoDB介紹
InnoDB是一種兼顧高可靠性和高性能的通用存儲(chǔ)引擎,在 MvSOL 5.5 之后,InnoDB是默認(rèn)的 MvSOL存儲(chǔ)引擎。
InnoDB特點(diǎn)
- DML操作遵循ACID模型,支持事務(wù);
- 行級(jí)鎖,提高并發(fā)訪問(wèn)性能;
- 支持外鍵FOREIGN KEY約束,保證數(shù)據(jù)的完整性和正確性:
InnoDB文件
- xxx.ibd:xxx代表的是表名,innoDB引擎的每張表都會(huì)對(duì)應(yīng)這樣一個(gè)表空間文件,存儲(chǔ)該表的表結(jié)構(gòu)(frm、sdi)、數(shù)據(jù)和索引。
- 參數(shù):innodb file per table
最后用一張圖,來(lái)展示一下InnoDB 的邏輯存儲(chǔ)結(jié)構(gòu)。
總結(jié):InnoDB 是支持事務(wù)的,而MyISAM不支持;InnoDB 是支持行鎖的,而MyISAM不支持,支持表鎖;InnoDB 是支持外鍵的,而MyISAM不支持;
存儲(chǔ)引擎的選擇
總結(jié)撒花??
本篇文章旨在分享【Mysql系列】——詳細(xì)剖析數(shù)據(jù)庫(kù)中的存儲(chǔ)引擎。希望大家通過(guò)閱讀此文有所收獲!??
以上就是Mysql詳細(xì)剖析數(shù)據(jù)庫(kù)中的存儲(chǔ)引擎的詳細(xì)內(nèi)容,更多關(guān)于剖析數(shù)據(jù)庫(kù)的存儲(chǔ)引擎的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- MySql存儲(chǔ)引擎的作用
- MySQL之存儲(chǔ)引擎使用及說(shuō)明
- 關(guān)于Mysql的四種存儲(chǔ)引擎
- 關(guān)于MySQL的體系結(jié)構(gòu)及存儲(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千萬(wàn)數(shù)據(jù)量深分頁(yè)優(yōu)化流程(拒絕線上故障)
這篇文章主要為大家介紹了MySQL千萬(wàn)數(shù)據(jù)量深分頁(yè)優(yōu)化拒絕線上故障,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05MySQL表操作插入數(shù)據(jù)insert語(yǔ)句學(xué)習(xí)(小白入門篇)
這篇文章主要為大家介紹了MySQL表操作插入數(shù)據(jù)insert語(yǔ)句學(xué)習(xí)小白入門篇,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05解析MySQL設(shè)置當(dāng)前時(shí)間為默認(rèn)值的方法
本篇文章是對(duì)MySQL設(shè)置當(dāng)前時(shí)間為默認(rèn)值的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06MySQL產(chǎn)生隨機(jī)數(shù)并連接字符串的方法示例
這篇文章主要介紹了MySQL產(chǎn)生隨機(jī)數(shù)并連接字符串的方法,簡(jiǎn)單分析了相關(guān)函數(shù),并結(jié)合實(shí)例形式給出了相應(yīng)的SQL語(yǔ)句實(shí)現(xiàn)方法,需要的朋友可以參考下2017-05-05淺談mysql導(dǎo)出表數(shù)據(jù)到excel關(guān)于datetime的格式問(wèn)題
這篇文章主要介紹了淺談mysql導(dǎo)出表數(shù)據(jù)到excel關(guān)于datetime的格式問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07MySQL創(chuàng)建和刪除表操作命令實(shí)例講解
這篇文章主要介紹了MySQL創(chuàng)建和刪除表操作命令實(shí)例講解,本文講解了創(chuàng)建表、創(chuàng)建臨時(shí)表、查看已經(jīng)創(chuàng)建的mysql表等內(nèi)容,需要的朋友可以參考下2014-12-12