PG/mysql/oracle--- 长事务对后续事务影响分析

PG长事务分析

示例

假设在时间点A有一个长事务正在运行,并且在时间点A+1执行了VACUUM FULL操作。以下是可能发生的情况:

  1. 时间点A :长事务开始并持有ACCESS SHARE锁。
  2. 时间点A+1 :尝试执行VACUUM FULL操作。
    • VACUUM FULL需要ACCESS EXCLUSIVE锁,但长事务持有的ACCESS SHARE锁阻止了VACUUM FULL获取锁。
    • VACUUM FULL进入等待状态,直到长事务结束并释放其锁。
  3. 时间点A+1以后
    • 读操作 :后续的SELECT操作可以继续执行,因为它们只需要ACCESS SHARE锁。
    • 写操作 :后续的INSERTUPDATEDELETE操作会被阻塞,因为它们需要ROW EXCLUSIVE锁或更高级别的锁,而这些锁与VACUUM FULL所需的ACCESS EXCLUSIVE锁不兼容。
    • 其他高优先级操作 :后续的ALTER TABLEDROP TABLE等操作也会被阻塞。

总结

  • 在时间点A+1以后的事务是否会受到阻塞取决于它们需要获取的锁类型。
  • 读操作通常不会被阻塞,因为它们只需要较低级别的锁。
  • 写操作和其他需要较高级别锁的操作会被阻塞,直到VACUUM FULL能够获取到ACCESS EXCLUSIVE锁并完成其操作。

Mysql长事务-+后面mysql导致系统崩溃

在MySQL中,FLUSH TABLES ... WITH READ LOCK 命令会锁定所有表,并阻止其他事务对这些表进行写操作。这意味着在执行 FLUSH TABLES ... WITH READ LOCK 之后的所有写操作都会被阻塞,直到锁被释放。

具体来说:

  1. A时间点执行长事务select语句:假设在时间点A开始了一个长时间运行的SELECT查询,这个查询会持有读锁(取决于隔离级别和查询类型)。

  2. A+1时间点执行flush table for lock :在时间点A+1,执行了 FLUSH TABLES ... WITH READ LOCK 命令。这个命令会获取全局读锁,阻止所有其他写操作和某些读操作。

在这种情况下,以下几点需要注意:

  • 所有写操作会被阻塞 :从时间点A+1开始,所有试图对表进行写操作的事务都会被阻塞,直到 FLUSH TABLES ... WITH READ LOCK 命令完成并且锁被释放。
  • 某些读操作也会被阻塞 :如果在执行 FLUSH TABLES ... WITH READ LOCK 时,有新的读操作尝试访问被锁定的表,这些读操作也会被阻塞,直到锁被释放。
  • 已存在的读操作不受影响:已经存在的读操作(例如时间点A开始的长事务SELECT查询)不会被阻塞,但新的读操作会被阻塞。

总结来说,从时间点A+1开始,所有新的写操作和某些新的读操作都会被阻塞,直到 FLUSH TABLES ... WITH READ LOCK 命令完成并且锁被释放。已存在的读操作则不会受到影响。

相关推荐
SelectDB技术团队20 分钟前
Agent 场景动态 JSON 性能拆解:Apache Doris 比 ClickHouse 快 7 倍、比 Elasticsearch 快 2 倍
数据库·clickhouse·elasticsearch·json·apache·日志分析·apache doris
greasyfork27 分钟前
多种数据库管理混乱?Navicat Premium 17 for Mac 统一解决
数据库·mysql·macos·mac
Dream_fly_iboy1 小时前
系统架构设计师之数据库
数据库
风和先行1 小时前
Android 数据库相关学习总结
android·数据库·学习
宠友信息1 小时前
Spring Boot与异步审核构建仿小红书源码内容发布全流程
java·数据库·spring boot·redis·mysql·oracle·uni-app
2401_873479402 小时前
如何识别代理IP和伪装流量?用IP情报工具三步穿透住宅代理伪装
网络·数据库·网络协议·tcp/ip·ip
诚信定制8392 小时前
如何启动 Redis 服务:详细步骤指南
数据库·redis·缓存
AllData公司负责人2 小时前
数据同步平台|AIIData数据中台实现MySQL、Hive、Kafka 一键接入Doris
大数据·数据库·hive·mysql·kafka·实时同步
数据库小学妹2 小时前
MySQL安全加固全流程:网络隔离、TDE加密、数据脱敏、等保合规7步实战
mysql·安全·数据脱敏·审计日志·安全加固·等保合规
Edward111111112 小时前
一AI名词
java·开发语言·数据库·学习