PostgreSQL學(xué)習(xí)筆記(八)事務(wù)處理與并發(fā)控制

PostgreSQL中提供了多種數(shù)據(jù)完整性的保證機(jī)制袜蚕。如:約束、觸發(fā)器亩钟、事務(wù)和鎖管理等乓梨。
事務(wù)主要是為了保證一組相關(guān)數(shù)據(jù)庫(kù)的操作能全部執(zhí)行成功,從而保證數(shù)據(jù)的完整性清酥。鎖機(jī)制主要是控制多個(gè)用戶對(duì)同一數(shù)據(jù)進(jìn)行操作扶镀,使用鎖機(jī)制可以解決并發(fā)問(wèn)題。

  • 事務(wù)
    事務(wù)是用戶對(duì)一個(gè)數(shù)據(jù)庫(kù)操作的一個(gè)序列焰轻,這些操作要么全做臭觉,要么全不做,是一個(gè)不可分割的單位。
    事務(wù)管理的常用語(yǔ)句如下:
BEGIN;
SQL語(yǔ)句1;
SQL語(yǔ)句2;
...
COMMIT;

事務(wù)塊是指包圍在BEGIN和COMMIT之間的語(yǔ)句蝠筑。在PostgreSQL9中狞膘,常用的事務(wù)塊管理語(yǔ)句含義如下:

START TRANSACTION:此命令表示開始一個(gè)新的事務(wù)塊.
BEGIN:初始化一個(gè)事務(wù)塊。在BEGIN命令后的語(yǔ)句都將在一個(gè)事務(wù)里面執(zhí)行什乙,知道遇見COMMIT或ROLLBACK挽封。它和START TRANSACTION是一樣的。
COMMIT:提交事務(wù)臣镣。
ROLLBACK:事務(wù)失敗時(shí)執(zhí)行回滾操作辅愿。
SET TRANSACTION:設(shè)置當(dāng)前事務(wù)的特性。對(duì)后面的事務(wù)沒有影響忆某。

  • 事務(wù)隔離及并發(fā)控制
    PostgreSQL是一個(gè)支持多用戶的數(shù)據(jù)庫(kù)点待,當(dāng)多個(gè)用戶操作同一數(shù)據(jù)庫(kù)時(shí),并發(fā)控制要保證所有用戶可以高效的訪問(wèn)的同時(shí)不破壞數(shù)據(jù)的完整性弃舒。
    數(shù)據(jù)庫(kù)中數(shù)據(jù)的并發(fā)操作經(jīng)常發(fā)生癞埠,而對(duì)數(shù)據(jù)的并發(fā)操作會(huì)帶來(lái)下面的一些問(wèn)題:
  1. 臟讀
    一個(gè)事務(wù)讀取了另一個(gè)未提交事務(wù)寫入的數(shù)據(jù)。
  2. 不可重復(fù)讀
    一個(gè)事務(wù)重新讀取前面讀取過(guò)的數(shù)據(jù)聋呢,發(fā)現(xiàn)該數(shù)據(jù)已經(jīng)被另一個(gè)已經(jīng)提交的事務(wù)修改燕差。
  3. 幻讀
    一個(gè)事務(wù)重新執(zhí)行一個(gè)查詢,返回符合查詢條件的行的集合坝冕,發(fā)現(xiàn)滿足查詢條件的行的集合因?yàn)槠渌罱峤坏氖聞?wù)而發(fā)生了改變徒探。

SQL標(biāo)準(zhǔn)定義了四個(gè)級(jí)別的事務(wù)隔離。

隔離級(jí)別 臟讀 幻讀 不可重復(fù)性讀取
讀未提交 可能 可能 可能
讀已提交 不可能 可能 可能
可重復(fù)讀 不可能 可能 不可能
可串行讀 不可能 不可能 不可能

在PostgreSQL中喂窟,可以請(qǐng)求4種隔離級(jí)別中的任意一種测暗。但是在內(nèi)部,實(shí)際上只有兩種獨(dú)立的隔離級(jí)別磨澡,分別對(duì)應(yīng)已提交和可串行化碗啄。如果選擇了讀未提交的級(jí)別,實(shí)際上使用的是讀已提交稳摄,在選擇可重復(fù)讀級(jí)別的時(shí)候稚字,實(shí)際上用的是可串行化,所以實(shí)際的隔離級(jí)別可能比選擇的更嚴(yán)格厦酬。這是SQL標(biāo)準(zhǔn)允許的:4種隔離級(jí)別只定義了哪種現(xiàn)象不能發(fā)生胆描,但是沒有定義哪種現(xiàn)象一定發(fā)生。

PostgreSQL只提供兩種隔離級(jí)別的原因是仗阅,這是把標(biāo)準(zhǔn)的隔離級(jí)別與多版本并發(fā)控制架構(gòu)映射相關(guān)的唯一合理方法昌讲。

  1. 讀已提交
    這是PostgreSQL中默認(rèn)的隔離級(jí)別,當(dāng)一個(gè)事務(wù)運(yùn)行在這個(gè)隔離級(jí)別時(shí)减噪,一個(gè)SELECT查詢只能看到查詢開始前已提交的數(shù)據(jù)短绸,而無(wú)法看到未提交的數(shù)據(jù)或者在查詢期間其他的事務(wù)已提交的數(shù)據(jù)车吹。
  2. 可串行化
    可串行化提供最嚴(yán)格的事務(wù)隔離。這個(gè)級(jí)別模擬串行的事務(wù)執(zhí)行醋闭,就好像事務(wù)是一個(gè)接著一個(gè)串行的執(zhí)行窄驹。不過(guò),這個(gè)級(jí)別的應(yīng)用必須準(zhǔn)備在串行化失敗的時(shí)候重新啟動(dòng)事務(wù)证逻。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末乐埠,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子瑟曲,更是在濱河造成了極大的恐慌,老刑警劉巖豪治,帶你破解...
    沈念sama閱讀 212,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件洞拨,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡负拟,警方通過(guò)查閱死者的電腦和手機(jī)烦衣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)掩浙,“玉大人花吟,你說(shuō)我怎么就攤上這事〕Γ” “怎么了衅澈?”我有些...
    開封第一講書人閱讀 158,369評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)谬墙。 經(jīng)常有香客問(wèn)我今布,道長(zhǎng),這世上最難降的妖魔是什么拭抬? 我笑而不...
    開封第一講書人閱讀 56,799評(píng)論 1 285
  • 正文 為了忘掉前任部默,我火速辦了婚禮,結(jié)果婚禮上造虎,老公的妹妹穿的比我還像新娘傅蹂。我一直安慰自己,他們只是感情好算凿,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評(píng)論 6 386
  • 文/花漫 我一把揭開白布份蝴。 她就那樣靜靜地躺著,像睡著了一般氓轰。 火紅的嫁衣襯著肌膚如雪搞乏。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,096評(píng)論 1 291
  • 那天戒努,我揣著相機(jī)與錄音请敦,去河邊找鬼镐躲。 笑死,一個(gè)胖子當(dāng)著我的面吹牛侍筛,可吹牛的內(nèi)容都是我干的萤皂。 我是一名探鬼主播,決...
    沈念sama閱讀 39,159評(píng)論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼匣椰,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼裆熙!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起禽笑,我...
    開封第一講書人閱讀 37,917評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤入录,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后佳镜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體僚稿,經(jīng)...
    沈念sama閱讀 44,360評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評(píng)論 2 327
  • 正文 我和宋清朗相戀三年蟀伸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蚀同。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,814評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡啊掏,死狀恐怖蠢络,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情迟蜜,我是刑警寧澤刹孔,帶...
    沈念sama閱讀 34,509評(píng)論 4 334
  • 正文 年R本政府宣布,位于F島的核電站娜睛,受9級(jí)特大地震影響芦疏,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜微姊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評(píng)論 3 317
  • 文/蒙蒙 一酸茴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧兢交,春花似錦薪捍、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至晴裹,卻和暖如春被济,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背涧团。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工只磷, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留经磅,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,641評(píng)論 2 362
  • 正文 我出身青樓钮追,卻偏偏與公主長(zhǎng)得像预厌,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子元媚,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容