簡述mysql數據庫引擎Innodb和Myisam區別

1、MyISAM:默認表類型,它是基於傳統的ISAM類型,ISAM是Indexed Sequential Access Method (有索引的順序訪問方法) 的縮寫,它是存儲記錄和文件的標準方法。不是事務安全的,而且不支持外鍵,如果執行大量的select,insert MyISAM比較適合。

2、InnoDB:支持事務安全的引擎,支持外鍵、行鎖、事務是他的最大特點。如果有大量的update和insert,建議使用InnoDB,特別是針對多個併發和QPS較高的情況。

  • innodb 支持事務, myisam 不支持事務
  • innodb 支持外鍵, myisam 不支持外鍵
  • innodb 支持行級鎖, myisam 支持表級鎖
  • myisam 保存了表的總行數count(*), innodb沒有保存,需要掃描全表查詢

mysql鎖機制

1.innodb存儲引擎:
	行級鎖(也兼容了表級鎖)
	行級鎖又分爲共享鎖和排他鎖 (另外還有意向共享鎖和意向排他鎖,存儲引擎會自動加)
	執行update、insert、delete語句,引擎會自動加排它鎖
	執行select,引擎是不加任何鎖的
	行級鎖是基於索引字段的,如果sql語句中沒有涉及索引則會使用表級鎖。
	行級鎖內存開銷大,鎖定數據量小,適合高併發場景
	
2.myisam存儲引擎;
	表級鎖。
	表示鎖又分爲讀鎖和寫鎖
	讀鎖是共享的即其他事務可以同時讀,但不能寫。
	加寫鎖時,其他事務不能讀也不能寫
	表級鎖內存開銷小,鎖定數據量大,適合存在大量select場景
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章