日韩小视频-日韩久久一区二区三区-日韩久久一级毛片-日韩久久久精品中文字幕-国产精品亚洲精品影院-国产精品亚洲欧美云霸高清

下載吧 - 綠色安全的游戲和軟件下載中心

軟件下載吧

當前位置:軟件下載吧 > 技術(shù)開發(fā) > 數(shù)據(jù)庫 > PostgreSQL教程(九):事物隔離介紹

PostgreSQL教程(九):事物隔離介紹

時間:2024-02-13 10:22作者:下載吧人氣:12

在SQL的標準中事物隔離級別分為以下四種:
    1. 讀未提交(Read uncommitted)
    2. 讀已提交(Read committed)
    3. 可重復(fù)讀(Repeatable read)
    4. 可串行化(Serializable)
    然而PostgreSQL在9.1之前的版本中只是實現(xiàn)了其中兩種,即讀已提交和可串行化,如果在實際應(yīng)用中選擇了另外兩種,那么PostgreSQL將會自動向更嚴格的隔離級別調(diào)整。在PostgreSQL v9.1的版本中提供了三種實現(xiàn)方式,即在原有的基礎(chǔ)上增加了可重復(fù)讀。在這篇博客中我們將只是針對2)和4)進行說明和比較,因為在9.1中,3)和4)的差別也是非常小的。

 

  讀已提交 可串行化
PostgreSQL缺省隔離級別
其它事物未提交數(shù)據(jù)是否可見 不可見 不可見
執(zhí)行效率
適用場景 簡單SQL邏輯,如果SQL語句中含有嵌套查詢,那么在多次SQL查詢中將極有可能獲得不同版本的數(shù)據(jù)。 復(fù)雜SQL邏輯,特別是帶有嵌套的查詢比較適用。
SELECT查詢一致性時間點 從該SELECT查詢開始執(zhí)行時,在此查詢執(zhí)行期間,任何其它并發(fā)事物針對該查詢結(jié)果集的數(shù)據(jù)操作都將不會被本次查詢讀到,即本次查詢獲取的數(shù)據(jù)版本是與查詢開始執(zhí)行時的數(shù)據(jù)版本相一致。 從該SELECT查詢所在事物開始時,在此查詢執(zhí)行期間,任何其它并發(fā)事物針對該查詢結(jié)果集的數(shù)據(jù)操作都將不會被本次查詢讀到,即本次查詢獲取的數(shù)據(jù)版本是與查詢所在事物開始時的數(shù)據(jù)版本相一致。
同事物內(nèi)的數(shù)據(jù)操作是否可見 比如在同一個事物內(nèi)存在update和select操作,即使當前事物尚未提交,update所作的修改,在當前事物后面的select中依然可見。 和讀已提交相同。
同事物內(nèi)多次相同的select所見的數(shù)據(jù)是否相同 不同,由于該級別select的一致性時間點是該查詢開始執(zhí)行時,而多次查詢的時間點將肯定不相同,如果在第一次查詢開始到第二次查詢開始之間,其它的并發(fā)事物修改并提交或當前事物僅修改了查詢將要獲取的數(shù)據(jù),那么這些數(shù)據(jù)操作的結(jié)果將會在第二個查詢中有所體現(xiàn)。 需要分兩步來說,對于同一事物內(nèi)的修改如果發(fā)生在兩次查詢語句之間,那么第二個查詢將會看到這些修改的結(jié)果。然而對于其它并發(fā)事物的修改,將不會造成任何影響,即兩次select的結(jié)果是相同的。原因顯而易見,該隔離級別的select一致性時間點是與事物開始時相一致的。
相同行數(shù)據(jù)的修改 如果此時兩個并發(fā)事物在修改同一行數(shù)據(jù),先修改的事物將會給該行加行級鎖,另外一個事物將進入等待狀態(tài),直到第一個事物操作該行結(jié)束。那么倘若第一個針對該行的修改操作最終被其事物回滾,第二個修改操作在結(jié)束等待后,將直接修改該數(shù)據(jù)。然而如果第一個操作是被正常提交的話,那么就需要進一步判斷該操作的類型,如果是刪除(delete)該行,第二個修改操作將直接被忽略。如果是update該行的記錄,第二個修改操作則需要重新評估該行是否依然符合之前定義的修改條件。 和讀已提交隔離級別的機制基本相同,只是在第一個修改操作提交后,第二個操作將不再區(qū)分之前的修改是delete還是update,而是直接并返回下面信息:Error: Can’t serialize access due to concurrent update. 這是因為一個可串行化的事務(wù)在可串行化事務(wù)開始之后不能更改或者鎖住被其他事務(wù)更改過的行。因此,當應(yīng)用收到這樣的錯誤信息時,它應(yīng)該退出當前的事務(wù)然后從頭開始重新進行整個事務(wù)。在應(yīng)用程序中,也應(yīng)該有必要的代碼來專門處理該類錯誤。

    最后需要說明的是,在絕大多數(shù)的情況下,讀已提交級別均可適用,而且該級別的并發(fā)效率更高。只有在比較特殊的情況下,才手工將當前的事物隔離級別調(diào)整為可串行化或可重復(fù)讀。

標簽[db:關(guān)鍵字]

相關(guān)下載

查看所有評論+

網(wǎng)友評論

網(wǎng)友
您的評論需要經(jīng)過審核才能顯示

熱門閱覽

最新排行

公眾號

主站蜘蛛池模板: 人人99 | 精品午夜一区二区三区在线观看 | 黄色一及毛片 | 国产免费久久精品99久久 | 91精品国产免费久久国语蜜臀 | 日韩在线一区二区三区免费视频 | 男人和女人的做刺激性视频 | 久久精品人人爽人人爽快 | 日韩免费一级片 | 中文字幕在线观看亚洲日韩 | 日本免费不卡在线一区二区三区 | 成人欧美一区二区三区视频xxx | 中文字幕成人免费高清在线 | 中文字幕在线视频在线看 | 台湾精品视频在线播放 | 亚洲一级片在线播放 | 亚洲高清毛片 | 一级做a爰性色毛片 | 中文字幕日韩三级 | 国产美女自拍视频 | 一级片免费在线播放 | 亚洲欧洲一区二区三区久久 | 欧美另类极品 | 国产一级视频久久 | 日韩在线视频线视频免费网站 | a级毛片在线视频免费观看 a级免费 | 国产综合成人久久大片91 | 亚洲欧洲日产v特级毛片 | 日本久久久 | 国产成人久久一区二区三区 | 欧美在线香蕉在线现视频 | 久久国产一区二区三区 | 99精品热女视频专线 | 国产a国产片国产 | 亚洲欧洲一区二区三区在线 | 中文字幕视频网 | 亚洲男人天堂视频 | 99久久99这里只有免费费精品 | h亚洲| a级国产乱理伦片在线观看 a级国产乱理伦片在线观看99 | 中文字幕成人免费高清在线视频 |