一、Mysql體系結(jié)構(gòu)
? 1.1、連接層
最上層是一個(gè)客戶端和鏈接服務(wù),主要完成一些類似于鏈接處理,授權(quán)認(rèn)證,及相關(guān)的安全方案,服務(wù)器也會為安全接入的而每個(gè)客戶端驗(yàn)證它所具有的操作權(quán)限
1.2、服務(wù)層
第二層架構(gòu)主要完成大多數(shù)的核心服務(wù)功能,如SQL接口,并完成緩存的查詢,SQL的分析和優(yōu)化,部分內(nèi)置函數(shù)的執(zhí)行,所有跨存儲引擎的功能葉子啊這一層實(shí)現(xiàn)如函數(shù)等。
1.3、引擎層
存儲引擎真正的負(fù)責(zé)了Mysql中數(shù)據(jù)的存儲和提起,服務(wù)器通過api和存儲引擎進(jìn)行通信,不同的存儲引擎具有不同的功能,這樣我們可以根據(jù)自己的需要,來選取合適的存儲引擎
1.4、存儲層
主要是將數(shù)據(jù)存儲在文件系統(tǒng)之上,并完成與存儲引擎的交互
?文章來源地址http://www.zghlxwxcb.cn/news/detail-599852.html
二、存儲引擎介紹
2.1、簡介:
存儲引擎就是存儲數(shù)據(jù),建立索引,更新/查詢數(shù)據(jù)等技術(shù)的實(shí)現(xiàn)方式,存儲引擎是基于表的,而不是基于庫的,所以存儲引擎也可以被稱為表類型
2.2、指定引擎語法
create table 表名( 字段1 字段1類型 [comment 字段1注釋], ...... 字段2 字段n類型 [comment 字段n注釋] )engine=InnoDB [comment 表注釋];
說明:mysql5.5之后默認(rèn)的儲存引擎就是InnoDB類型
?
2.3、查看數(shù)據(jù)庫支持的存儲引擎類型:show engines;
mysql> show engines; +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | Engine | Support | Comment | Transactions | XA | Savepoints | +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | ARCHIVE | YES | Archive storage engine | NO | NO | NO | | BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO | | MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO | | FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL | | MyISAM | YES | MyISAM storage engine | NO | NO | NO | | PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO | | InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES | | MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO | | CSV | YES | CSV storage engine | NO | NO | NO | +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ 9 rows in set (0.01 sec)
?
三、InnoDB引擎
3.1、Innodb引擎介紹
InnoDB是一種兼顧高可靠性和高性能的通用存儲引擎,在Mysql5.5之后,InnoDB是默認(rèn)的Mysql存儲引擎
3.2 InnoDB引擎特點(diǎn)
-
- DML操作遵循ACID模型,支持事務(wù);
- 行級鎖,提高并發(fā)訪問性能
- 支持外鍵foreign key約束,保證數(shù)據(jù)的完整性和正確性
3.3 InnoDB引擎文件
xxx.ibd: xxx代表表名,InnoDB引擎的每張表都會對應(yīng)這樣一個(gè)表空間文件,存儲該表的表結(jié)構(gòu)(frm,sdi)、數(shù)據(jù)和索引
參數(shù):innodb_file_per_table 默認(rèn)打開的,每一張表都有一個(gè)獨(dú)立的表結(jié)構(gòu)?
3.4 InnoDB引擎的邏輯存儲結(jié)構(gòu)
?
四、MyISAM引擎
4.1 MyISAM引擎介紹
MyISAM是Mysql5.5以前的默認(rèn)儲存
4.2 MyISAM引擎特點(diǎn)
-
- 不支持事務(wù),不支持外鍵
- 支持表鎖,不支持行鎖
- 訪問速度快
4.3 MyISAN引擎文件
-
- xxx.sdi:儲存表結(jié)構(gòu)信息
- xxx.MYD:儲存數(shù)據(jù)
- xxx.MYI:儲存索引??
?
五、Memory引擎
5.1 Memory引擎介紹
Memory引擎的表數(shù)據(jù)是存儲在內(nèi)存中的,由于收到硬件問題,或斷電問題的影響,只能將這些表作為臨時(shí)表或者緩存表使用
5.2 Memory引擎特點(diǎn)
-
- 內(nèi)存存放,讀取速度塊
- hash索引
5.3 Memory文件
xxx.sdi:存儲表結(jié)構(gòu)信息
?
六、儲存引擎特點(diǎn)對比
?
七、存儲引擎選擇
1、InnoDB引擎
InnoDB是Mysql的默認(rèn)儲存引擎,支持事務(wù),外鍵,如果應(yīng)用對事務(wù)的完整性有比較高的要求,并發(fā)條件下要求數(shù)據(jù)的一致性,數(shù)據(jù)操作除了插入和查詢之外,還包括很多的更新,刪除操作,那么InnoDB儲存引擎是比較合適的選擇。
2、MyISAM引擎
如果是以讀操作和插入操作為主,只有很少的更新和刪除操作,并且對事務(wù)的完整性,并發(fā)性要求不是很高,那么選擇這個(gè)儲存引擎是非常合適的,
3、Memory引擎
將所有的數(shù)據(jù)保存在內(nèi)存中,訪問速度塊,通常用于臨時(shí)表及緩存,Memory的缺陷就是對表的大小限制,太大的表無法緩存在內(nèi)存中,而且無法保障數(shù)據(jù)的安全性。文章來源:http://www.zghlxwxcb.cn/news/detail-599852.html
?
到了這里,關(guān)于Mysql高級1-存儲引擎的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!