資料庫常見面試題

2021-10-06 03:37:00 字數 1270 閱讀 2544

1. 事務的四大特性acid

(1)原子性:事務包含的操作要麼全部成功,要麼全部回退。

(2)一致性:事務開始前和開始後,資料庫的完整性沒有被破壞。舉例:轉賬

(3)隔離性:對資料庫進行併發操作時,事務不能被其他事務干擾。

(4)永續性:事務一旦提交,對資料庫的影響是永久的。

2. 事務的併發:包含3類資料讀和2類資料更新問題。

(1)髒讀:事務a讀取事務b更新的資料,但是事務b回滾,事務a讀取到的資料為臟資料。事務a讀取了事務b提交前的資料

(2)不可重複讀:事務a讀取了事務b提交後的資料(行級鎖),導致事務a前後兩次讀取內容不一致。

(3)幻像讀:事務a讀取了事務b新增後的資料(表級鎖)

(4)第一類丟失更新:事務a的撤銷,覆蓋了事務b的更新資料。

(5)第二類丟失更新:事務a的提交覆蓋了事務b的更新資料。

3. 事務隔離級別

(1)讀未提交:允許髒讀。讀不阻塞讀和寫,寫阻塞寫,但不阻塞讀。

(2)讀已提交:不允許髒讀,允許不可重複讀。讀不阻塞讀和寫,寫會阻塞寫和讀。(常用)

(3)可重複讀:不允許不可重複讀,可能出現幻讀。讀會阻塞寫,不會阻塞讀;寫會阻塞寫和讀。

(4)序列化:表級鎖。

4. 事務併發的解決方案

(1)版本檢查

(2)悲觀鎖和樂觀鎖

悲觀鎖:假設還有其他事務也訪問資料資源,會先申請鎖,再對資料修改。

樂觀鎖:假設沒有其他事務訪問資料資源,先對資料進行修改,然後判斷是否有其他事務修改了該資料,若資料更新,則回滾。(通過對資料新增版本號實現。)

選取規則:

(3)共享鎖和排他鎖

共享鎖:讀鎖s,只允許被當前事務和其他事務讀。

排他鎖:寫鎖x,只允許被當前事務讀和寫。

(4)表級鎖和行級鎖

表級鎖:不會發生死鎖,粒度大。

行級鎖:會發生死鎖,粒度小。

5. 高併發的解決方案

資料庫方面常見面試題

1 說出資料連線池的工作機制是什麼 j2ee 伺服器啟動時會建立一定數量的池連線,並一直維持不少於此數目的池連線。客戶端程式需要連線時,池驅動程式會返回乙個未使用的池連線並將其表記為忙。如果當前沒有空閒連線,池驅動程式就新建一定數量的連線,新建連線的數量有配置引數決定。當使用的池連線呼叫完成後,池驅...

資料庫其他常見面試題

一般情況只發生鎖超時,就是乙個程序需要訪問資料庫表或者欄位的時候,另外乙個程式正在執行帶鎖的訪問 比如修改資料 那麼這個程序就會等待,當等了很久鎖還沒有解除的話就會鎖超時,報告乙個系統錯誤,拒絕執行相應的sql操作。發生死鎖的情況比較少,比如乙個程序需要訪問兩個資源 資料庫表或者字段 當獲取乙個資源...

資料庫部分常見面試題

事務的四大特性 acid 原子性原子性是指事務包含的所有操作要麼全部成功,要麼全部失敗回滾。一致性一致性是指事務必須是資料庫從乙個一致性狀態變換到另乙個一致性狀態,也就是說乙個事務執行之前和執行之後都必須處於一致性狀態。拿轉賬來說,假設使用者a和使用者b兩者的錢加起來一共是5000,那麼不管a和b之...