postgresql資料庫鎖介紹
postgresql鎖介紹
1 ACCESS SHARE
"ACCESS SHARE"鎖模式只與"ACCESS EXCLUSIVE" 鎖模式衝突;
查詢命令(Select command)將會在它查詢的表上獲取"Access Shared" 鎖,一般地,任何一個對錶上的只讀查詢操作都將獲取這種型別的鎖。
2 ROW SHARE
"Row Share" 鎖模式與"Exclusive’和"Access Exclusive"鎖模式衝突;
"Select for update"和"Select for share"命令將獲得這種型別鎖,並且所有被引用但沒有 FOR UPDATE 的表上會加上"Access shared locks"鎖。
3 ROW EXCLUSIVE
"Row exclusive" 與 "Share,Shared roexclusive,Exclusive,Access exclusive"模式衝突;
"Update,Delete,Insert"命令會在目標表上獲得這種型別的鎖,並且在其它被引用的表上加上"Access shared"鎖,一般地,更改表資料的命令都將在這張表上獲得"Row exclusive"鎖。
4 SHARE UPDATE EXCLUSIVE
"Share update exclusive,Share,Share row ,exclusive,exclusive,Access exclusive"模式衝突,這種模式保護一張表不被併發的模式更改和VACUUM;
"Vacuum(without full), Analyze "和 "Create index concurrently"命令會獲得這種型別鎖。
5 SHARE
與"Row exclusive,Shared update exclusive,Share row exclusive ,Exclusive,Access exclusive"鎖模式衝突,這種模式保護一張表資料不被併發的更改;
"Create index"命令會獲得這種鎖模式。
6 SHARE ROW EXCLUSIVE
與"Row exclusive,Share update exclusive,Shared,Shared row exclusive,Exclusive,Access Exclusive"鎖模式衝突;
任何Postgresql 命令不會自動獲得這種鎖。
7 EXCLUSIVE
與" ROW SHARE, ROW EXCLUSIVE, SHARE UPDATE EXCLUSIVE, SHARE, SHARE ROW EXCLUSIVE, EXCLUSIVE, ACCESS EXCLUSIVE"模式衝突,這種索模式僅能與Access Share 模式併發,換句話說,只有讀操作可以和持有"EXCLUSIVE"鎖的事務並行;
任何Postgresql 命令不會自動獲得這種型別的鎖;
8 ACCESS EXCLUSIVE
與所有模式鎖衝突(ACCESS SHARE, ROW SHARE, ROW EXCLUSIVE, SHARE UPDATE EXCLUSIVE, SHARE, SHARE ROW EXCLUSIVE, EXCLUSIVE, and ACCESS EXCLUSIVE),這種模式保證了當前只有一個事務訪問這張表;
"ALTER TABLE, DROP TABLE, TRUNCATE, REINDEX, CLUSTER, VACUUM FULL" 命令會獲得這種型別鎖,在Lock table 命令中,如果沒有申明其它模式,它也是預設模式。
1 ACCESS SHARE
"ACCESS SHARE"鎖模式只與"ACCESS EXCLUSIVE" 鎖模式衝突;
查詢命令(Select command)將會在它查詢的表上獲取"Access Shared" 鎖,一般地,任何一個對錶上的只讀查詢操作都將獲取這種型別的鎖。
2 ROW SHARE
"Row Share" 鎖模式與"Exclusive’和"Access Exclusive"鎖模式衝突;
"Select for update"和"Select for share"命令將獲得這種型別鎖,並且所有被引用但沒有 FOR UPDATE 的表上會加上"Access shared locks"鎖。
3 ROW EXCLUSIVE
"Row exclusive" 與 "Share,Shared roexclusive,Exclusive,Access exclusive"模式衝突;
"Update,Delete,Insert"命令會在目標表上獲得這種型別的鎖,並且在其它被引用的表上加上"Access shared"鎖,一般地,更改表資料的命令都將在這張表上獲得"Row exclusive"鎖。
4 SHARE UPDATE EXCLUSIVE
"Share update exclusive,Share,Share row ,exclusive,exclusive,Access exclusive"模式衝突,這種模式保護一張表不被併發的模式更改和VACUUM;
"Vacuum(without full), Analyze "和 "Create index concurrently"命令會獲得這種型別鎖。
5 SHARE
與"Row exclusive,Shared update exclusive,Share row exclusive ,Exclusive,Access exclusive"鎖模式衝突,這種模式保護一張表資料不被併發的更改;
"Create index"命令會獲得這種鎖模式。
6 SHARE ROW EXCLUSIVE
與"Row exclusive,Share update exclusive,Shared,Shared row exclusive,Exclusive,Access Exclusive"鎖模式衝突;
任何Postgresql 命令不會自動獲得這種鎖。
7 EXCLUSIVE
與" ROW SHARE, ROW EXCLUSIVE, SHARE UPDATE EXCLUSIVE, SHARE, SHARE ROW EXCLUSIVE, EXCLUSIVE, ACCESS EXCLUSIVE"模式衝突,這種索模式僅能與Access Share 模式併發,換句話說,只有讀操作可以和持有"EXCLUSIVE"鎖的事務並行;
任何Postgresql 命令不會自動獲得這種型別的鎖;
8 ACCESS EXCLUSIVE
與所有模式鎖衝突(ACCESS SHARE, ROW SHARE, ROW EXCLUSIVE, SHARE UPDATE EXCLUSIVE, SHARE, SHARE ROW EXCLUSIVE, EXCLUSIVE, and ACCESS EXCLUSIVE),這種模式保證了當前只有一個事務訪問這張表;
"ALTER TABLE, DROP TABLE, TRUNCATE, REINDEX, CLUSTER, VACUUM FULL" 命令會獲得這種型別鎖,在Lock table 命令中,如果沒有申明其它模式,它也是預設模式。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29371470/viewspace-1582910/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL資料庫鎖介紹MySql資料庫
- 資料庫系列:MySQL InnoDB鎖機制介紹資料庫MySql
- 資料庫介紹資料庫
- 資料庫介紹--初識資料庫資料庫
- Sqlserver_Oracle_Mysql_Postgresql不同資料庫之隔離級別介紹ServerOracleMySql資料庫
- L10資料庫——資料庫介紹資料庫
- HSQL 資料庫介紹(1)--簡介SQL資料庫
- hhdb資料庫介紹(4)資料庫
- 資料庫安全知識介紹資料庫
- HSQL 資料庫介紹(2)--使用SQL資料庫
- QuestDB時序資料庫介紹資料庫
- PostgreSQL:psql 介紹SQL
- H2 資料庫介紹(1)--簡介資料庫
- hhdb資料庫介紹(9-15)資料庫
- hhdb資料庫介紹(9-5)資料庫
- hhdb資料庫介紹(9-1)資料庫
- hhdb資料庫介紹(9-2)資料庫
- hhdb資料庫介紹(9-3)資料庫
- hhdb資料庫介紹(9-11)資料庫
- hhdb資料庫介紹(8-3)資料庫
- hhdb資料庫介紹(9-12)資料庫
- MongoDB 資料庫介紹及安裝MongoDB資料庫
- Oracle資料庫審計功能介紹Oracle資料庫
- 資料庫基礎知識介紹!資料庫
- 面試官問:請介紹一下MySQL資料庫的鎖機制?面試MySql資料庫
- 【INDEX】Postgresql索引介紹IndexSQL索引
- 資料庫複製(一)–複製介紹資料庫
- H2 資料庫介紹(2)--使用資料庫
- mysql的 information_schema 資料庫介紹MySqlORM資料庫
- 第一章---資料庫介紹資料庫
- 達夢透明分散式資料庫介紹分散式資料庫
- 關係型資料庫與非關係型資料庫介紹!資料庫
- 國產資料庫:達夢資料庫的幾個版本介紹資料庫
- 對GaussDB資料庫和資料管理的簡單介紹資料庫
- 關於資料庫 statistics_level的介紹資料庫
- GaussDB資料庫基礎函式介紹1資料庫函式
- 崑崙分散式資料庫架構介紹分散式資料庫架構
- 資料庫開發必備知識介紹資料庫
- postgresql 資料庫基本操作SQL資料庫