存儲引擎比較

MySQL提供了多個不同的存儲引擎,包括處理事務安全表的引擎和處理非事務安全表的引擎。在MySQL中,不需要在整個服務器中使用同一種存儲引擎,可以對同一個表使用不同的存儲引擎,MySQL 5.7支持的引擎有:InnoDB ,MyISAM ,Memory,Merge,Archive,Federate,CSV,BLACKHOLE等。

InnoDB:

InnoDB 是事務型數據庫的首選引擎,支持事務安全表【ACID】,支持行鎖定和外鍵,MySQL5.5.5之後,InnoDB作爲默認的存儲引擎。其特性有:

  1. InnoDB 給MySQL 提供了具有提交,回滾和崩潰恢復能力的事務安全【ACID兼容】存儲引擎。InnoDB 鎖定在行級,並且也在select語句中提供一個類似Oracle 的非鎖定讀,這些功能增加了多用戶部署和性能。在SQL 查詢中,可以自由地將InnoDB類型的表與其他MySQL的表的類型混合起來,甚至在同一個查詢中也可以混合。
  2. InnoDB 是爲處理巨大數據量的最大性能設計。它的CPU 效率可能是任何其他基於磁盤的關係數據庫引擎不能匹敵的。
  3. InnoDB 存儲引擎與MySQL 服務器整合,InnoDB 存儲引擎爲 在主內存中 緩存數據和索引 而維持自己的緩衝池。InnoDB 將它的表和索引存在一個邏輯表空間中,表空間包含數個文件(或原始磁盤分區)。這與MyISAM 表不同,在MyISAM 表中,每個表被存在分離的文件中。InnoDB 表可以是任何尺寸,及時在文件文件尺寸被限制爲2G 的操作系統上。
  4. InnoDB 支持外鍵完整性約束,存儲表中的數據時,每張表的存儲都按主鍵順序存放,如果沒有顯示的在表定義時指定主鍵,InnoDB 會爲每一行生成一個6B的ROWID,並以此作爲主鍵。
  5. InnoDB  被用在衆多需要高性能的大型數據庫站點上。

  InnoDB 不創建目錄,使用 InnoDB時,MySQL 將在MySQL目錄下創建一個名爲ibdatal 的10MB 大小的自動擴展數據文件,以及兩個名爲ib_logfile0 和 ib_logfile1的5MB大小的日誌文件。

MyISAM:

MyISAM 基於ISAM 的存儲引擎,並對其進行擴展。它是在web ,數據庫存儲和其他應用環境下最常用的存儲引擎之一。MyISAM擁有較高的查詢,插入速度,但不支持事務。其特性有:

  1. 大文件【達63位文件長度】在支持大文件的文件系統和操作上被支持。
  2. 當把刪除,更新及插入操作混合使用時,動態尺寸的行產生更少碎片。這要通過合併相鄰被刪的塊,以及若下一個塊被刪除,就擴展到下一塊來自動完成。
  3. 每個 MyISAM 表最大索引數是64,這個可以通過重新編譯來改變,每個索引最大的列數是16個。
  4. 最大的鍵長度是1000B,。對於鍵長度超過250B 的情況,一個超過1024B的鍵將被用上。
  5. BLOB 和 TEXT 列可以被索引。
  6. NULL 被允許在索引的列中,這個值佔每個鍵的0~1 個字節。
  7. 所有數字鍵值以高字節優先存儲以允許一個更高的索引壓縮。
  8. 每表一個AUTO_INCREMENT列的內部處理。MyISAM爲INSERT 和 UPDATE 操作自動更新這一列。這使得AUTO_INCREMENT列更快,在序列頂的值被刪除之後就不能再利用了。
  9. 可以數據文件和索引文件放在不同的目錄。
  10. 每個字符列可以有不用的字符集。
  11. 有 VARCHAR 的表可以固定或者動態記錄長度。
  12. VARCHAR 和 CHAR  列可以多達 64KB.

  使用MyISAM 引擎創建數據庫,將生產三個文件,文件的名字以表的名字開始,擴展名指出文件類型:frm 文件存儲表定義,數據文件的擴展名爲.MYD(MYDData),索引文件的擴展名是 .MYI(MYIIndex)。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章