日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

对事务的特性ACID的理解

發(fā)布時(shí)間:2023/12/31 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 对事务的特性ACID的理解 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 對(duì)事務(wù)的特性ACID的理解

數(shù)據(jù)庫(kù)的事務(wù)必須具備ACID特性,ACID是指 Atomicity(原子性)、Consistensy(一致性)、Isolation(隔離型)和Durability(持久性)的英文縮寫(xiě)。

?

1、原子性(Atomicity

事務(wù)包裝的一組sql,要么都執(zhí)行成功,要么都失敗。這些操作是不可分割的。

2、一致性(Consistency

??????? 數(shù)據(jù)庫(kù)的數(shù)據(jù)狀態(tài)是一致的。

事務(wù)的成功與失敗,最終數(shù)據(jù)庫(kù)的數(shù)據(jù)都是符合實(shí)際生活的業(yè)務(wù)邏輯。一致性絕大多數(shù)依賴(lài)業(yè)務(wù)邏輯和原子性。

3、持久性:(Durability

事務(wù)成功提交之后,對(duì)于數(shù)據(jù)庫(kù)的改變是永久的。哪怕數(shù)據(jù)庫(kù)發(fā)生異常,重啟之后數(shù)據(jù)亦然存在。

4、隔離性(Isolation

??????? 一個(gè)事務(wù)的成功或者失敗對(duì)于其他的事務(wù)是沒(méi)有影響。2個(gè)事務(wù)應(yīng)該相互獨(dú)立。

?

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

如果不考慮事務(wù)的隔離性,由于事務(wù)的并發(fā),將會(huì)出現(xiàn)以下問(wèn)題:

1、臟讀 -- 最嚴(yán)重,杜絕發(fā)生

2、不可重復(fù)讀

3、幻讀(虛讀)

?臟讀:指一個(gè)事務(wù)讀取了另外一個(gè)事務(wù) 未提交的數(shù)據(jù)。

? ? ? ? ? 一個(gè)事務(wù)讀取了另一個(gè)事務(wù)沒(méi)有提交的數(shù)據(jù),非常嚴(yán)重。應(yīng)當(dāng)盡量避免臟讀。

?

?不可重復(fù)讀:在一個(gè)事務(wù)內(nèi)多次讀取表中的數(shù)據(jù),多次讀取的結(jié)果不同。

?

? 幻讀(虛讀)

?

?

?

?隔離級(jí)別:如何解決問(wèn)題

?

l? 數(shù)據(jù)庫(kù)規(guī)范規(guī)定了4種隔離級(jí)別,分別用于描述兩個(gè)事務(wù)并發(fā)的所有情況。

  • read uncommitted 讀未提交,一個(gè)事務(wù)讀到另一個(gè)事務(wù)沒(méi)有提交的數(shù)據(jù)。
  • a)?????? 存在:3個(gè)問(wèn)題(臟讀、不可重復(fù)讀、虛讀)。

    b)?????? 解決:0個(gè)問(wèn)題

  • read committed 讀已提交,一個(gè)事務(wù)讀到另一個(gè)事務(wù)已經(jīng)提交的數(shù)據(jù)。
  • a)?????? 存在:2個(gè)問(wèn)題(不可重復(fù)讀、虛讀)。

    b)?????? 解決:1個(gè)問(wèn)題(臟讀)

  • repeatable read:可重復(fù)讀,在一個(gè)事務(wù)中讀到的數(shù)據(jù)始終保持一致,無(wú)論另一個(gè)事務(wù)是否提交。
  • a)?????? 存在:1個(gè)問(wèn)題(虛讀)。

    b)?????? 解決:2個(gè)問(wèn)題(臟讀、不可重復(fù)讀)

  • serializable 串行化,同時(shí)只能執(zhí)行一個(gè)事務(wù),相當(dāng)于事務(wù)中的單線(xiàn)程。
  • a)?????? 存在:0個(gè)問(wèn)題。

    b)?????? 解決:3個(gè)問(wèn)題(臟讀、不可重復(fù)讀、虛讀)

    ?安全和性能對(duì)比

    ? ? ?  安全性:serializable > repeatable read > read committed > read uncommitted

    ?   ?性能 : serializable < repeatable read < read committed < read uncommitted

    常見(jiàn)數(shù)據(jù)庫(kù)的默認(rèn)隔離級(jí)別:

      ? MySql:repeatable read

       Oracle:read committed

    ?

    ? 演示

    ?查詢(xún)數(shù)據(jù)庫(kù)的隔離級(jí)別

    show variables like '%isolation%'; 或 select @@tx_isolation;

    設(shè)置數(shù)據(jù)庫(kù)的隔離級(jí)別

    set session transaction isolation level 級(jí)別字符串

    ?級(jí)別字符串:read uncommitted、read committed、repeatable read、serializable

    ? 例如:set session transaction isolation level read uncommitted;

    ?

    ? 讀未提交:read uncommitted ? A窗口設(shè)置隔離級(jí)別 ? AB同時(shí)開(kāi)始事務(wù) ? A 查詢(xún) ? B 更新,但不提交 ? A 再查詢(xún)?-- 查詢(xún)到了未提交的數(shù)據(jù) ? B 回滾 ? A 再查詢(xún)?-- 查詢(xún)到事務(wù)開(kāi)始前數(shù)據(jù)? 讀已提交:read committed ? A窗口設(shè)置隔離級(jí)別 ? AB同時(shí)開(kāi)啟事務(wù) ? A查詢(xún) ? B更新、但不提交 ? A再查詢(xún)?--數(shù)據(jù)不變,解決問(wèn)題【臟讀】 ? B提交 ? A再查詢(xún)?--數(shù)據(jù)改變,存在問(wèn)題【不可重復(fù)讀】? 可重復(fù)讀:repeatable read ? A窗口設(shè)置隔離級(jí)別 ? AB 同時(shí)開(kāi)啟事務(wù) ? A查詢(xún) ? B更新, 但不提交 ? A再查詢(xún)?--數(shù)據(jù)不變,解決問(wèn)題【臟讀】 ? B提交 ? A再查詢(xún)?--數(shù)據(jù)不變,解決問(wèn)題【不可重復(fù)讀】 ? A提交或回滾 ? A再查詢(xún)?--數(shù)據(jù)改變,另一個(gè)事務(wù)? 串行化:serializable ? A窗口設(shè)置隔離級(jí)別 ? AB同時(shí)開(kāi)啟事務(wù) ? A查詢(xún) ? B更新?--等待(如果A沒(méi)有進(jìn)一步操作,B將等待超時(shí)) ? A回滾 ? B 窗口?--等待結(jié)束,可以進(jìn)行操作

      

    轉(zhuǎn)載于:https://www.cnblogs.com/daiwei1981/p/9338420.html

    總結(jié)

    以上是生活随笔為你收集整理的对事务的特性ACID的理解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。