1. 程式人生 > >資料庫-->淺談Mysql不同儲存引擎之間的區別

資料庫-->淺談Mysql不同儲存引擎之間的區別

MyISAM儲存引擎

缺點:不支援事務、不支援外來鍵
優點:訪問速度快,支援全文索引、壓縮索引
應用場景:對事務完整性沒有要求或者以select/insert為主的應用基本上可以用這個引擎建立表

InnoDB儲存引擎

缺點:相對MyISAM引擎寫的處理速率會差一些,並且會佔用更多的磁碟空間以保留資料和索引
優點:支援事務、支援自增長列、支援外來鍵約束

Memory儲存引擎

缺點:一旦服務關閉,表中資料就會丟失
優點:Memory儲存引擎使用存在於記憶體中的內容來建立表,每個memory表對應一個.frm磁碟檔案。訪問速度非常快,預設使用hash索引,可選擇B-tree索引    

Merge儲存引擎

-- 一組MyISAM表的組合       

InnoDB 和 MyISAM對比

-- 事務:MyISAM不支援事務,InnoDB支援事務以及外來鍵約束
-- 效能:MyISAM的表強調的是效能
-- 行數儲存:InnoDB不儲存表的具體行數,select count(*) from table ,InnoDB要掃描整張表來計算多少行,而MyISAM只需要讀取儲存的資料即可。
            當count(*)包含where條件時,兩種型別操作一樣
-- 索引:對於AUTO_INCREMENT型別的欄位,InnoDB中必須包含只有該欄位的索引,但是MyISAM表中可以和其他欄位建立聯合索引
        MyISAM支援全文索引、壓縮索引,InnoDB不支援
        MyISAM的索引和資料是分開的,並且索引有壓縮而InnoDB的索引和資料是金幣捆綁的
-- 伺服器資料備份:InnoDB必須匯出SQL來備份,而MyISAM資料恢復速度快,MyISAM的資料是以檔案的形式儲存,
                 跨平臺資料轉移方便,InnoDB是拷貝資料檔案、備份binlog或者用mysqldump,資料量大比較麻煩                  
-- 鎖的支援:MyISAM只支援表鎖,InnoDB支援表鎖、行鎖
            InnoDB的行鎖,只有在where條件是主鍵有效,非主鍵會鎖全表

索引型別

B-Tree索引
    -- 從根節點到枝節點,最後才能訪問到頁節點
Hash索引  
    -- 檢索一次定位,查詢效率非常高
    -- 不支援‘like’模糊查詢      
ISAM索引
    -- 順序儲存        

持續更