当前位置:网站首页>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锁。
边栏推荐
- OAuth 2.0 + JWT 保护API安全
- 一个程序员的水平能差到什么程度?尼玛,都是人才呀...
- First choice for stock account opening, lowest Commission for stock trading account opening, is online account opening safe
- LeetCode每日一题(636. Exclusive Time of Functions)
- Demis Hassabis谈AlphaFold未来目标
- MicTR01 Tester 振弦采集模塊開發套件使用說明
- JS image to Base64
- 《微信小程序-进阶篇》组件封装-Icon组件的实现(一)
- WebRTC 音频抗弱网技术(上)
- Ascend 910实现Tensorflow1.15实现LeNet网络的minist手写数字识别
猜你喜欢
WebRTC 音频抗弱网技术(上)
Instructions d'utilisation de la trousse de développement du module d'acquisition d'accord du testeur mictr01
华为云数据库DDS产品深度赋能
设备故障预测机床故障提前预警机械设备振动监测机床故障预警CNC震动无线监控设备异常提前预警
AWS learning notes (III)
低代码平台中的数据连接方式(下)
2022年13个UX/UI/UE最佳创意灵感网站
比尔·盖茨晒48年前简历:“没你们的好看”
Webrtc audio anti weak network technology (Part 1)
leetcode:648. 单词替换【字典树板子 + 寻找若干前缀中的最短符合前缀】
随机推荐
「2022年7月」WuKong编辑器更版记录
Substance painter notes: settings for multi display and multi-resolution displays
大厂做开源的五大痛点
电脑Win7系统桌面图标太大怎么调小
2022云顾问技术系列之高可用专场分享会
华为云数据库DDS产品深度赋能
Simple steps for modifying IP of sigang electronic scale
Leetcode——236. 二叉树的最近公共祖先
electron remote 报错
一款你不容错过的Laravel后台管理扩展包 —— Voyager
Webrtc audio anti weak network technology (Part 1)
LeetCode每日一题(636. Exclusive Time of Functions)
Multi merchant mall system function disassembly lecture 01 - Product Architecture
回归测试的分类
leetcode:648. 单词替换【字典树板子 + 寻找若干前缀中的最短符合前缀】
Source code analysis of ArrayList
ES日志报错赏析-maximum shards open
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
什么是云原生?这回终于能搞明白了!
PD虚拟机教程:如何在ParallelsDesktop虚拟机中设置可使用的快捷键?