当前位置:网站首页>PG基础篇--逻辑结构管理(锁机制--表锁)
PG基础篇--逻辑结构管理(锁机制--表锁)
2022-07-07 12:43:00 【51CTO】
pg的锁有两类,表级锁和行级锁。
表级锁
表级锁分类
ACCESS SHARE | 只读表不修改表申请该锁模式 | |
ROW SHARE | select for update 和select for share 申请该锁模式 | |
ROW EXCLUSIVE | DML申请该锁模式 | |
SHARE UPDATE EXCLUSIVE | VACUUM、ANALYZE、CREATE INDEX CONCURRENTLY申请该锁模式 | |
SHARE | create index 申请该锁模式 | |
SHARE ROW EXCLUSIVE | 不会主动申请 | |
EXCLUSIVE | 不会主动申请 | |
ACCESS EXCLUSIVE | alter table ,drop table,truncate,reindex ,vacuum full 申请该模式的锁 |
表级锁概述
表级锁只有share和EXCLUSIVE两种,也就是读和写锁,share读锁加上后不能修改表,加锁exclusive写锁后不能读也不能写,但是在多版本功能后,修改某一行数据,实际上并没有改变原来那一行,而是另复制了一行数据,修改在新行上进行,事务不提交,别人是看不到修改行的,就没有必要阻塞其他用户读数据了。
在多版本功能下,ACCESS share 表明加上这个锁,即使是正在修改数据的情况下,也允许读数据,另一个锁ACCESS EXCLUSIVE 即使多版本功能,也不允许访问数据。
意向锁
表级锁的锁粒度太大,出现了行级锁,mysql获得行锁之前需要获取意向锁,pg中类似mysql也有ROW_SHARE 和ROW_EXCLUSIVE锁。
意向锁之间不会冲突,意向锁和非意向锁的冲突兼容关系和普通锁之间关系一样。可以简单转换为X和S,在比较是否兼容。
SHARE UPDATE EXCLUSIVE
就是把IX锁之间的不兼容变为更严格的一种锁,针对不带FULL的VACUUM,CREATE INDEX CONCURRENTLY都会申请该锁。
SHAER ROW EXCLUSIVE
等同于加了S锁和IX锁
表锁总结
PG中共8种锁,共享锁SHARE 和排它锁EXCLUSIVE ,因为多版本的原因修改数据的同事允许读数据,于是有了ACCESS SHARE和ACCESS EXCLUSIVE锁。
为了处理表锁和行锁之间的关系,欧了意向锁的概念,ROW_SHARE 和ROW_EXCLUSIVE锁,但是意向锁之间不会冲突,为了更严格,出现了SHARE
UPDATE EXCLUSIVE和 SHARE ROW EXCLUSIVE锁。
边栏推荐
- Summary on adding content of background dynamic template builder usage
- 《微信小程序-进阶篇》组件封装-Icon组件的实现(一)
- ES日志报错赏析-- allow delete
- Assign a dynamic value to the background color of DataGrid through ivalueconverter
- Pert diagram (engineering network diagram)
- The longest ascending subsequence model acwing 482 Chorus formation
- JS get the current time, month, day, year, and the uniapp location applet opens the map to select the location
- Half an hour of hands-on practice of "live broadcast Lianmai construction", college students' resume of technical posts plus points get!
- Mrs offline data analysis: process OBS data through Flink job
- Emqx 5.0 release: open source Internet of things message server with single cluster supporting 100million mqtt connections
猜你喜欢
Huawei cloud database DDS products are deeply enabled
【历史上的今天】7 月 7 日:C# 发布;Chrome OS 问世;《仙剑奇侠传》发行
《微信小程序-进阶篇》组件封装-Icon组件的实现(一)
Verilog implementation of a simple legv8 processor [4] [explanation of basic knowledge and module design of single cycle implementation]
用例图
Wechat applet - Advanced chapter component packaging - Implementation of icon component (I)
GVIM [III] [u vimrc configuration]
[Reading stereo matching papers] [III] ints
Horizontal of libsgm_ path_ Interpretation of aggregation program
Data connection mode in low code platform (Part 2)
随机推荐
比尔·盖茨晒48年前简历:“没你们的好看”
OAuth 2.0 + JWT protect API security
一文读懂数仓中的pg_stat
Hangdian oj2054 a = = B? ???
EMQX 5.0 发布:单集群支持 1 亿 MQTT 连接的开源物联网消息服务器
Instructions d'utilisation de la trousse de développement du module d'acquisition d'accord du testeur mictr01
GVIM [III] [u vimrc configuration]
解析PHP跳出循环的方法以及continue、break、exit的区别介绍
用例图
PD virtual machine tutorial: how to set the available shortcut keys in the parallelsdesktop virtual machine?
Bashrc and profile
PLC: automatically correct the data set noise, wash the data set | ICLR 2021 spotlight
OAuth 2.0 + JWT 保护API安全
The method of parsing PHP to jump out of the loop and the difference between continue, break and exit
电脑Win7系统桌面图标太大怎么调小
Ascend 910实现Tensorflow1.15实现LeNet网络的minist手写数字识别
AWS学习笔记(三)
2022PAGC 金帆奖 | 融云荣膺「年度杰出产品技术服务商」
2022云顾问技术系列之高可用专场分享会
数据湖(九):Iceberg特点详述和数据类型