偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

MySQL事務(wù)處理問題的正確解決

數(shù)據(jù)庫(kù) MySQL
以下的文章主要描述的是MySQL事務(wù)處理與并發(fā)鎖的實(shí)際應(yīng)用,本文同時(shí)涉及到MySQL事務(wù)處理需要保證的3個(gè)基本原則的介紹。

如果你研究到庫(kù)存系統(tǒng)的開發(fā)問題時(shí),你就會(huì)從這里出發(fā)考慮了一些有關(guān)庫(kù)存信息中需要的操作和,一般的情況下會(huì)遇到的MySQL事務(wù)處理問題。特別是關(guān)于數(shù)據(jù)表鎖定問題,一旦出現(xiàn)并發(fā)現(xiàn)象的時(shí)候,我們?nèi)绾伪WC數(shù)據(jù)的完整性,值得我們考慮。

事務(wù)操作,要保證的三個(gè)原則性:

原子性(Atomicity):事務(wù)是一個(gè)原子操作單元,其對(duì)數(shù)據(jù)的修改,要么全部執(zhí)行,要么全都不執(zhí)行;

一致性(Consistent):在事務(wù)開始和完成時(shí),數(shù)據(jù)都必須保持一致狀態(tài);

隔離性(Isolation):數(shù)據(jù)庫(kù)系統(tǒng)提供一定的隔離機(jī)制,保證事務(wù)在不受外部并發(fā)操作影響的“獨(dú)立”環(huán)境執(zhí)行;

持久性(Durable):事務(wù)完成之后,它對(duì)于數(shù)據(jù)的修改是***性的,即使出現(xiàn)系統(tǒng)故障也能夠保持。

 

于是,我們假設(shè)兩個(gè)對(duì)象A和B

并發(fā)對(duì)象A 和B

初始狀態(tài)數(shù)據(jù)表查詢結(jié)果:

 

事務(wù)開始的順序 A->B

A:開始事務(wù)

 

此刻沒有提交進(jìn)行commit

在此狀態(tài)下B開始了自己的MySQL事務(wù)處理:

 

顯然,在A沒有進(jìn)行Commit行為的時(shí)候,B的事務(wù)中的動(dòng)作無(wú)法完成,一直處于事務(wù)等待階段,前提是在沒有超出時(shí)限,B的動(dòng)作無(wú)法提交。

此刻,如果A進(jìn)行Commit:

 

此刻 B的動(dòng)作中,由等待的

 

轉(zhuǎn)變到

 

說明A完成事務(wù)開始解鎖,B事務(wù)可以進(jìn)行,但是此刻B事務(wù)沒有提交(Commit)

注意:在這里我們進(jìn)行兩個(gè)操作,就是兩個(gè)對(duì)象進(jìn)行查詢

A的查詢:

 

依然存在ID為1的這項(xiàng),原因是B的結(jié)果沒提交,但A依舊可以讀該項(xiàng)數(shù)據(jù),但是數(shù)據(jù)為刪除前的數(shù)據(jù)。

但是,對(duì)照B的查詢:

 

可以知道,B對(duì)象結(jié)果已經(jīng)在處理了,只是沒有提交解鎖。

分析可以知道,A讀的是B沒有提交前的結(jié)果集合,但B讀的是自己操作的結(jié)果集,當(dāng)B完成提交的時(shí)候

此刻,A的結(jié)果集合

 

發(fā)現(xiàn)現(xiàn)在狀態(tài)下和B的集合一樣,A=B,這也是在理論值的范圍內(nèi)的。

由此,可以發(fā)現(xiàn)其實(shí)MySQL鎖的簡(jiǎn)單性,當(dāng)然,也說明當(dāng)數(shù)據(jù)庫(kù)進(jìn)行鎖操作時(shí)候,只能是寫操作控制,對(duì)于讀數(shù)據(jù),往往只能訪問到修改前的數(shù)據(jù),這部分?jǐn)?shù)據(jù)常常被稱為”dirty”或臟數(shù)據(jù)。在現(xiàn)實(shí)中,我們常常是有這樣的需求,當(dāng)A進(jìn)行寫操作時(shí)候,期望B不要讀數(shù)據(jù),是對(duì)讀行為的控制。

這樣保證并發(fā)的時(shí)候不要出現(xiàn)B查的時(shí)候有,但是這個(gè)過程正好是A進(jìn)行寫操作的過程,雖然加鎖防止并發(fā)寫,但是卻把對(duì)于B來(lái)說他在此過程中所看到的數(shù)據(jù)將被修改,即等A完成寫操作的時(shí)候,B讀的數(shù)據(jù)將被丟棄,這樣說來(lái)B讀到的數(shù)據(jù)應(yīng)該是臟數(shù)據(jù),或是無(wú)效數(shù)據(jù),除非A的動(dòng)作因?yàn)槟承┰驅(qū)е率聞?wù)回滾,操作失敗,這樣現(xiàn)實(shí)數(shù)據(jù)結(jié)果和B看到的一致的時(shí)候,才斷定B看到的是有效數(shù)據(jù),而不是臟數(shù)據(jù)或是無(wú)效數(shù)據(jù)。

【編輯推薦】

  1. MySQL 安裝備份在Linux系統(tǒng)中的安裝
  2. MySQL 數(shù)據(jù)庫(kù)的雙機(jī)熱備實(shí)際操作配置
  3. 建立MySQL鏡像數(shù)據(jù)庫(kù)在linux下的簡(jiǎn)單方案
  4. MySQL安裝與qmail實(shí)際操作概述
  5. MySQL filter的實(shí)際配置
責(zé)任編輯:佚名 來(lái)源: 博客園
相關(guān)推薦

2009-07-15 17:41:55

iBATIS事務(wù)處理

2011-04-27 15:55:16

2009-09-14 19:55:03

LINQ事務(wù)處理

2009-07-09 18:15:42

JDBC事務(wù)處理

2010-04-13 15:44:00

Oracle與SqlS

2014-01-22 13:37:53

2011-04-27 16:09:48

SQL ServerSSIS

2010-01-04 13:06:50

ADO.NET事務(wù)

2009-04-15 17:03:15

OracleSQL Server事務(wù)處理

2009-11-13 17:01:07

ADO.NET事務(wù)處理

2022-06-22 05:42:32

數(shù)據(jù)庫(kù)事務(wù)處理分析查詢

2011-03-15 10:22:42

SQL Server 聯(lián)機(jī)事務(wù)處理

2017-04-10 13:30:47

Redis數(shù)據(jù)庫(kù)命令

2014-02-11 09:07:31

2022-06-13 10:42:21

分布式事務(wù)數(shù)據(jù)庫(kù)

2009-11-04 15:05:45

ADO.NET事務(wù)

2019-11-18 10:19:02

分布式系統(tǒng)事務(wù)模型

2009-07-15 15:57:28

AWT或Swing

2025-04-03 02:22:00

事務(wù)處理信息自動(dòng)收集

2011-05-18 08:34:45

javaJDBC
點(diǎn)贊
收藏

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