1、存儲引擎mysql
1.Mariadb存儲引擎sql
存儲引擎就是指表的類型,決定了表在計算機中的存儲方式,在MySQl中是一個插入式的存儲引擎概念。決定了MySQl數據庫中的表可使用不一樣的存儲方式存儲。數據庫
2.mysql支持的存儲引擎(Mariadb-servver5.5.44)緩存
MariaDB[(none)]> SHOW ENGINES;安全
說明:服務器
MariaDB 中相似Innodb的存儲引擎實際上爲XtraDB (percona社區提供) InnoDB的加強改進,但仍然叫作InnoDB併發
2、Innodb存儲引擎ide
1.Innodb特性概述函數
(1) 處理大量的短時間(小)事務;具備自動崩潰恢復特性高併發
(2) 數據存儲於"表空間(tablespace)"中;自行管理的黑盒;其內部組織爲多個文件,表現爲一個文件
(3) 可直接存儲於裸設備中,而無需文件系統支持
(4)基於MVCC來支持高併發,支持全部的四個隔離級別,默認級別爲REPEATABLEREAD(可重讀功能); 間隙鎖防止幻讀;
(5)Innodb表使用匯集索引;也支持"自適應hash索引"(沒法顯示建立,InnoDB內部自行維護)
(6)鎖粒度:行級鎖(一部份內容)
2.innodb表空間存儲方式
(1) 全部InnoDB表的數據和索引放置於同一個表空間中;表空間文件存儲於datadir定義的目錄下
數據文件(存儲數據和索引):ibddata1, ibddata2, ...存滿了自動擴張,可限制單個表的物理空間大小
(2) 每一個表單獨使用一個表空間存儲表的數據和索引;才能實現各類高級功能
參數:innodb_file_per_table=ON
數據文件(存儲數據和索引):tbl_name.ibd,
表格式定義(每一個表多少字段,每一個字段的名稱等信息):tbl_name.frm
注意:
此方式存儲數據當清空表數據,而不會清空表格式;由於數據和文件使用不一樣的文件分開存儲
3、MyISAM存儲引擎
1.MyISAM概述
(1)特性
最先的存儲引擎,也最成熟。早些服務於數據倉庫(較少的插入操做可是較多的讀操做的場景),不適用於在線事務處理的應用場景。
支持全文索引(FULLTEXTindex)
支持直接對錶數據壓縮
支持空間函數(GIS)
不支持事務,且爲表級鎖(鎖粒度粗糙);
崩潰後沒法安全恢復,能夠手動check恢復,但時間長
注意:
Mariadb對MyISAM作了加強,爲Aria存儲引擎;其支持崩潰後安全恢復
(2)適用場景
只讀(或者寫較少)、表較小(能夠接受長時間進行修復操做)
2.數據文件存儲
每一個表有三個文件進行數據的存儲
表格式定義文件 |
tbl_name.frm |
數據文件 |
tbl_name.MYD |
索引文件 |
tbl_name.MYI |
行格式:
dynamic變長字段動態行, fixed固定長度的行長短, compressed 壓縮後存放, compact緊緻的, redundent冗餘方式
4、MySQL支持的其它存儲引擎
1.CSV:將普通的CSV(字段經過逗號分隔)做爲MySQL表使用;
2.MRG_MYISAM:將多個MyISAM表合併成爲一個虛擬表;
3.BLACKHOLE:相似於/dev/null,不真正存儲任何數據;
4.MEMORY:全部數據都保存於內存中,內存表;支持hash索引;表級鎖;通常用於對臨時表採起的操做
5.PERFORMANCE_SCHEMA:僞存儲引擎;mysql關閉會消失不見
6.ARCHIVE:只支持SELECT和INSERT操做;支持行級鎖和專用緩存區;不支持事務;可用於數據倉庫,作不可能發生改變,歸檔保存的再也不作修改的歷史數據
7.FEDERATED:用於訪問其它遠程MySQL服務器一個代理,它經過建立一個到遠程MySQL服務器的客戶端鏈接,並將查詢傳輸到遠程服務器執行,然後完成數據存取;在MariaDB的上實現是FederatedX
8.其餘
OQGraph、SphinxSE、TokuDB、Cassandra、CONNECT、SQUENCE