亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

postgresql查詢(xún)鎖表以及解除鎖表操作

 更新時(shí)間:2020年12月25日 10:08:57   作者:會(huì)飛的魚(yú)3YH  
這篇文章主要介紹了postgresql查詢(xún)鎖表以及解除鎖表操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

1.-- 查詢(xún)ACTIVITY的狀態(tài)等信息

select T.PID, T.STATE, T.QUERY, T.WAIT_EVENT_TYPE, T.WAIT_EVENT,
  T.QUERY_START
 from PG_STAT_ACTIVITY T
 where T.DATNAME = '數(shù)據(jù)庫(kù)用戶(hù)名';

上面查詢(xún)結(jié)果中:pid就是ACTIVITY的唯一標(biāo)識(shí),state就是活動(dòng)狀態(tài),query就是正在執(zhí)行的sql語(yǔ)句,query——start就是開(kāi)始執(zhí)行的時(shí)間。

2.-- 查詢(xún)死鎖的ACTIVITY

select T.PID, T.STATE, T.QUERY, T.WAIT_EVENT_TYPE, T.WAIT_EVENT,
  T.QUERY_START
 from PG_STAT_ACTIVITY T
 where T.DATNAME = '數(shù)據(jù)庫(kù)用戶(hù)名'
  and T.WAIT_EVENT_TYPE = 'Lock';

3.將第二條查詢(xún)語(yǔ)句的pid字段的數(shù)字值記錄下來(lái),執(zhí)行下面的查詢(xún)語(yǔ)句可以解鎖:

-- 通過(guò)pid解鎖對(duì)應(yīng)的ACTIVITY

select PG_CANCEL_BACKEND('6984');

上面的查詢(xún)語(yǔ)句,執(zhí)行了pg_cancel_backend()函數(shù),該函數(shù)是取消后臺(tái)操作,回滾未提交事物的用途。

補(bǔ)充:PostgreSQL 之 鎖機(jī)制

當(dāng)要增刪改查表中的數(shù)據(jù)時(shí),首先是要獲得表上的鎖,然后再獲得行上的鎖

postgresql中有8種表鎖

最普通的是共享鎖 share 和排他鎖 exclusive

因?yàn)槎喟姹镜脑?,修改一條語(yǔ)句的同時(shí),允許了讀數(shù)據(jù),為了處理這種情況,又增加了兩種鎖”access share”和”acess excusive”,鎖中的關(guān)鍵字 access 是與多版本相關(guān)的

為了處理表鎖和行鎖之間的關(guān)系,有了 意向鎖 的概念,這時(shí)又加了兩種鎖,即 意向共享鎖 和 意向排他鎖 ,由于意向鎖之間不會(huì)產(chǎn)生沖突,而且意向排它鎖相互之間也不會(huì)產(chǎn)生沖突,于是又需要更嚴(yán)格一些的鎖,這樣就產(chǎn)生了“share update exclusive” 和 ”share row exclusive”

表級(jí)鎖模式

表級(jí)鎖模式

解釋

ACCESS SHARE

只與“ACCESS EXCLUSIVE” 鎖模式?jīng)_突;

查詢(xún)命令(Select command)將會(huì)在它查詢(xún)的表上獲取”Access Shared” 鎖,一般地,任何一個(gè)對(duì)表上的只讀查詢(xún)操作都將獲取這種類(lèi)型的鎖。

ROW SHARE

與”Exclusive'和”Access Exclusive”鎖模式?jīng)_突;

”Select for update”和”Select for share”命令將獲得這種類(lèi)型鎖,并且所有被引用但沒(méi)有 FOR UPDATE 的表上會(huì)加上”Access shared locks”鎖。

ROW EXCLUSIVE

與 “Share,Shared roexclusive,Exclusive,Access exclusive”模式?jīng)_突;

“Update,Delete,Insert”命令會(huì)在目標(biāo)表上獲得這種類(lèi)型的鎖,并且在其它被引用的表上加上”Access shared”鎖,一般地,更改表數(shù)據(jù)的命令都將在這張表上獲得”Row exclusive”鎖。

SHARE UPDATE EXCLUSIVE

”Share update exclusive,Share,Share row ,exclusive,exclusive,Access exclusive”模式?jīng)_突,這種模式保護(hù)一張表不被并發(fā)的模式更改和VACUUM;

“Vacuum(without full), Analyze ”和 “Create index concurrently”命令會(huì)獲得這種類(lèi)型鎖。

SHARE

與“Row exclusive,Shared update exclusive,Share row exclusive ,Exclusive,Access exclusive”鎖模式?jīng)_突,這種模式保護(hù)一張表數(shù)據(jù)不被并發(fā)的更改;

“Create index”命令會(huì)獲得這種鎖模式。

SHARE ROW EXCLUSIVE

與“Row exclusive,Share update exclusive,Shared,Shared row exclusive,Exclusive,Access Exclusive”鎖模式?jīng)_突;

任何Postgresql 命令不會(huì)自動(dòng)獲得這種鎖。

EXCLUSIVE

與” ROW SHARE, ROW EXCLUSIVE, SHARE UPDATE EXCLUSIVE, SHARE, SHARE ROW EXCLUSIVE, EXCLUSIVE, ACCESS EXCLUSIVE”模式?jīng)_突,這種索模式僅能與Access Share 模式并發(fā),換句話說(shuō),只有讀操作可以和持有”EXCLUSIVE”鎖的事務(wù)并行;

任何Postgresql 命令不會(huì)自動(dòng)獲得這種類(lèi)型的鎖;

ACCESS EXCLUSIVE

與所有模式鎖沖突(ACCESS SHARE, ROW SHARE, ROW EXCLUSIVE, SHARE UPDATE EXCLUSIVE, SHARE, SHARE ROW EXCLUSIVE, EXCLUSIVE, and ACCESS EXCLUSIVE),這種模式保證了當(dāng)前只有一個(gè)事務(wù)訪問(wèn)這張表;“ALTER TABLE, DROP TABLE, TRUNCATE, REINDEX, CLUSTER, VACUUM FULL” 命令會(huì)獲得這種類(lèi)型鎖,在Lock table 命令中,如果沒(méi)有申明其它模式,它也是缺省模式。

表鎖的沖突關(guān)系

Requested Lock Mode

Current Lock Mode

ACCESS SHARE

ROW SHARE

ROW EXCLUSIVE

SHARE UPDATE EXCLUSIVE

SHARE

SHARE ROW EXCLUSIVE

EXCLUSIVE

ACCESS EXCLUSIVE

ACCESS SHARE

X

X

ROW SHARE

X

X

ROW EXCLUSIVE

X

X

X

X

SHARE UPDATE EXCLUSIVE

X

X

X

X

X

SHARE

X

X

X

X

X

SHARE ROW EXCLUSIVE

X

X

X

X

X

X

EXCLUSIVE

X

X

X

X

X

X

X

ACCESS EXCLUSIVE

X

X

X

X

X

X

X

X

表鎖類(lèi)型對(duì)應(yīng)的數(shù)據(jù)庫(kù)操作

鎖類(lèi)型

對(duì)應(yīng)的數(shù)據(jù)庫(kù)操作

ACCESS SHARE

select

ROW SHARE

select for update, select for share

ROW EXCLUSIVE

update,delete,insert

SHARE UPDATE EXCLUSIVE

vacuum(without full),analyze,create index concurrently

SHARE

create index

SHARE ROW EXCLUSIVE

任何Postgresql命令不會(huì)自動(dòng)獲得這種鎖

EXCLUSIVE

任何Postgresql命令不會(huì)自動(dòng)獲得這種類(lèi)型的鎖

ACCESS EXCLUSIVE

alter table,drop table,truncate,reindex,cluster,vacuum full

表級(jí)鎖命令(顯式在表上加鎖的命令)

testdb=# \h lock
Command:  LOCK
Description: lock a table
 
Syntax:
LOCK [ TABLE ] [ ONLY ] name [ * ] [, ...] [ IN lockmode MODE ] [ NOWAIT ]
 
where lockmode is one of:
 ACCESS SHARE | ROW SHARE | ROW EXCLUSIVE | SHARE UPDATE EXCLUSIVE
 | SHARE | SHARE ROW EXCLUSIVE | EXCLUSIVE | ACCESS EXCLUSIVE

注:

name:要鎖定的現(xiàn)有表的鎖名稱(chēng)(可選模式限定)。 如果在表名之前指定了ONLY,則僅該表被鎖定 如果未指定ONLY,則表及其所有后代表(如果有)被鎖定。

lock_mode:鎖模式指定此鎖與之沖突的鎖。 如果未指定鎖定模式,則使用最嚴(yán)格的訪問(wèn)模式ACCESS EXCLUSIVE。

nowait

當(dāng)事務(wù)要更新表中的數(shù)據(jù)時(shí),應(yīng)該申請(qǐng)“ROW EXCLUSIVER”

行級(jí)鎖模式

只有兩種,共享鎖和排他鎖,或者可以說(shuō)是“讀鎖” 或 “寫(xiě)鎖“

由于多版本的實(shí)現(xiàn),實(shí)際讀取行數(shù)據(jù)時(shí),并不會(huì)在行上執(zhí)行任何鎖

行級(jí)鎖命令(顯式加行鎖)

SELECT …… FOR { UPDATE | SHARE } [OF table_name[,……]] [ NOWAIT]

備注:

1)指定 OF table_name,則只有被指定的表會(huì)被鎖定

2)例外情況,主查詢(xún)中引用了WITH查詢(xún)時(shí),WITH查詢(xún)中的表不被鎖定

3)如果需要鎖定WITH查詢(xún)中的表,需在WITH查詢(xún)內(nèi)指定FOR UPDATA或FOR SHARE

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • psql除法保留小數(shù),實(shí)現(xiàn)向上取整和向下取整操作

    psql除法保留小數(shù),實(shí)現(xiàn)向上取整和向下取整操作

    這篇文章主要介紹了psql除法保留小數(shù),實(shí)現(xiàn)向上取整和向下取整操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-01-01
  • postgres 連接數(shù)查看與設(shè)置操作

    postgres 連接數(shù)查看與設(shè)置操作

    這篇文章主要介紹了postgres 連接數(shù)查看與設(shè)置操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-01-01
  • PostgreSQL關(guān)閉數(shù)據(jù)庫(kù)服務(wù)的三種模式

    PostgreSQL關(guān)閉數(shù)據(jù)庫(kù)服務(wù)的三種模式

    PostgreSQL 提供了三種關(guān)閉數(shù)據(jù)庫(kù)服務(wù)的不同方式,它們最終都是發(fā)送一個(gè)關(guān)閉信號(hào)到 postgres 主服務(wù)進(jìn)程,本文將給大家詳細(xì)的介紹一下這三種模式,需要的朋友可以參考下
    2024-07-07
  • PostgreSQL工具pgAdmin的介紹及使用

    PostgreSQL工具pgAdmin的介紹及使用

    本文主要介紹了PostgreSQL工具pgAdmin的介紹及使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • PostgreSQL教程(十八):客戶(hù)端命令(2)

    PostgreSQL教程(十八):客戶(hù)端命令(2)

    這篇文章主要介紹了PostgreSQL教程(十八):客戶(hù)端命令(2),本文講解了pg_dump、pg_restore、psql、內(nèi)置命令應(yīng)用示例等內(nèi)容,需要的朋友可以參考下
    2015-05-05
  • PostgreSQL實(shí)現(xiàn)一個(gè)通用標(biāo)簽系統(tǒng)

    PostgreSQL實(shí)現(xiàn)一個(gè)通用標(biāo)簽系統(tǒng)

    這篇文章主要給大家介紹了關(guān)于利用PostgreSQL實(shí)現(xiàn)一個(gè)通用標(biāo)簽系統(tǒng)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • PostgreSQL中pageinspect 的擴(kuò)展使用小結(jié)

    PostgreSQL中pageinspect 的擴(kuò)展使用小結(jié)

    pageinspect是PostgreSQL的底層擴(kuò)展,允許數(shù)據(jù)庫(kù)管理員和開(kāi)發(fā)者直接檢查數(shù)據(jù)庫(kù)頁(yè)面的內(nèi)部結(jié)構(gòu),需超級(jí)用戶(hù)權(quán)限,適用于9.6+版本,感興趣的可以了解一下
    2025-06-06
  • PostgreSQL修改最大連接數(shù)的詳細(xì)操作步驟

    PostgreSQL修改最大連接數(shù)的詳細(xì)操作步驟

    PostgreSQL連接數(shù)超限導(dǎo)致錯(cuò)誤,需修改max_connections參數(shù)及操作系統(tǒng)ulimit限制,這篇文章主要介紹了PostgreSQL修改最大連接數(shù)的詳細(xì)操作步驟,需要的朋友可以參考下
    2025-06-06
  • PostgreSQL實(shí)現(xiàn)按年、月、日、周、時(shí)、分、秒的分組統(tǒng)計(jì)

    PostgreSQL實(shí)現(xiàn)按年、月、日、周、時(shí)、分、秒的分組統(tǒng)計(jì)

    這篇文章介紹了PostgreSQL實(shí)現(xiàn)按年、月、日、周、時(shí)、分、秒分組統(tǒng)計(jì)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • 查詢(xún)PostgreSQL中所有表邏輯外鍵的方法

    查詢(xún)PostgreSQL中所有表邏輯外鍵的方法

    本文介紹了如何查詢(xún)PostgreSQL中所有表的邏輯外鍵,并指導(dǎo)您如何先刪除再重新建立這些外鍵,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友一起看看吧
    2023-08-08

最新評(píng)論