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

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

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

邏輯分層數據庫

下面是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。

相關文章
相關標籤/搜索