數(shù)據(jù)庫(kù)事務(wù)的四個(gè)特性(caid)

事務(wù)的四個(gè)特性(caid):

原子性:要么全部成功commit,要么全部失敗rollback.

一致性:rollback后的數(shù)據(jù)和原來(lái)的一致。

隔離性:事務(wù)和事務(wù)之間不干擾。一個(gè)事務(wù)必須與另外一個(gè)事務(wù)的執(zhí)行結(jié)果隔離開(kāi)。

持久性:執(zhí)行成功。持久化數(shù)據(jù)。


事務(wù)和鎖:

數(shù)據(jù)庫(kù)操作都會(huì)產(chǎn)生鎖,分為共享鎖(select語(yǔ)句產(chǎn)生)和排他鎖(dml語(yǔ)句)。一個(gè)事務(wù)中的語(yǔ)句執(zhí)行完成后,在commit之后,語(yǔ)句影響的表記錄才可以解鎖。

如果沒(méi)有定義事務(wù)隔離級(jí)別因此多個(gè)事務(wù)操作同一條數(shù)據(jù)可能會(huì)違反事務(wù)的caid特性。存在下面2個(gè)問(wèn)題:

1)臟讀?。?/p>

一個(gè)事務(wù)讀取另外一個(gè)尚未提交的數(shù)據(jù),然后第二個(gè)事務(wù)回滾了,那么第一個(gè)事務(wù)讀取的就是無(wú)效的數(shù)據(jù)。

2)丟失數(shù)據(jù)修改:兩個(gè)事務(wù)同時(shí)對(duì)一條數(shù)據(jù)修改,一個(gè)先提交,一個(gè)后提交,則先提交的事務(wù)的修改數(shù)據(jù)無(wú)效。


事務(wù)的屬性:

1)事務(wù)的傳播屬性

設(shè)置事務(wù)的屬性,來(lái)決定方法用不用事務(wù),如何用。

2)事務(wù)的隔離級(jí)別

ISOLATION_DEFAULT?

使用數(shù)據(jù)庫(kù)默認(rèn)的隔離級(jí)別

ISOLATION_COMMITTED?

允許讀取其他并發(fā)事務(wù)已經(jīng)提交的更新(防此臟讀)

ISOLATION_READ_UNCOMMITTED?

允許讀取其他并發(fā)事務(wù)還未提交的更新,會(huì)導(dǎo)致事務(wù)之??????????????? 間的3個(gè)缺陷發(fā)生,這是速度最快的一個(gè)隔離級(jí)別,但同??????????????? 時(shí)它的隔離級(jí)別也是最低

ISOLATION_REPEATABLE_READ?

除非事務(wù)自身修改了數(shù)據(jù),否則規(guī)定事務(wù)多次重復(fù)讀取?? ??? ?數(shù)據(jù)必須相同(防此臟讀,不可重復(fù)讀)

ISOLATION_SERIALIZABLE?

這是最高的隔離級(jí)別,它可以防此臟讀,不可重復(fù)讀和?? ??? ?幻讀等問(wèn)題,但因其侵占式的數(shù)據(jù)記錄完全鎖定,導(dǎo)致?

它影響事務(wù)的性能,成為隔離級(jí)別中最展慢的一個(gè)。?

3)事務(wù)只讀

PROPAGATION_REQUIRED,readOnly?

用于提升只讀操作的效率。

4)事務(wù)超時(shí)

????PROPAGATION_REGUIRED,timeout_5,readOnly

超過(guò)5s,沒(méi)有回應(yīng)則,將事務(wù)回滾。


常用連接池: 單線程 apache dbcp?:org.apache.commons.dbcp.BasicDataSource

兼容dbcp且處理高并發(fā)的?? tomcat pool jdbc:?org.apache.tomcat.jdbc.pool.DataSourc

聲明式事務(wù):

spring 用aop在方法執(zhí)行前開(kāi)啟一個(gè)事務(wù),順利執(zhí)行完commit,異常則rollback。所以不用在方法里面來(lái)開(kāi)啟和關(guān)閉事務(wù)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • MySQL技術(shù)內(nèi)幕:InnoDB存儲(chǔ)引擎(第2版) 姜承堯 第1章 MySQL體系結(jié)構(gòu)和存儲(chǔ)引擎 >> 在上述例子...
    沉默劍士閱讀 7,636評(píng)論 0 16
  • 本文包括:1、事務(wù)概念2、MySQL管理事務(wù)3、JDBC控制事務(wù)進(jìn)程4、事務(wù)的特性(ACID)5、事務(wù)的隔離級(jí)別6...
    廖少少閱讀 912評(píng)論 0 3
  • 我在河邊靜靜的看你,靜靜的看著你走過(guò)了春夏秋冬…… 時(shí)光對(duì)他而言是緩慢的,像一條靜靜流淌的河流。 112年后的今天...
    一夢(mèng)異時(shí)空閱讀 236評(píng)論 0 0
  • 25歲,在沒(méi)有期待的時(shí)節(jié)里悄悄到來(lái),沒(méi)有工作,沒(méi)有伴侶,一身頑疾。姑娘,你25歲了,可你活的還像個(gè)孩子。 常常贊嘆...
    默三也閱讀 298評(píng)論 0 0
  • 直面問(wèn)題使人痛苦,若不解決,阻礙心智成熟,現(xiàn)在不謀求解決問(wèn)題,將來(lái)的痛苦會(huì)更大,延續(xù)的時(shí)間也更長(zhǎng)。 保持平衡自律是...
    墻上的向日葵_閱讀 199評(píng)論 0 0

友情鏈接更多精彩內(nèi)容