真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

postgresql鎖定表的方法

這篇文章主要介紹postgresql鎖定表的方法,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

創(chuàng)新互聯(lián)主要從事成都網(wǎng)站制作、成都做網(wǎng)站、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)劍河,10多年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來(lái)電咨詢建站服務(wù):028-86922220

鎖主要是為了保持?jǐn)?shù)據(jù)庫(kù)數(shù)據(jù)的一致性,可以阻止用戶修改一行或整個(gè)表,一般用在并發(fā)較高的數(shù)據(jù)庫(kù)中。

在多個(gè)用戶訪問(wèn)數(shù)據(jù)庫(kù)的時(shí)候若對(duì)并發(fā)操作不加控制就可能會(huì)讀取和存儲(chǔ)不正確的數(shù)據(jù),破壞數(shù)據(jù)庫(kù)的一致性。

數(shù)據(jù)庫(kù)中有兩種基本的鎖:排它鎖(Exclusive Locks)和共享鎖(Share Locks)。

如果數(shù)據(jù)對(duì)象加上排它鎖,則其他的事務(wù)不能對(duì)它讀取和修改。

如果加上共享鎖,則該數(shù)據(jù)庫(kù)對(duì)象可以被其他事務(wù)讀取,但不能修改。

LOCK 命令語(yǔ)法

LOCK 命令基礎(chǔ)語(yǔ)法如下:

LOCK [ TABLE ]
name
 IN
lock_mode

name:要鎖定的現(xiàn)有表的名稱(可選模式限定)。如果只在表名之前指定,則只鎖定該表。如果未指定,則鎖定該表及其所有子表(如果有)。

lock_mode:鎖定模式指定該鎖與哪個(gè)鎖沖突。如果沒(méi)有指定鎖定模式,則使用限制最大的訪問(wèn)獨(dú)占模式。可能的值是:ACCESS SHARE,ROW SHARE, ROW EXCLUSIVE, SHARE UPDATE EXCLUSIVE, SHARE,SHARE ROW EXCLUSIVE,EXCLUSIVE,ACCESS EXCLUSIVE。

一旦獲得了鎖,鎖將在當(dāng)前事務(wù)的其余時(shí)間保持。沒(méi)有解鎖表命令;鎖總是在事務(wù)結(jié)束時(shí)釋放。

死鎖

當(dāng)兩個(gè)事務(wù)彼此等待對(duì)方完成其操作時(shí),可能會(huì)發(fā)生死鎖。盡管 PostgreSQL 可以檢測(cè)它們并以回滾結(jié)束它們,但死鎖仍然很不方便。為了防止應(yīng)用程序遇到這個(gè)問(wèn)題,請(qǐng)確保將應(yīng)用程序設(shè)計(jì)為以相同的順序鎖定對(duì)象。

咨詢鎖

PostgreSQL 提供了創(chuàng)建具有應(yīng)用程序定義含義的鎖的方法。這些被稱為咨詢鎖。由于系統(tǒng)不強(qiáng)制使用它們,所以正確使用它們?nèi)Q于應(yīng)用程序。咨詢鎖對(duì)于不適合 MVCC 模型的鎖定策略非常有用。

例如,咨詢鎖的一個(gè)常見(jiàn)用途是模擬所謂"平面文件"數(shù)據(jù)管理系統(tǒng)中典型的悲觀鎖定策略。雖然存儲(chǔ)在表中的標(biāo)志可以用于相同的目的,但是通知鎖更快,避免了表膨脹,并且在會(huì)話結(jié)束時(shí)由服務(wù)器自動(dòng)清理。

實(shí)例

創(chuàng)建 COMPANY 表(下載 COMPANY SQL 文件 ),數(shù)據(jù)內(nèi)容如下:

runoobdb# select * from COMPANY;
 id | name | age | address  | salary
----+-------+-----+-----------+--------
  1 | Paul | 32 | California| 20000
 2 | Allen | 25 | Texas   | 15000
 3 | Teddy | 23 | Norway   | 20000
 4 | Mark | 25 | Rich-Mond | 65000
 5 | David | 27 | Texas   | 85000
 6 | Kim  | 22 | South-Hall| 45000
 7 | James | 24 | Houston  | 10000
(7 rows)

下面的示例將 runoobdb 數(shù)據(jù)庫(kù)中的 COMPANY 表鎖定為 ACCESS EXCLUSIVE 模式。

LOCK 語(yǔ)句只在事務(wù)模式下工作。

runoobdb=#BEGIN;
LOCK TABLE company1 IN ACCESS EXCLUSIVE MODE;

上面操作將得到下面結(jié)果:

LOCK TABLE

上面的消息指示表被鎖定,直到事務(wù)結(jié)束,并且要完成事務(wù),您必須回滾或提交事務(wù)。

以上是postgresql鎖定表的方法的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


當(dāng)前文章:postgresql鎖定表的方法
分享鏈接:http://weahome.cn/article/igsdhg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部