MySQL 中的樂觀鎖:仔細觀察
本機不支援樂觀鎖定,一種用於管理資料庫中並發更新的技術由MySQL 提供。不過,它可以透過資料庫實踐和應用程式程式碼的結合來實現。
樂觀鎖的工作原理
樂觀鎖背後的原則是假設資料不會並發更新期間發生衝突。透過在更新之前檢查資料完整性,它可以檢測衝突並允許採取適當的操作。
在沒有交易的情況下,透過在 UPDATE 之前包含額外的 SELECT 語句來套用樂觀鎖定。此 SELECT 語句會擷取資料的目前狀態,然後將其與嘗試更新之前的狀態進行比較。如果資料發生更改,則中止更新,從而保持資料完整性。
在MySQL 中使用樂觀鎖
要在MySQL 中實現樂觀鎖,可以執行以下步驟:在應用程式程式碼中執行:
範例
考慮以下範例:
<code class="sql">SELECT val1, val2 FROM theTable WHERE iD = @theId; -- Perform data calculations UPDATE theTable SET val1 = @newVal1, val2 = @newVal2 WHERE iD = @theId AND val1 = @oldVal1 AND val2 = @oldVal2; -- Check the number of affected rows IF @@ROWCOUNT = 1 -- Update successful ELSE -- Conflict detected END</code>
其他樂觀鎖定方法
其他樂觀鎖定方法其他樂觀鎖定方法其他樂觀鎖定方法除了SELECT-UPDATE-CHECK 方法之外,樂觀鎖定還可以使用版本列來實現。每次更新資料時,該列都會遞增,且 UPDATE 語句會在更新行之前檢查版本。如果版本不匹配,則中止更新。 注意事項樂觀鎖定假設衝突很少見,且偵測衝突的成本低於使用悲觀鎖定鎖定(例如,透過交易)。不過,它可能不太適合併發量較高且資料完整性至關重要的場景。
以上是如果沒有本機支持,如何在 MySQL 中實現樂觀鎖?的詳細內容。更多資訊請關注PHP中文網其他相關文章!