2009-07-07 8 views
5

你們如何決定你應該在事務中包裝SQL?如何決定使用數據庫事務

請大家指出一點。

乾杯!

+0

@Lance羅伯茨,tsql從哪裏來?這可以應用於任何數據庫。 OP從不說sql服務器。 – 2009-07-07 17:57:15

回答

8

當您需要完整處理一組更改以考慮操作完整且有效時,應使用事務。換句話說,如果只有一部分成功執行,是否會導致數據庫中存儲的數據不完整或無效?

例如,如果插入後跟更新,如果插入成功並且更新失敗,會發生什麼情況?如果這會導致數據不完整(在這種情況下是一個孤立記錄),則應該將這兩個語句包裝在一個事務中,以使它們以「set」形式完成。

+2

「在需要處理一組更改時使用」 我認爲第二個「需求」是不必要的。 – 2009-07-07 18:35:27

4

如果您的單個數據修改語句要執行以完成一項任務,則所有操作都應在事務中。

這樣,如果第一個成功,但以下任何一個都有錯誤,您可以回滾(撤消)所有內容,就好像從未做過任何事情一樣。

3

每當你不喜歡它,如果部分操作可以完成,部分操作不能完成。

5

如果您正在執行兩個或更多您期望在功能上是原子的語句,則應該將它們包裝在事務中。

1

無論何時您想鎖定數據庫並可能導致生產應用程序崩潰,只要您想要通過隱藏的可擴展性噩夢來拋棄應用程序,請繼續創建事務。讓它變大,變慢,然後在裏面放一個循環。

嚴重的是,上述答案都不承認大量使用交易帶來的權衡和潛在問題。要小心,並且每次都要考慮風險/回報。

Ebay根本不使用它們。我相信還有很多其他人。

http://www.infoq.com/interviews/dan-pritchett-ebay-architecture

+0

我一直很感興趣的是看到如何用其他技術取代交易的方法。 – 2014-02-26 18:35:50

0

每當任何操作ACID(原子性一致性隔離耐久性)標準下屬於你應該使用交易

閱讀本article