介紹:數據庫
InnoDB引擎是MySQL數據庫的一個重要的存儲引擎,和其餘存儲引擎相比,InnoDB引擎的優勢是支持兼容ACID的事務(相似於PostgreSQL),以及參數完整性(有外鍵)等。如今Innobase實行雙認證受權.MySQL5.5.5之後默認的存儲引擎都是InnoDB引擎。緩存
特色是:併發
一、具備較好的事務支持:支持4個事務隔離級別,支持多版本讀高併發
二、行級鎖定:經過索引實現,全表掃描仍然會是表鎖,注意間隙鎖的影響性能
三、讀寫阻塞與事務隔離級別相關spa
四、具備很是高效的緩存特性:能緩存索引,也能緩存數據索引
五、整個表和主鍵以Cluster方式存儲,組成一顆平衡樹事務
六、全部Secondary Index都會保存主鍵信息內存
適用場景:it
一、須要事務支持(具備較好的事務特性)
二、行級鎖定對高併發有很好的適應能力,但須要確保查詢是經過索引完成
三、數據更新較爲頻繁的場景
四、數據一致性要求較高
五、硬件設備內存較大,能夠利用InnoDB較好的緩存能力來提升內存利用率,儘量減小磁盤IO
談一談數據庫事務的隔離級別?
一、Read uncommitted(讀未提交)就是一個事務能夠讀取另外一個未提交事務的數據。
二、Read committed(讀提交)就是一個事務要等另外一個事務提交後才能讀取數據。
三、Repeatable read(重複讀)就是在開始讀取數據(事務開啓)時,再也不容許修改操做。
四、Serializable(序列化)在該級別下,事務串行化順序執行,能夠避免髒讀、不可重複讀與幻讀。是最高的事務隔離級別,可是這種事務隔離級別效率低下,比較耗數據庫性能,通常不使用。
事務的做用就是保證數據的一致性、完整性。事務隔離級別越高,在併發下會產生的問題就越少,但同時付出的性能消耗也將越大,所以不少時候必須在併發性和性能之間作一個權衡。因此設立了幾種事務隔離級別,以便讓不一樣的項目能夠根據本身項目的併發狀況選擇合適的事務隔離級別,對於在事務隔離級別以外會產生的併發問題,在代碼中作補償。