`
zeeeitch
  • 浏览: 85510 次
  • 性别: Icon_minigender_1
  • 来自: 九江
社区版块
存档分类
最新评论

postgres 锁表的模式

    博客分类:
  • c++
阅读更多
模式种类:  8种,汗


ACCESS SHARE MODE
ROW SHARE MODE
ROW EXCLUSIVE MODE
SHARE UPDATE EXCLUSIVE MODE
SHARE MODE
SHARE ROW EXCLUSIVE MODE
EXCLUSIVE MODE
ACCESS EXCLUSIVE MODE

可看一看 http://www.phpchina.com/manual/PostgreSQL/sql-lock.html
http://elicecn.byethost16.com/docs/postgresql-8.2.3-zh_CN/explicit-locking.html#LOCKING-TABLES
的说明。
太复杂了

简单的说一下
如果你什么都不写,只是lock table xxx;那么就是ACCESS EXCLUSIVE MODE,是最高级的锁,会和其他读冲突.在锁成功之前,其他事务的读操作都要结束才行。

一般都是用lock table xxx in EXCLUSIVE MODE,锁之前你读可以,锁之后你读可以,你写就不行。

   row exclusive mode经过实验,好像并没有锁住任何行,其他事务还是可以update delete insert,这个行为就和语义不一致了.
    是否这样理解?row打头的这些,只是在行锁发生时,对表做的一个标记?即一行发生锁,产生一行锁,也产生一“row exclusive”表锁。而单独执行 lock table in row exclusive mode只是产生“row exclusive”表锁,而实际上不存在一个真正意义的行锁
分享到:
评论

相关推荐

    postgres-playground:使用Postgres并发

    2. **锁定模式**:Postgres提供了多种锁定机制,包括共享锁(Shared Locks)和独占锁(Exclusive Locks)。共享锁允许多个事务同时读取同一资源,而独占锁则确保在锁定期间只有一个事务可以写入或修改资源。此外,...

    postgres数据库日志参数详解与应用技巧_常春.docx

    2. 记录数据库死锁发生时间和次数:数据库的锁通常可以在 pg_locks 这个系统表里找,但这只是当前的锁表/行信息,如果你想看一天内有多少个超过死锁时间的锁发生,可以在日志里设置并查看,log_lock_waits 默认是 ...

    xorm:用于Go的简单而强大的ORM,支持mysql,postgres,tidb,sqlite3,mssql,oracle,已移至https:gitea.comxormxorm

    Postgres模式支持 上下文缓存支持 驱动程序支持 当前支持数据库/ sql的Go sql软件包驱动程序包括: MySQL的: MyMysql的: Postgres: Tidb: SQLite: : Oracle: (实验) 安装 go get git

    PostgresSQL优化

    2. 创建复合索引:根据查询模式创建包含多个字段的索引,以提高查询效率。 3. 避免过多索引:过多的索引会占用额外的存储空间并影响插入和更新性能,所以要谨慎添加。 4. 定期分析索引使用:使用`pg_stat_user_...

    postgresql参数解析

    - `work_mem`:每个后台进程可用的内存,用于排序、哈希表等操作。 - `maintenance_work_mem`:用于数据库维护任务(如VACUUM)的最大内存。 - `max_connections`:允许的最大并发连接数。 4. **磁盘I/O参数** ...

    PostgreSQL帮助文档 html

    10. **并发控制**:学习PostgreSQL如何处理多用户并发访问,包括事务隔离级别和乐观锁、悲观锁策略。 11. **扩展性**:PostgreSQL允许开发和使用自定义的数据类型、函数、操作符和索引方法,这在帮助文档中也有详细...

    complete-microservices-env:这是一个使用Spring Cloud,Splunk,Zipkin,Grafana,Prometheus,具有复制策略的Postgres,Redis和RabbitMQ的微服务架构的整个环境。

    在这里,您可以找到许多“奇特”模式的实现,例如CQRS ,分布式锁,域事件等。 有界上下文 架构图 入门 开始 克隆存储库git clone git@github.com:juliofalbo/complete-microservices-env.git 建立服务 ./build.sh...

    postgresql第二课:体系结构和特色用法1

    4. **内存结构**:分为本地内存(客户端会话级别)和共享内存(如表缓冲、WAL日志缓存、锁信息和统计信息)。 5. **特色SQL**: - **WITH AS 语句**:提供子查询重用,提高复杂查询效率。 - **正则表达式处理**:...

    greenplum维护操作

    - **补充**: `VACUUM`有两种模式: - `ANALYZE`: 优化查询计划。 - 清理垃圾数据: Postgres中的删除操作实际上是添加标记,而非立即物理删除。执行`VACUUM`时才会彻底清除标记的数据。 - **重要性**: 对于频繁...

    Postgresql主从异步流复制方案的深入探究

    这些目录需要预先创建,并且给予适当的权限,通常使用非root用户(如`postgres`用户)进行数据库的管理和操作。 ### 安装与配置 1. **安装依赖**:确保服务器上安装了必要的依赖包,如`zlib`、`readline`等。 2. *...

    开源数据库 postgresql-8.1.3-1.rar

    1. **分区表**:8.1版引入了表分区,允许大表被逻辑划分为较小的部分,提高查询性能。 2. **改进的复制**:此版本增强了流式复制功能,为数据库的灾难恢复和负载均衡提供了基础。 3. **索引加速**:8.1版引入了...

    关于MySQL 和 PostgreSQL数据库在医疗领域中应用的比较.pdf

    此外,PostgreSQL提供了扩展名为postgres_fdw的外部数据封装器,它允许PostgreSQL连接到其他70种不同的数据源,包括MySQL、Oracle、CSV、Hadoop等,并将它们作为自己的表进行查询。这样的能力为医疗数据分析带来了极...

    关于Java框架Vert.x的几点思考.docx

    异步驱动已经支持了Postgres、MySQL、MongoDB、Redis等常见数据库,同时有多个成功案例证明了Vert.x在生产环境中的稳定性和效率。 6. **Java面试中的重要性** 在Java面试中,了解并掌握像Vert.x这样的现代框架是...

    PostgreSQL平台新特性介绍.pptx

    1. **REINDEX CONCURRENTLY**: 传统的REINDEX操作会锁定整个表,阻止其他会话的读写操作。现在,PostgreSQL引入了并发重索引功能,通过开启事务、新建临时索引和逐步替换原有索引的方式,使得重索引可以在不阻塞其他...

    greenplum日常维护手册

    - `-n`: 仅导出特定模式(schema)。 - **备份文件说明**: - `gp_catalog_1_<dbid>_<timestamp>`: 关于数据库系统配置的备份文件。 - `gp_cdatabase_1_<dbid>_<timestamp>`: 数据库创建语句的备份文件。 - `gp_...

    Linux环境数据库管理员指南

    8.6.10 无分布式锁管理程序 245 8.7 小结 249 8.8 常见问答 249 第9章 Linux上的Postgre SQL 252 9.1 引言 252 9.2 Internet 驱动Postgre SQL 252 9.3 获得Postgre SQL 253 9.4 PostgreSQL 快速安装说明 254 9.5 ...

Global site tag (gtag.js) - Google Analytics