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。