MySQL存儲引擎之Myisam和Innodb總結

1.MyISAM類型的表強調的是性能,其執行數 度比InnoDB類型更快,但是不提供事務支持,InnoDB提供事務支持事務,外部鍵等高級 數據庫功能.事務是一種高級的處理方式,如在一些列增刪改中只要哪個出錯還可以回滾還原,而MyISAM就不可以了。


2.MyISAM適合查詢以及插入爲主的應用,InnoDB適合頻繁修改以及涉及到安全性較高的應用


3對於自增長的字段,InnoDB中必須包含只有該字段的索引,但是在MyISAM表中可以和其他字段一起建立聯合索引


4.清空整個表時,InnoDB是一行一行的刪除,效率非常慢。MyISAM則會重建表


5InnoDB支持行鎖(某些情況下還是鎖整表,如 update table set a=1 where user like '%lee%'


關於MyISAM與InnoDB選擇使用:


MYISAM和INNODB是Mysql數據庫提供的兩種存儲引擎。兩者的優劣可謂是各有千秋。INNODB會支持一些關係數據庫的高級功能,如事務功能和行級鎖,MYISAM不支持。MYISAM的性能更優,佔用的存儲空間少。所以,選擇何種存儲引擎,視具體應用而定:
1)如果你的應用程序一定要使用事務,毫無疑問你要選擇INNODB引擎。但要注意,INNODB的行級鎖是有條件的。在where條件沒有使用主鍵時,照樣會鎖全表。比如DELETE FROM mytable這樣的刪除語句。
2)如果你的應用程序對查詢性能要求較高,就要使用MYISAM了。MYISAM索引和數據是分開的,而且其索引是壓縮的,可以更好地利用內存。所以它的查詢性能明顯優於INNODB。壓縮後的索引也能節約一些磁盤空間。MYISAM擁有全文索引的功能,這可以極大地優化LIKE查詢的效率。


如果數據量比較大,這是需要通過升級架構來解決,比如分表分庫,而不是單純地依賴存儲引擎。

現在一般都是選用innodb了,主要是myisam的全表鎖,讀寫串行問題,併發效率鎖表,效率低myisam對於讀寫密集型應用一般是不會去選用的。

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