Transaction

並發交易與同時交易

  • April 12, 2021

大衛·克倫克的第 6 章Database Concepts: Database Administration

我的理解是否正確,在數據庫中,並發事務並沒有真正發生。相反,它是一個快速發生的並發事務,使用者認為它是一個同時事務?

我問的原因是因為我被作業中的問題所困擾,詢問需要多少 CPU 才能執行同時事務。我回答說只需要一個 cpu,因為它實際上是一個正在發生的並發事務,而不是一個同時發生的事務?

想法,有人嗎?

編輯:~ jcolebrand——

@gbn 和 @Mark,

感謝您的意見,但是,我完全不知道這些術語是什麼,因為我目前正在學習的這門課程是數據庫管理的入門課程,而我的問題僅在本書的第 1 段中進行了討論,沒有進一步詳細說明。我也許能夠及時了解您的回复,但現在,我還不能。不過謝謝!

您的作業問題很差,預期的答案可能不正確。隨時發送講師我們的方式討論!

從書中:

解釋並發事務和同時事務之間的區別。並發事務需要多少 CPU?

我想預期的差異是:

  • 並發事務 = 多個事務同時處於活動狀態。
  • 同時交易=多個交易同時執行。

我認為納夫的問題。

我的理解是否正確,在數據庫中,並發事務並沒有真正發生

事務當然是同時執行的。問題是是否可以同時送出,這就是@gbn 在他的回答中所要解決的問題。

@gbn 是正確的,如果您認為事務在 WAL 條目被​​硬化到磁碟時送出,則不會發生兩個同時送出。從崩潰恢復的角度來看,此時事務肯定已送出。如果發生故障,該事務將前滾(重做),而不是回滾(撤消)。由於兩個磁碟寫入不能同時發生,我們可以爭辯說兩個同時送出不能發生。

但是,您也可以爭辯說,當 IO 子系統通知 RDBMS WAL 寫入已成功完成並且已釋放它在事務期間持有的任何鎖時,事務已送出。因此,在多 CPU 環境中,同時送出可以並且將會發生。

性能調整等待和隊列,標題為“執行模型(簡化)”的部分解釋了 SQL Server 如何發生這種情況的機制。同樣對於 SQL Server 人員來說,閱讀有關 WRITELOG 等待類型的背景知識有助於理解這些概念。

由於預寫日誌 (WAL),不會同時發生

WAL(又名事務日誌、二進制日誌等,取決於 RDBMS)強制所有數據更改可序列化以供以後重放或回滾。

在兩個核心伺服器上,兩個寫入可以同時進行,因為在 WAL 寫入之前可能沒有爭用,其中一個必須在另一個之前發生。

更高層,鎖存器和鎖可以序列化同一行/頁/表上的數據更改。

引用自:https://dba.stackexchange.com/questions/8519