MySQL之senior(九)——儲存引擎(瞭解)
阿新 • • 發佈:2021-10-22
儲存引擎是MySQL中特有的一個術語,其它資料庫中沒有。(Oracle中有,但是不叫這個名字)
儲存引擎這個名字高階大氣上檔次。
實際上儲存引擎是一個表儲存/組織資料的方式。
不同的儲存引擎,表儲存資料的方式不同。
MySQL儲存引擎
show engines;
9大儲存引擎,目前支援8個
MyISAM儲存引擎
它管理的表具有以下特徵:
使用三個檔案表示每個表:
格式檔案 — 儲存表結構的定義(mytable.frm)
資料檔案 — 儲存錶行的內容(mytable.MYD)
索引檔案 — 儲存表上索引(mytable.MYI):索引是一本書的目錄,縮小掃描範圍,提高查詢效率的一種機制。
可被轉換為壓縮、只讀表來節省空間
提示:
對於一張表來說,只要是主鍵,
或者加有unique約束的欄位上會自動建立索引。
MyISAM儲存引擎特點:可被轉換為壓縮、只讀表來節省空間(優勢)
MyISAM不支援事務機制,安全性低。
InnoDB儲存引擎:
這是mysql預設的儲存引擎,同時也是一個重量級的儲存引擎。
InnoDB支援事務,支援資料庫崩潰後自動恢復機制。
InnoDB儲存引擎最主要的特點是:非常安全。
它管理的表具有下列主要特徵:
– 每個 InnoDB 表在資料庫目錄中以.frm 格式檔案表示
– InnoDB 表空間 tablespace 被用於儲存表的內容(表空間是一個邏輯名稱。表空間儲存 資料與索引。)
– 提供一組用來記錄事務性活動的日誌檔案
– 用 COMMIT(提交)、SAVEPOINT 及ROLLBACK(回滾)支援事務處理
– 提供全 ACID 相容
– 在 MySQL 伺服器崩潰後提供自動恢復
– 多版本(MVCC)和行級鎖定
– 支援外來鍵及引用的完整性,包括級聯刪除和更新
InnoDB最大的特點就是支援事務:
以保證資料的安全。效率不是很高,並且也不能壓縮,不能轉換為只讀,
不能很好的節省儲存空間。
MEMORY儲存引擎
使用 MEMORY 儲存引擎的表,其資料儲存在記憶體中,且行的長度固定,
這兩個特點使得 MEMORY 儲存引擎非常快。
MEMORY 儲存引擎管理的表具有下列特徵:
– 在資料庫目錄內,每個表均以.frm 格式的檔案表示。
– 表資料及索引被儲存在記憶體中。(目的就是快,查詢快!)
– 表級鎖機制。
– 不能包含 TEXT 或 BLOB 欄位。
MEMORY 儲存引擎以前被稱為HEAP 引擎。
MEMORY引擎優點:查詢效率是最高的。不需要和硬碟互動。
MEMORY引擎缺點:不安全,關機之後資料消失。因為資料和索引都是在記憶體當中。