日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)PostgreSQL教程PostgreSQLLOCK(鎖)

PostgreSQL LOCK(鎖)

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

成都創(chuàng)新互聯(lián)公司擁有10余年成都網(wǎng)站建設(shè)工作經(jīng)驗,為各大企業(yè)提供成都網(wǎng)站設(shè)計、做網(wǎng)站服務(wù),對于網(wǎng)頁設(shè)計、PC網(wǎng)站建設(shè)(電腦版網(wǎng)站建設(shè))、App定制開發(fā)、wap網(wǎng)站建設(shè)(手機版網(wǎng)站建設(shè))、程序開發(fā)、網(wǎng)站優(yōu)化(SEO優(yōu)化)、微網(wǎng)站、主機域名等,憑借多年來在互聯(lián)網(wǎng)的打拼,我們在互聯(lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)積累了很多網(wǎng)站制作、網(wǎng)站設(shè)計、網(wǎng)絡(luò)營銷經(jīng)驗,集策劃、開發(fā)、設(shè)計、營銷、管理等網(wǎng)站化運作于一體,具備承接各種規(guī)模類型的網(wǎng)站建設(shè)項目的能力。

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

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

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

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

LOCK 命令語法

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

LOCK [ TABLE ]
name
 IN
lock_mode
  • name:要鎖定的現(xiàn)有表的名稱(可選模式限定)。如果只在表名之前指定,則只鎖定該表。如果未指定,則鎖定該表及其所有子表(如果有)。
  • lock_mode:鎖定模式指定該鎖與哪個鎖沖突。如果沒有指定鎖定模式,則使用限制最大的訪問獨占模式??赡艿闹凳牵篈CCESS SHARE,ROW SHARE, ROW EXCLUSIVE, SHARE UPDATE EXCLUSIVE, SHARE,SHARE ROW EXCLUSIVE,EXCLUSIVE,ACCESS EXCLUSIVE。

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

死鎖

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

咨詢鎖

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

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

實例

創(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ù)庫中的 COMPANY 表鎖定為 ACCESS EXCLUSIVE 模式。

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

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

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

LOCK TABLE

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


名稱欄目:創(chuàng)新互聯(lián)PostgreSQL教程PostgreSQLLOCK(鎖)
網(wǎng)頁地址:http://www.dlmjj.cn/article/dpsoceg.html