innodb引擎
innodb引擎提供了對資料庫acid事務的支援,並且實現了sql標準的四種隔離級別。該引擎還提供了行級鎖和外來鍵約束,它的設計目標是處理大容量資料庫系統,它本身其實就是基於mysql後台的完整資料庫系統,mysql執行時innodb會在記憶體中建立緩衝池,用於緩衝資料和索引。但是該引擎不支援fulltext型別的索引,而且它沒有儲存表的行數,當select count(*) from table時需要掃瞄全表。當需要使用資料庫事務時,該引擎當然是首選。由於鎖的粒度更小,寫操作不會鎖定全表,所以在併發較高時,使用innodb引擎會提公升效率。但是使用行級鎖也不是絕對的,如果在執行乙個sql語句時mysql不能確定要掃瞄的範圍,innodb表同樣會鎖全表。
myiasm引擎
myiasm是mysql預設的引擎,但是它沒有提供對資料庫事務的支援,也不支援行級鎖和外來鍵,因此當insert(插入)或update(更新)資料時即寫操作需要鎖定整個表,效率便會低一些。不過和innodb不同,myiasm中儲存了表的行數,於是select count(*) from table時只需要直接讀取已經儲存好的值而不需要進行全表掃瞄。如果表的讀操作遠遠多於寫操作且不需要資料庫事務的支援,那麼myiasm也是很好的選擇。
主要區別:
1、myiasm是非事務安全的,而innodb是事務安全的
2、myiasm鎖的粒度是表級的,而innodb支援行級鎖
3、myiasm支援全文型別索引,而innodb不支援全文索引
4、myiasm相對簡單,效率上要優於innodb,小型應用可以考慮使用myiasm
5、myiasm表儲存成檔案形式,跨平台使用更加方便
應用場景:
1、myiasm管理非事務表,提供高速儲存和檢索以及全文搜尋能力,如果再應用中執行大量select操作,應該選擇myiasm。
2、innodb用於事務處理,具有acid事務支援等特性,如果在應用中執行大量insert和update操作,應該選擇innodb。
資料庫事務(database transaction) ,是指作為單個邏輯工作單元執行的一系列操作,要麼完全地執行,要麼完全地不執行。 事務處理可以確保除非事務性單元內的所有操作都成功完成,否則不會永久更新面向資料的資源。通過將一組相關操作組合為乙個要麼全部成功要麼全部失敗的單元,可以簡化錯誤恢復並使應用程式更加可靠。
MySQL執行引擎有哪些
myisam 優勢 查詢速度快 資料和索引壓縮問題 表級鎖 資料丟失 innodb 優勢 行級鎖 事務支援 資料安全問題 資料檔案龐大 啟動慢 不支援fulltext索引 如果你是個賽車手並且按一下按鈕就能夠立即更換引擎而不需要把車開到車庫裡去換,那會是怎麼感覺呢?mysql資料庫為開發人員所做的就...
mysql架構引擎 MySQL引擎
一般來說,mysql有以下幾種引擎 isam myisam heap innodb和berkley 資料庫 一般來說,mysql有以下幾種引擎 isam myisam heap innodb和berkley bdb 注意 不同的版本支援的引擎是有差異的。當然啦,如果你感覺自己的確技術高超,你還能夠使...
mysql引擎總結 MySQL引擎總結
檢視引擎情況 show engines 檢視預設的資料庫配置 show variables like default storage engine 更改資料庫引擎 修改配置檔案my.ini,mysqld 最後新增為上default storage engine innodb,重啟服務 修改某張表的引...