sql oracle 事務與鎖關係

2021-08-29 20:56:21 字數 675 閱讀 2942

事務與鎖是不同的。

事務具有acid( 原子性、一致性、隔離性和永續性),鎖是用於解決隔離性的一種機制。

事務的隔離級別通過鎖的機制來實現。

另外鎖有不同的粒度,同時事務也是有不同的隔離級別的

(一般有四種:讀未提交read uncommitted, 讀已提交read committed, 可重複讀repeatable read, 可序列化serializable)。

在具體的程式設計中,開啟事務其實是要資料庫支援才行的,如果資料庫本身不支援事務,那麼仍然無法確保你在程式中使用的事務是有效的。

鎖可以分為樂觀鎖和悲觀鎖:

悲觀鎖:認為在修改資料庫資料的這段時間裡存在著也想修改此資料的事務;

樂觀鎖:認為在短暫的時間裡不會有事務來修改此資料庫的資料;

我們一般意義上講的鎖其實是指悲觀鎖,在資料處理過程中,將資料置於鎖定狀態(由資料庫實現)。

如果開啟了事務,在事務沒提交之前,別人是無法修改該資料的;

如果rollback,你在本次事務中的修改將撤消(不是別人修改的會沒有,因為別人此時無法修改)。

當然,前提是你使用的資料庫支援事務。

還有乙個要注意的是,部分資料庫支援自定義sql鎖覆蓋事務隔離級別預設的鎖機制,如果使用了自定義的鎖,那就另當別論。 重點:一般事務使用的是悲觀鎖(具有排他性)。

原文參考:

其他:

mysql事務與鎖機制 mysql事務與鎖機制

在併發下事務會容易出現的一些問題 資料更新丟失 兩個事務同時操作一條資料,乙個事務因為異常導致資料更新丟失 髒讀 乙個失誤開始讀取了某行資料,另外乙個事務已經更新了此資料但沒有能夠及時提交。這是相當危險的,因為很可能所有的操作都被回滾。不可重複讀 乙個事務對同一行資料重複讀取兩次,但是卻得到了不同的...

oracle事務與鎖

一.事務有4個特性,它們分別是原子性,一致性,分離性,永續性.1 原子性 事務的原子性是指,事務中程式是資料庫的邏輯工作單位,它對資料的修改要麼全部執行,要麼完全不執行.原子也意味著不可分割,不管有多少程式,只要在同乙個事務中,那麼它們就是乙個整體,如果都執行成功才意味著該事務成功,而有乙個操作失敗...

laravel 事務與鎖

接下來我們就測試一下 介面testname public function testname 測試結果 當我訪問test介面後,在訪問testname。很明顯,因為test介面把user表中id為1的資料鎖住,所以testname介面一直處在request中,無法完成。並且當我把2個介面都取消訪問後...