1. 程式人生 > 其它 >MySQL之senior(九)——儲存引擎(瞭解)

MySQL之senior(九)——儲存引擎(瞭解)

MySQL之senior(九)——儲存引擎(瞭解)

定義

儲存引擎是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引擎缺點:不安全,關機之後資料消失。因為資料和索引都是在記憶體當中。