Postgresql管理-锁管理与分析

Postgresql管理-锁管理与分析

PostgreSQL中有多种锁模式,每种锁模式都有其特定的用途和兼容性规则。以下是几种常见的锁模式及其用途:

  • ACCESS SHARE :用于 SELECT 操作。(mvcc 写不阻塞读,读不阻塞写)
  • ROW SHARE :用于 SELECT ... FOR UPDATESELECT ... FOR SHARE 操作。
  • ROW EXCLUSIVE :用于 INSERTUPDATEDELETECREATE INDEX CONCURRENTLY 操作。
  • SHARE UPDATE EXCLUSIVE :用于 VACUUMANALYZECREATE INDEX 操作。
  • SHARE :用于 CREATE TRIGGER 操作。
  • SHARE ROW EXCLUSIVE :用于 CREATE INDEX 操作。
  • EXCLUSIVE :用于 REFRESH MATERIALIZED VIEW 操作。
  • ACCESS EXCLUSIVE :用于 ALTER TABLEDROP TABLE 等操作。

ACCESS SHARE锁是一种轻量级的锁,主要用于读取操作。它允许高并发读取,并且在读取期间防止表结构被修改。通过这种锁机制,PostgreSQL能够在保证数据一致性的同时提供良好的并发性能

复制代码
手动枷锁测试:

LOCK [TABLE] table_name IN ACCESS SHARE MODE;

ACCESS SHARE锁与其他类型的锁具有以下兼容性关系:

  • ACCESS SHARE锁兼容 :可以有多个事务同时持有ACCESS SHARE锁。
  • ROW SHARE锁兼容 :可以有多个事务同时持有ACCESS SHARE锁和ROW SHARE锁。
  • ROW EXCLUSIVE 锁与 ACCESS SHARE 锁是兼容的(MVCC)
相关推荐
Flying pigs~~16 小时前
RAG智慧问答项目
数据库·人工智能·缓存·微调·知识库·rag
misL NITL16 小时前
mysql之如何获知版本
数据库·mysql
许彰午17 小时前
CacheSQL(二):主从复制——OpLog 环形缓冲区与故障自动恢复
java·数据库·缓存
2401_8323655217 小时前
JavaScript中rest参数(...args)取代arguments的优势
jvm·数据库·python
2301_7796224118 小时前
Go语言怎么用信号量控制并发_Go语言semaphore信号量教程【入门】
jvm·数据库·python
2301_7662834418 小时前
c++如何将控制台输出保存到文件_cout重定向到txt【详解】
jvm·数据库·python
北极的冰箱18 小时前
MySQL Ver 8.0.41 for macos14.7密码遗忘
数据库·mysql
XDH_CS19 小时前
MySQL 8.0 安装与 MySQL Workbench 使用全流程(超详细教程)
开发语言·数据库·mysql
treacle田19 小时前
达梦数据库-统计信息收集-记录
数据库·达梦数据库统计信息收集
审判长烧鸡20 小时前
PostgreSQL之索引/函数/触发器
数据库·postgresql·触发器·函数·索引