数据库的两种引擎Innodb和MyIASM
?
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也是很好的選 擇。
兩種引擎的選擇
大尺寸的數據集趨向于選擇InnoDB引擎,因為它支持事務處理和故障恢復。數據庫的大小決定了故障恢復的時間長短,InnoDB可以利用事務日志 進行數據恢復,這會比較快。主鍵查詢在InnoDB引擎下也會相當快,不過需要注意的是如果主鍵太長也會導致性能問題,關于這個問題我會在下文中講到。大 批的INSERT語句(在每個INSERT語句中寫入多行,批量插入)在MyISAM下會快一些,但是UPDATE語句在InnoDB下則會更快一些,尤 其是在并發量大的時候。
轉載于:https://www.cnblogs.com/originate918/p/6526399.html
總結
以上是生活随笔為你收集整理的数据库的两种引擎Innodb和MyIASM的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Tensorflow实现多层感知函数逼近
- 下一篇: 常用的寄存器( bss段的作用)