InnoDB 和 MyISAM存儲引擎的介紹以及區別

1.InnoDB存儲引擎的介紹

InnoDB是MySQL默認的存儲引擎(5.1之後),也是最重要和使用最廣泛的存儲引擎,被用來處理大量的短期事務。

2.InnoDB的特點

(1)InnoDB的數據存儲在表空間中,表空間由一系列的數據文件組成,InnoDB將每個表的數據和索引是綁在一塊的;

(2)InnoDB可以支持高併發,並實現了四個標準的隔離級別,InnoDB默認的隔離級別是可重複讀;

(3)InnoDB表是基於聚簇索引建立的【聚簇索引對主鍵的查詢有很高的性能,但是它的二級索引中必須包含主鍵列,所以如果主鍵列很大的話,其他的索引都會很大,因此,如果表上的索引較多的話,主鍵應當儘可能的小】

(4)InnoDB是支持事務的;

(5)InnDB表的鎖的粒度默認是行級鎖;

(6)InnoDB不保存表的具體行數,執行select count(*)from table時需要全表掃描;

(7)InnoDB支持外鍵;

3.MyISAM存儲引擎的介紹

在MySQL5.1及之前的版本中,MyISAM是默認的存儲引擎。

4.MyISAM的特性

(1)MyISAM提供了大量的特性,包括全文索引、壓縮、空間函數等;

(2)MyISAM是不支持事務的;

(3)MyISAM是不支持行級鎖的,但是它支持表鎖;

(4)MyISAM會將表存儲在兩個文件中:數據文件和索引文件中,並且分別以.MYD和.MYI爲擴展名;

(5)MyISAM表可以村塾行記錄數,一般受限於可用的磁盤空間,或者操作系統中單個文件的最大尺寸;

(6)MyISAM支持全文索引,這是一種基於分詞創建的索引,可以支持複雜的查詢;

(7)延遲更新索引鍵:創建MyISAM表的時候,如果指定了DELAY_KEY_WRITE選項,在每次修改執行完成的時,不會立刻將修改的索引數據寫入磁盤,而是會寫到內存中的鍵緩衝區,只有在清理鍵緩衝區或者關閉表的時候纔會將對應的索引塊寫入到磁盤;

(8)MyISAM表支持壓縮:如果表在創建並導入數據以後,不會再進行修改操作,那麼這樣的表適合採用MyISAM壓縮表,壓縮表可以極大地減少磁盤空間佔用,因此可以減少磁盤I/O,從而提升查詢性能,壓縮表也支持索引,但索引也是隻讀的,壓縮表是不能進行修改的(除非先將表解除壓縮,修改數據,然後再次壓縮)。

發佈了81 篇原創文章 · 獲贊 16 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章