事務的隔離級別與解決問題

2021-10-11 17:50:50 字數 1163 閱讀 7032

我們都知道事務擁有四大特性:

永續性原子性

一致性隔離性

其中事務的隔離性又尤為重要,所以我準備**一下我對事務隔離性的理解

隔離級別

概述讀未提交(read uncommitted)

當乙個事務還沒有提交時,此時事務內做的改變就能被其他事務看見

讀已提交(read commited)

只有當乙個事務提交後,它做的改變才能被其他事務看見

可重複度(repeatable read)

乙個事務執行過程中所看見的資料,總是跟這個事務在啟動時看見的資料是一致的,此時未提交的事務,其他事務也是不可見的

序列化(serializable)

對於同一行記錄,寫和讀都會分別加寫鎖和讀鎖,如果讀寫鎖衝突的時候,必須依次等待之前的事務執行完成後才能執行

當前會話的事務隔離級別查詢:select @@tx_isolation;

當前系統的事務隔離級別查詢: select @@global.tx_isolation;

設定當前會話的事務隔離級別:set session transaction isolatin level事務的隔離級別

設定系統的當前事務隔離級別:set global transaction isolation level事務的隔離級別;

問題概述

髒讀(dirty read)

乙個事務讀到了另乙個事務未提交的事務修改的資料

不可重複度(non-repeatable read)

如果乙個事務只能讀到另乙個已經提交的事務修改過的資料,並且其他事務每對該資料進行一次修改並提交後,該事務都能查詢到最新值

幻讀(phantom read)

如果乙個事務先根據某些條件查詢出一些記錄,之後另乙個事務又向表中插入符合這些條件的記錄,原先的事務再次按照該條件查詢時,能把另乙個事務插入的記錄也讀出來

隔離級別

解決的問題

read uncommitted

-read commited

髒讀repeatable read

髒讀、不可重複度

serializable

髒讀、不可重複度、幻讀

併發事務問題與事務隔離級別

1 髒讀 乙個事物讀到另乙個事務還沒有提交的資料。2 不可重複讀 乙個事務先後讀取同一條記錄,但兩次讀取的資料不同,稱之為不可重複讀。3 幻讀 乙個事務按照條件查詢資料時,沒有對應的資料行,但是在插入資料時,又發現這行資料已經存在,好像出現了 幻影 隔離級別 髒讀不可重複讀 幻讀read uncom...

事務的隔離級別舉例 事務的隔離級別

乙個事務是乙個完整的業務邏輯單元,不能再分,要麼全部執行成功,要麼全部失敗。比如 a給b轉賬100元,a的銀行卡就會少100元,b的銀行卡就會多100元,整個過程要麼全部執行成功,要麼全部失敗。a 原子性。事務是最小的業務邏輯單元。b 一致性。乙個事務必須保證多條dml語句同時成功或失敗。c 隔離性...

事務的隔離級別舉例 JDBC 事務隔離級別

本文總結了 jdbc 事務隔離級別。事務隔離級別定義了在乙個事務中,哪些資料是對當前執行的語句 可見 的。在併發訪問資料庫時,事務隔離級別定義了多個事務之間對於同個目標資料來源訪問時的可交叉程度。可交叉程度可分為以下幾類。可交叉程度 dirty reads 髒讀 當乙個事務能看見另外乙個事務未提交的...