35、mysql儲存引擎
mysql 儲存引擎:儲存引擎也通常被稱作“表型別”
檢視所有支援的儲存引擎
SHOW ENGINES;
檢視指定表的儲存引擎
SHOW TABLE STATUS [{FROM | IN} db_name] [LIKE 'pattern' | WHERE expr]
SHOW TABLE STATUS IN mydb\G;
SHOW TABLE STATUS IN mydb LIKE 't1'\G;
SHOW TABLE STATUS IN mydb WHERE Name='t1'\G;
Name 表名
Engine 儲存引擎
Version 版本
Row_format 行格式
Rows 表中的行數
Avg_row_length 平均每行包含的位元組數
Data_length 表中資料總體大小,單位為位元組
Max_data_length 表能夠佔用的最大空間,單位為位元組,0表示沒有上限
Index_length 索引的大小,單位為位元組
Data_free 對於MyISAM表,表示已經分配但尚未使用的空間,其中包含此前刪除行之後騰出來的空間
Auto_increment 下一個AUTO_INCREMENT的值
Create_time 表的建立時間
Update_time 表資料的最後一次修改時間
Check_time 使用CHECK TABLE或myisamchk最近一次檢查表的時間
Collation 排序規則
Checksum 如果啟動,則為表的checksum
Create_options 建立表時指定使用的其他選項
Comment 表的註釋資訊
InnoDB
兩種格式:
1.innodb_file_per_table=OFF,即是用共享表空間
每個表一個獨有的格式定義檔案:tb_name.frm
還有一個預設位於資料目錄下的共享的表空間檔案:ibdata#
2.innodb_file_per_table=ON,即是用獨立表空間
每個表在資料庫目錄下儲存兩個檔案
tb_name.frm
tb_name.ibd
MyISAM:
每個表都在資料庫目錄下儲存三個檔案
tb_name.frm
tb_name.MYD
tb_name.MYI
表空間: table space ,由InnoDB管理的特有格式資料檔案,內部可同時儲存資料和索引
SHOW VARIABLES LIKE '%engine%';
如何修改預設儲存引擎:通過default_storage_engine服務變數實現
各儲存引擎的特性:
InnoDB:
支援事務,有事務日誌
ib_logfile0
ib_logfile1
支援外來鍵約束(MyISAM不支援外來鍵)
支援MVCC(多版本併發控制)
支援聚簇索引(資料和索引存放在一起)
聚簇索引之外的其他索引,通常稱之為輔助索引
行級鎖:間隙鎖
支援使用輔助索引
支援自使用hash索引
支援熱備份(依賴此特性innodb_file_per_table=ON)
MyISAM:
全文索引
支援表壓縮存放:做資料倉庫,能節約儲存空間並提升效能
支援空間索引
表級鎖
延遲更新索引
不支援事務、外來鍵和行級鎖
崩潰後無法安全恢復資料
使用場景:只讀資料,表較小,能夠忍受崩潰後的修復操作和資料丟失
ARCHIVE
僅支援INSERT和SELECT,支援很好壓縮功能
應用於儲存日誌資訊,或其他按照時間序列實現的資料採集類的應用
CSV:
將資料儲存為CSV格式,不支援索引,僅使用與資料交換場景
BLACKHOLE:
沒有儲存機制,任何發往次引擎的資料都會丟棄,其會記錄二進位制日誌,因此,常用於多級複製架構中作中轉伺服器
MEMORY:
儲存資料在記憶體中,記憶體表;常用於儲存中間資料,如週期性的聚合資料等,也用於實現臨時表
支援hash索引,使用表級鎖,不支援BLOB和TEXT資料型別
MRG_MYISAM:
是MYISAM的一個變種,能夠將多個MyISAM表合併成一個虛表
NDB:
是MySQL CLUSTER中專用的儲存引擎、
第三方的儲存引擎
OLPT
XtraDB:增強的InnoDB,有Percona提供
編譯安裝時,下載XtraDB的原始碼替代MySQL儲存引擎中的InnoDB的原始碼
PBXT:MariaDB自帶此儲存引擎
支援引擎級別的複製、外來鍵約束,對SSD磁碟提供適當支援
支援事務、MVCC
TokuDB:使用 Fractal Trees索引,適用儲存大資料,擁有很好的壓縮比,已經被引入MariaDB
列式資料儲存引擎:
Infobright:目前較有名的列式引擎,適用於海量資料儲存場景,如PB級別,專為資料分析和資料倉庫設計
InfiniDB
MonetDB
LucidDB
開源社群儲存引擎:
Aria:前身為Maria,是增強版的MyISAM(支援崩潰後安全恢復,支援資料快取)
Groona:全文索引引擎
Mroonga:是基於Groona的二次開發版
OQGraph:由open query研發,支援圖(網狀 )結構的儲存引擎
SphinxSE:為Sphinx全文搜尋伺服器提供了SQL介面
Spider:能將資料切分成不同的分片,比較高效透明的實現了分片(shared),並支援在分片上支援並行查詢
如何選擇??
是否需要事務
備份的型別的支援
崩潰後的恢復
特有的特性