自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

超詳細(xì)的事務(wù)四大特性、隔離級(jí)別解讀(帶SQL語句)

數(shù)據(jù)庫 MySQL
一個(gè)事務(wù)一旦被提交了,那么對(duì)數(shù)據(jù)庫中的數(shù)據(jù)的改變就是永久性的,即便是在數(shù)據(jù)庫系統(tǒng)遇到故障的情況下也不會(huì)丟失提交事務(wù)的操作。

事務(wù)的四大特性 ACID

原子性:事務(wù)的所有操作要么全部成功,要么全部失敗回滾。

一致性:事務(wù)必須是使數(shù)據(jù)庫從一個(gè)一致性狀態(tài)變到另一個(gè)一致性狀態(tài)。

隔離性:一個(gè)事務(wù)的執(zhí)行不受其他事務(wù)的干擾。

持久性:一個(gè)事務(wù)一旦被提交了,那么對(duì)數(shù)據(jù)庫中的數(shù)據(jù)的改變就是永久性的,即便是在數(shù)據(jù)庫系統(tǒng)遇到故障的情況下也不會(huì)丟失提交事務(wù)的操作。

隔離級(jí)別產(chǎn)生問題

臟讀:在一個(gè)事務(wù)處理過程里讀取了另一個(gè)未提交的事務(wù)中的數(shù)據(jù)(未提交意味著這些數(shù)據(jù)可能會(huì)回滾,可能最終不會(huì)存到數(shù)據(jù)庫)。

不可重復(fù)讀:不可重復(fù)讀是指在對(duì)于數(shù)據(jù)庫中的某個(gè)數(shù)據(jù),一個(gè)事務(wù)范圍內(nèi)多次查詢卻返回了不同的數(shù)據(jù)值,這是由于在查詢間隔,被另一個(gè)事務(wù)修改并提交了,讀取了前一個(gè)事務(wù)提交的數(shù)據(jù)。

幻讀:事務(wù)在檢索期間,其它事務(wù)對(duì)數(shù)據(jù)執(zhí)行了操作,導(dǎo)致前后兩次檢索的數(shù)據(jù)不一樣。

例如:事務(wù)1對(duì)一個(gè)表中所有數(shù)據(jù)某個(gè)字段值從“Y”修改為“N”的操作,這時(shí)事務(wù)2又對(duì)這個(gè)表中插入了一行數(shù)據(jù),而這個(gè)數(shù)據(jù)的字段值是為“Y”。事務(wù)1如果再查看剛剛修改的數(shù)據(jù),會(huì)發(fā)現(xiàn)還有一行沒有修改,其實(shí)這行是事務(wù)2中添加的,就好像產(chǎn)生幻覺一樣,這就是發(fā)生了幻讀。

幻讀和不可重復(fù)讀都是讀取了另一條已經(jīng)提交的事務(wù)(這點(diǎn)就臟讀不同),所不同的是不可重復(fù)讀查詢的都是同一個(gè)數(shù)據(jù)項(xiàng),而幻讀針對(duì)的是一批數(shù)據(jù)整體(比如數(shù)據(jù)的個(gè)數(shù))。

MySQL數(shù)據(jù)庫的四種事務(wù)隔離級(jí)別(從低到高)

Read Uncommitted(讀未提交):所有事務(wù)都可以看到其他未提交事務(wù)的執(zhí)行結(jié)果。(基本上沒用)。

Read Committed(讀已提交):一個(gè)事務(wù)只能看見已經(jīng)提交事務(wù)所做的改變。

Repeatable Read(可重讀):確保同一事務(wù)的多個(gè)實(shí)例在并發(fā)讀取數(shù)據(jù)時(shí),會(huì)看到同樣的數(shù)據(jù)行。(MySQL的默認(rèn)事務(wù)隔離級(jí)別)

Serializable(可串行化):通過強(qiáng)制事務(wù)排序,使之不可能相互沖突,從而解決幻讀問題。

隔離級(jí)別

臟讀

不可重復(fù)讀

幻讀

讀未提交

不能避免

不能避免

不能避免

讀已提交

能避免

不能避免

不能避免

可重讀

能避免

能避免

不能避免

可串行化

能避免

能避免

能避免

查看mySQL的數(shù)據(jù)庫隔離級(jí)別

先看下mysql版本,執(zhí)行對(duì)應(yīng)sql語句。

-- 查看版本
select version();
-- 舊版本也就是5.x
select @@tx_isolation;
-- 新版本
select @@transaction_isolation;

查詢mysql版本

查詢mysql的隔離級(jí)別

-- 設(shè)置read uncommitted級(jí)別:
set session transaction isolation level read uncommitted;
-- 設(shè)置read committed級(jí)別:
set session transaction isolation level read committed;
-- 設(shè)置repeatable read級(jí)別:
set session transaction isolation level repeatable read;
-- 設(shè)置serializable級(jí)別:
set session transaction isolation level serializable;
責(zé)任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2020-09-21 18:44:35

MySQL

2018-07-17 10:58:45

數(shù)據(jù)庫數(shù)據(jù)庫事務(wù)隔離級(jí)別

2020-04-07 09:21:45

MySQL數(shù)據(jù)庫SQL

2019-08-05 09:19:45

PG事務(wù)隔離級(jí)別數(shù)據(jù)庫

2025-01-13 13:12:54

2010-05-25 08:34:10

C# 4.0

2010-10-19 13:52:28

SQL Server事

2010-11-19 16:13:06

oracle事務(wù)隔離級(jí)

2018-12-19 16:46:38

MySQL事務(wù)隔離數(shù)據(jù)庫

2009-06-29 17:54:47

Spring事務(wù)隔離

2017-08-09 14:34:12

MysqlJavaPython

2021-08-30 20:12:11

MySQL事務(wù)隔離

2011-04-02 09:45:00

Ubuntu 11.0特性

2013-07-29 13:41:40

Dell/vWorks

2013-09-17 09:55:58

企業(yè)PC

2010-10-21 14:21:15

SQL Server視

2021-07-26 10:28:13

MySQL事務(wù)隔離

2024-04-26 09:17:20

MySQL事務(wù)隔離

2009-03-26 10:29:10

故障事務(wù)日志SQL Server

2021-08-04 13:19:42

MySQL 事務(wù)隔離
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)