1. 程式人生 > >MySQL各種引擎特點簡述

MySQL各種引擎特點簡述

資料庫的儲存引擎是對錶進行某種設定,儲存引擎決定該表的資料儲存方式、資料更新方式、資料查詢效能以及是否支援索引、事務處理效能等。MySQL常用的幾種引擎有:MyISAM、InnoDB、MEMORY、CSV、BLACKHOLE、ARCHIVE、PERFORMANCE_SCHEMA、Merge等

  • MyISAM

    MyIASM是MySQL預設的引擎,使用一種表格鎖定的機制來優化多個併發的讀寫操作。需要經常執行OPTIMIZE TABLE命令,來恢復被更新機制所浪費的空間,否則碎片也會隨之增加,最終影響資料訪問效能。
    優點:1、MyISAM表是獨立於作業系統的,這說明可以輕鬆地將其從Windows伺服器移植到Linux伺服器。2、MyISAM儲存引擎在查詢大量資料時非常迅速,這是它最突出的優點。3、另外進行大批量插入操作時執行速度也比較快。4、單獨儲存了表的行數。
    缺點:1、MyISAM表沒有提供對資料庫事務的支援。2、不支援行級鎖和外來鍵。3、不適合用於經常UPDATE

    (更新)的表,效率低

  • InnoDB
    優點:1、提供事物支援。2、提供系統崩潰修復能力。3、支援多版本併發控制(即MVCC Multi-Version Concurrency Control)的行級鎖,由於鎖粒度小,寫操作和更新操作併發高、速度快。適合更新頻繁的表。4、支援自增長列。5、支援外來鍵。6、適合於大容量資料庫系統,支援自動災難恢復。

  • MEMORY(又稱HEAP)
    為了得到最快的響應時間,MEMORY引擎採用的邏輯儲存介質是系統記憶體
    優點:1、在記憶體中儲存表資料具有很高的效能。2同時支援雜湊索引和B樹索引。
    缺點:1、MySQL守護程序崩潰是,所有memory資料都會丟失。2、不能使用長度可變的資料型別(如BLOB和TEXT),但varchar型別可用(varchar在MySQL內部被當做char型別)
    以下幾種情況適合使用Memory引擎:
    1、目標資料較小,且被頻繁訪問。
    2、表資料時臨時的、且要求立即使用
    3、Memory表資料丟、不會對應用服務產生實質影響

注:B樹索引的優於雜湊索引的是,可以使用部分查詢和通配查詢,也可以使用<、>和>=等操作符方便資料探勘。雜湊索引進行“相等比較”非常快,但是對“範圍比較”的速度多了,因此雜湊索引值適合使用在=和<>的操作符中,適合在<或>操作符中,也同樣適合用在order by子句中。

  • CSV(Comma-Separated Values逗號分隔值)
    使用該引擎的MySQL資料庫表會在MySQL安裝目錄data資料夾中與該表所在資料庫名相同的目錄中生成一個.CSV檔案(所以,它可以將CSV型別的檔案當做表進行處理),這種檔案是一種普通文字檔案,每個資料行佔用一個文字行。該種類型的儲存引擎不支援索引,即使用該種類型的表沒有主鍵列;另外也不允許表中的欄位為null。

  • ARCHIVE
    ARCHIVE儲存引擎非常適合儲存大量獨立的、作為歷史記錄的資料。區別於InnoDB和MyISAM這兩種引擎,ARCHIVE提供了壓縮功能,擁有高效的插入速度,但是這種引擎不支援索引,所以查詢效能較差一些。
    引擎主要用於收集資料庫伺服器效能引數。這種引擎提供以下功能:提供程序等待的詳細資訊,包括鎖、互斥變數、檔案資訊;儲存歷史的事件彙總資訊,為提供MySQL伺服器效能做出詳細的判斷;對於新增和刪除監控事件點都非常容易,並可以隨意改變mysql伺服器的監控週期,例如(CYCLE、MICROSECOND)。

  • PERFORMANCE_SCHEMA
    PERFORMANCE_SCHEMA引擎主要用於收集資料庫伺服器效能引數。這種引擎提供以下功能:提供程序等待的詳細資訊,包括鎖、互斥變數、檔案資訊;儲存歷史的事件彙總資訊,為提供MySQL伺服器效能做出詳細的判斷;對於新增和刪除監控事件點都非常容易,並可以隨意改變mysql伺服器的監控週期,例如(CYCLE、MICROSECOND)

  • Merge
    Merge引擎將一定數量的MyISAM表聯合而成一個整體,且這些MyISAM表結構必須完全相同。如對每個月的日誌表整合,用於生成一年的報表。

  • BLACKHOLE(黑洞引擎)
    該儲存引擎支援事務,而且支援mvcc的行級鎖,寫入這種引擎表中的任何資料都會消失,主要用於做日誌記錄或同步歸檔的中繼儲存,這個儲存引擎除非有特別目的,否則不適合使用。