MySQL兩種儲存引擎: MyISAM和InnoDB 簡單總結
1.簡單介紹
MyISAM是MySQL的預設資料庫引擎(5.5版之前),由早期的ISAM(Indexed Sequential Access Method:有索引的順序訪問方法)所改良。雖然效能極佳,但卻有一個缺點:不支援事務處理(transaction)。不過,在這幾年的發展下,MySQL也匯入了InnoDB(另一種資料庫引擎),以強化參考完整性與併發違規處理機制,後來就逐漸取代MyISAM。
InnoDB,是MySQL的資料庫引擎之一,為MySQL AB釋出binary的標準之一。InnoDB由Innobase Oy公司所開發,2006年五月時由甲骨文公司併購。與傳統的ISAM與MyISAM相比,InnoDB的最大特色就是支援了ACID相容的事務(Transaction)功能
2.MyISAM和InnoDB兩者之間的明顯區別:
簡單梳理如下
1) 事務支援
MyISAM不支援事務,而InnoDB支援。InnoDB的AUTOCOMMIT預設是開啟的,即每條SQL語句會預設被封裝成一個事務,自動提交,這樣會影響速度,所以最好是把多條SQL語句顯示放在begin和commit之間,組成一個事務去提交。
MyISAM是非事務安全型的,而InnoDB是事務安全型的,預設開啟自動提交,宜合併事務,一同提交,減小資料庫多次提交導致的開銷,大大提高效能。
2) 儲存結構
MyISAM:每個MyISAM在磁碟上儲存成三個檔案。第一個檔案的名字以表的名字開始,副檔名指出檔案型別。.frm檔案儲存表定義。資料檔案的副檔名為.MYD (MYData)。索引檔案的副檔名是.MYI (MYIndex)。(重點哦!!!)
InnoDB:所有的表都儲存在同一個資料檔案中(也可能是多個檔案,或者是獨立的表空間檔案),InnoDB表的大小隻受限於作業系統檔案的大小,一般為2GB。
3) 儲存空間
MyISAM:可被壓縮,儲存空間較小。支援三種不同的儲存格式:靜態表(預設,但是注意資料末尾不能有空格,會被去掉)、動態表、壓縮表。(小疑問:什麼是動態表,什麼是壓縮表???)
InnoDB:需要更多的記憶體和儲存,它會在主記憶體中建立其專用的緩衝池用於高速緩衝資料和索引。
4) 可移植性、備份及恢復
MyISAM:資料是以檔案的形式儲存,所以在跨平臺的資料轉移中會很方便。在備份和恢復時可單獨針對某個表進行操作。
InnoDB:免費的方案可以是拷貝資料檔案、備份 binlog(二進位制日誌),或者用 mysqldump,在資料量達到幾十G的時候就相對痛苦了。
更多內容還未更新完,請參考下方連結:
http://www.cnblogs.com/kevingrace/p/5685355.html