mysql學習之1——mysql不同引擎的區別
阿新 • • 發佈:2019-02-16
以下表格是經過各種資料和書籍的查詢,經過整理得出來的。可以作為參考,但不一定十分準確,希望讀者及時給與補充和錯誤更正。
引擎名稱 | MyISAM | InnoDB | Archive | Memory | Heap | merge |
是否第三方 | 否 | 是 | 否 | 否 | 否 | 否 |
是否支援事務 | 否 | 是 | 否 | 否 | 否 | 否 |
是否支援外來鍵 | 否 | 是 | 否 | 否 | 否 | 否 |
是否容錯 | 修復資料庫檔案的MyISAMCHK, 恢復浪費空間的 MyISAMPACK, 不能在表損壞後恢復資料 |
自動災難恢復 | mysqld守護程序崩潰時,所有的Memory資料都會丟失 | 在關機之前沒有進行儲存,那麼所有的資料都會丟失 | ||
索引 | B-Tree(參與一個索引的所有欄位長度之和不能超過1000位元組),R-Tree,Full-Text | B+Tree,(Cluster Primary Key,Secondary Index:B-Tree),自適應雜湊索引(根據表的使用情況自動生成,無法進行人為建立) | 不支援 | Hash,B-Tree | B-Tree | B-Tree |
鎖 | 表級鎖定,併發量小 | 行級鎖定,併發量大 | 行級鎖定 | 頁級鎖定 | ||
讀寫速度 | 快 | 慢 | 快 | 最快 | ||
cpu利用率 | 為處理巨大資料量時的最大效能設計,它的CPU效率可能是任何其它基於磁碟的關係資料庫引擎所不能匹敵的 | |||||
查詢快取 | 是 | 是 | 是 | 是 | ||
data緩衝池 | 無 | 有 | 有 | 無 | 無 | |
儲存結構 | 每個表被存在分離的檔案中 | 表&索引在一個表空間中,表空間可以包含數個檔案(或原始磁碟分割槽),可以是任何尺寸,即使檔案尺寸被限制為2GB | ||||
儲存空間 | 小 | 大 | 非常小 | 小 | 小 | 小 |
駐留記憶體 | 否 | 否 | 否 | 是 | 是 | 否 |
限制 | 每個MyISAM表最大索引數是64。 這可以通過重新編譯來改變。每個索引最大的列數是16個 | 僅僅支援最基本的插入和查詢兩種功能 | 不支援Blog,和Text型別的欄位 | 在用完表格之後就刪除表格 | 本身不儲存資料,Merge表就是幾個相同MyISAM表的聚合器 |
以下是幾篇參考文章的地址,以供讀者參考:
淺談MySQL儲存引擎選擇 InnoDB與MyISAM的優缺點分析:
MySQL儲存引擎中的MyISAM和InnoDB區別詳解(非常推薦,講解細緻):