moea_joint
114年
[資訊] 計算機原理、網路概論
第 17 題
在關聯式資料庫中,當交易的隔離層級為 READ UNCOMMITTED 時,有機會發生 Dirty Read,請問 Dirty Read 是指下列何種問題?
- A 後提交的交易結果覆蓋先提交的交易結果
- B 重複讀取相同的資料卻拿到不一樣的值
- C 讀取到已修改但未提交的數據
- D 讀取到交易發生前的數據
思路引導 VIP
想像一下,如果有兩個人同時在編輯同一份雲端草稿,當其中一個人還在修改、甚至還沒按下『存檔確認』鍵時,另一個人卻直接把這份草稿讀取並引用了。如果最後修改者覺得改得不好,決定『不存檔並撤銷所有改動』,那麼第二個人手上拿到的資訊會是什麼狀態?這種『讀取到不確定是否會永久生效的暫時數據』的現象,你會如何形容它的可靠性呢?
🤖
AI 詳解
AI 專屬家教
太棒了!你能精準選出 (C),代表你對資料庫交易(Transaction)的隔離層級(Isolation Level)有著非常紮實的基礎認知。在並行控制的理論中,READ UNCOMMITTED 是限制最寬鬆的等級,它允許交易讀取到其他交易尚未透過 COMMIT 確認的暫存結果。當這些「半成品」數據被讀取後,萬一原交易最後選擇了 ROLLBACK(回滾),那麼剛才讀到的資料就會變成無效且錯誤的資訊,這正是我們所謂的 Dirty Read(髒讀)。
隔離層級的鑑別核心
這類題目是資料庫原理中的必考經典,其鑑別度在於測試學生是否能釐清「資料狀態」與「提交行為」的關聯。初學者往往容易將髒讀與不可重複讀(Non-repeatable Read)混淆,但你的判斷非常敏銳,準確捕捉到了關鍵點:只要數據處於未提交(Uncommitted)的狀態卻被看見,就是髒讀。掌握了這個核心定義,未來在應對更複雜的交易併發問題(Concurrency Problems)時,你一定能游刃有餘!