当前位置:网站首页>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锁。
边栏推荐
- electron remote 报错
- Attribute keywords ondelete, private, readonly, required
- Pert diagram (engineering network diagram)
- Navigation - are you sure you want to take a look at such an easy-to-use navigation framework?
- Mmkv use and principle
- Excuse me, does PTS have a good plan for database pressure measurement?
- C # use TCP protocol to establish connection
- JS image to Base64
- 因员工将密码设为“123456”,AMD 被盗 450Gb 数据?
- 找到自己的价值
猜你喜欢

「2022年7月」WuKong编辑器更版记录

"July 2022" Wukong editor update record

Full details of efficientnet model

在软件工程领域,搞科研的这十年!

Huawei cloud database DDS products are deeply enabled

Docker deploy Oracle

Wechat applet - Advanced chapter component packaging - Implementation of icon component (I)

OAuth 2.0 + JWT protect API security

The longest ascending subsequence model acwing 1014 Mountaineering

Applet directory structure
随机推荐
Arm cortex-a9, mcimx6u7cvm08ad processor application
PD虚拟机教程:如何在ParallelsDesktop虚拟机中设置可使用的快捷键?
找到自己的价值
半小时『直播连麦搭建』动手实战,大学生技术岗位简历加分项get!
Electronic remote error
Substance Painter筆記:多顯示器且多分辨率顯示器時的設置
bashrc与profile
Pytorch model trains practical skills and breaks through the bottleneck of speed
Nllb-200: meta open source new model, which can translate 200 languages
比尔·盖茨晒48年前简历:“没你们的好看”
NDK beginner's study (1)
Similarities and differences between switches and routers
一款你不容错过的Laravel后台管理扩展包 —— Voyager
Half an hour of hands-on practice of "live broadcast Lianmai construction", college students' resume of technical posts plus points get!
Data flow diagram, data dictionary
[Reading stereo matching papers] [III] ints
电脑Win7系统桌面图标太大怎么调小
Codes de non - retour à zéro inversés, codes Manchester et codes Manchester différentiels couramment utilisés pour le codage des signaux numériques
WebRTC 音频抗弱网技术(上)
electron remote 报错