十八、Mysql儲存引擎並不只有MyISAM、InnoDB——精髓

Hro發表於2018-12-18

一、MySQL的儲存引擎包括MyISAM、InnoDB、NDB Cluster、Maria、Falcon、Memory、Archive、Merge、Federated等,其中使用最廣泛的是MyISAM、InnoDB;在MySQL5.5.8之後InnoDB成為MySQL預設的儲存引擎;
  1、MyISAM
    1)、不支援事務,不支援外來鍵,支援全文索引,處理速度快;
    2)、MyISAM儲存引擎的表儲存成3個檔案,檔名與表名相同,副檔名分別為:frm(儲存表結構),MYD(儲存表資料),MYI(儲存表索引)

  2、InnoDB
    1)、支援事務,支援行鎖,支援外來鍵
    2)、表的結構儲存於.frm檔案中。資料和索引儲存在innodb_data_home和innodb_data_path表空間中;
    3)、實現了SQL的4中隔離級別(READ UNCOMMITTED、READ COMMITTED、REPEATABLE和SERIALIZABLE)

  3、NDB Cluster
    1)、負責管理各個節點的Manage節點主機,負責叢集的配置,啟動關閉各節點,以及實施資料的備份恢復等
    2)、主鍵查詢速度極快,並通過新增NDB資料儲存節點可以線性的提交資料庫效能,是高可用,高效能的叢集系統;
    3)、查詢連線操作是在資料庫層完成的,開銷大;

  4、Maria
    1)、支援快取資料和索引檔案,應用行鎖設計,提供MVCC功能;
    2)、支援事務和非事務安全的選項,以及更好的BLOB字元型別的處理效能;

  5、Falcon
    1)、一款替代當前InnoDB儲存引擎的帶有事務等高階特性的資料庫儲存引擎,
    2)、不使用cluster索引,不支援read uncommited 隔離級別,
    3)、不支援語句級複製,為了保證日誌和資料檔案的一致性。
    4)、支援表空間的概念,innodb只有資料檔案概念,但是資料和索引表空間不能分開。支援線上備份

  6、Memory
    1)、資料儲存在記憶體中,表結構以檔案儲存於磁碟,檔名與表名相同,字尾名為frm;
    2)、預設使用雜湊索引,可以按需求指定索引型別;只支援表鎖,併發效能較差;
    3)、不支援VARCHAR、BLOB和TEXT的列型別;

  7、Archive
    1)、只支援INSERT、REPLACE和SELECT操作,不支援DELETE或UPDATE。它支援ORDER BY操作;
    2)、使用zlib演算法將資料和進行壓縮後儲存;
    3)、使用行鎖來實現高併發的插入操作,但不支援事務;

  8、Merge
    1)、一組MyISAM表的組合,這些表的結構必須完全一樣,查詢時表合併起來使用一條查詢;

  9、Federated
    1)、不存放資料,只提供對遠端MySQL伺服器上面的資料的訪問介面

相關文章