一、Mysql事務

1、共享鎖、排他鎖:讀鎖,寫鎖;讀鎖具有共享性,寫鎖具有排他性
2、鎖粒度和鎖策略:
如何提高共享資源的併發性?-》採用更精確的鎖粒度,只對修改的數據片進行鎖定,鎖定的資源越少,系統併發程度越高。
鎖粒度是否越精確越好?不是,鎖也需要消耗資源,鎖策略是在鎖的開銷和數據的安全性之間尋求平衡。
3、兩種重要的鎖策略:

1.表鎖:Mysql中最基本、開銷最小的鎖策略,對錶進行寫操作時,需先獲得寫鎖,並阻塞其他讀寫操作,寫鎖優先級比讀鎖更高
2.行級鎖:最大程度的支持併發處理,同時帶來最大的鎖開銷,只在存儲引擎層實現,未在服務器層實現。

4、什麼是事務?

一組原子性的SQL查詢,事務內的語句,要麼全部執行成功,要麼全部執行失敗。

5、什麼是ACID?(事務具有哪些特性)

1.原子性:整個事務中的所有操作要麼全部執行成功,要麼全部執行失敗。
2.一致性:事務未提交,修改的數據不會保存到數據庫。
3.隔離性:通常,一個事務未提交之前,對他事務是不可見的。
4.持久性:一旦事務提交,所作的修改就會永久保存到數據庫

6、mysql的四種隔離級別

1.未提交讀:READ UNCOMMITED,事務中的修改,即使沒有提交,其他事務也是可見的。
髒讀:事務讀取未提交的數據
2.提交讀:READ COMMITED,有時也叫不可重複讀,一個事務從開始到提交前,所作的修改其他事務均不可見。
3.可重複讀:Mysql默認隔離級別,一個事務中多次讀取同樣的記錄結果是一樣的。
幻讀:當某個事務讀取某範圍內的記錄後,另一個事務在該範圍內插入了新的記錄,之前的事務再次讀取時,會產生幻行。
4.可串行化:強制事務串行執行,避免幻讀,在沒一行數據都加鎖,導致大量超時和鎖爭用。

7、什麼是死鎖?

死鎖是兩個或以上事務在同一資源上相互佔用,並請求鎖定對方的資源,從而導致惡性循環的現象。
多個事務以不同順序或者同時鎖定一個資源,都有可能會造成死鎖。

8、InnoDB如何處理死鎖?

將持有最少行級排他鎖的事務進行回滾。(死鎖回滾算法)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章