MySQL——邏輯分層與存儲引擎


MySQL是最受歡迎的開源SQL數據庫管理系統,由Oracle Corporation開發,分發和支持。

MySQL網站(http://www.mysql.com/)提供有關MySQL軟件的最新信息。

邏輯分層

下面是MySQL的邏輯分層圖:

連接層:連接與線程處理,這一層並不是MySQL獨有,一般的基於C/S架構的都有類似組件,比如連接處理、授權認證、安全等。

服務層:包括緩存查詢、解析器、優化器,這一部分是MySQL核心功能,包括解析、優化SQL語句,查詢緩存目錄,內置函數(日期、時間、加密等函數)的實現。

引擎層:負責數據存儲,存儲引擎的不同,存儲方式、數據格式、提取方式等都不相同,這一部分也是很大影響數據存儲與提取的性能的;對存儲層的抽象。

存儲層:存儲數據,文件系統。

存儲引擎

存儲引擎是數據庫底層軟件組織,數據庫管理系統(DBMS)使用數據引擎進行創建、查詢、更新和刪除數據。不同的存儲引擎提供不同的存儲機制、索引技巧、鎖定水平等功能,使用不同的存儲引擎,還可以 獲得特定的功能。現在許多不同的數據庫管理系統都支持多種不同的數據引擎;特別提示:存儲引擎針對於數據表。

查看數據庫支持的存儲引擎:show engines;

看到MySQL給用戶提供了這么多存儲引擎,包括支持事務的引擎和不支持事務的引擎。

如果要想查看數據庫默認使用哪個引擎,可以通過使用命令: show variables like '%storage_engine%';

舉例:創建表,默認的存儲引擎(InnoDB)

建表語句

create table default_table(
id int auto_increment,
name varchar(10) not null,
primary key(id)
);

查看建表語句

show create table default_table;

舉例:創建表並指定存儲引擎(MyISAM)

create table define_table(
id int auto_increment,
name varchar(10) not null,
primary key(id)
)engine=myisam;

InnoDB,MyISAM的主要區別:

InnoDB:在MySQL5.5開始作為默認的存儲引擎,支持事務,行級鎖,適合高並發場景,XA協議支持分布式事務。

MyISAM:不支持事務,性能優先,表級鎖,不適合高並發場景。

舉例(可能不恰當):通過count(0)簡單分析InnoDB和MyISAM性能區別,explain/desc是分析sql語句的關鍵字

default_table表的存儲引擎為InnoDB,count(0)需要掃描表;

define_table表的存儲引擎為MyISAM,count(0)不需要掃描表,MyISAM將表的記錄數單獨存儲,性能要優於InnoDB。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM