PostgreSQL
PostgreSQL是一款开源的对象关系型数据库管理系统,以高度符合SQL标准、支持ACID事务和数据完整性著称。它具备丰富的数据类型支持、强大的扩展机制(如自定义函数、插件体系),并提供高并发处理能力,广泛应用于企业级应用、数据分析及Web服务等场景。
核心事实
时间轴 (近 90 天)
TablePro 支持多达 35 种数据库,包括 MySQL、PostgreSQL、MongoDB、Redis 和 DuckDB
Vaultisse 后端使用 Express + TypeScript + PostgreSQL
将复杂业务逻辑拆分为多个短事务,或采用应用层补偿机制替代数据库层部分回滚,能带来更好的可扩展性
应对子事务性能陷阱的策略包括审慎使用 SAVEPOINT、检查 ORM 框架嵌套事务配置、监控子事务溢出以及缩短长事务生命周期
基准测试表明当系统存在持有超过 64 个子事务的长事务时,其他并发查询性能会出现断崖式下跌,且衰减非线性,越过临界点后突然爆发
当子事务数量超过 64 后发生 subxid overflow,其他事务在进行 MVCC 可见性检查时必须频繁访问 pg_subtrans 这个 SLRU 缓存,导致锁竞争加剧、磁盘 I/O 增加和吞吐量下降
SLRU(Simple Least Recently Used)是 PostgreSQL 内部用于管理共享状态的轻量级缓存框架,pg_subtrans、pg_clog 等子系统均基于它构建,以固定大小页面(通常8KB)为单位组织数据
64 是每个后端进程在 PGPROC 结构中缓存子事务 ID 的上限阈值,超过该数量的子事务会溢出到共享槽位机制
PostgreSQL 为每个子事务分配独立的事务 ID(XID),并通过 SLRU 缓存子系统跟踪子事务与其父事务的映射关系,该映射存储在 pg_subtrans 目录中
PostgreSQL 子事务通常通过 SAVEPOINT 命令显式创建,也可能由 PL/pgSQL 中的 BEGIN...EXCEPTION...END 异常处理块隐式触发
还有 40 条时间轴事件
全部知识事实 (20)
Supabase是Firebase的开源替代品,基于PostgreSQL提供数据库、身份认证、实时订阅等后端即服务能力
80%已验证Dify的核心架构采用微服务设计,通过Docker Compose将API服务、Worker、Web前端、PostgreSQL、Redis和向量数据库等组件解耦部署
80%已验证RLS(Row Level Security,行级安全策略)是PostgreSQL原生特性,允许在数据库层面定义精细的访问控制规则
70%已验证PostgreSQL 每个后端进程约有 5-10MB 基础内存开销
65%已验证Dify使用PostgreSQL作为关系型数据库,存储用户数据、应用配置和对话历史
65%待验证PostgreSQL 15引入了security_invoker属性
90%待验证传统方式部署Dify需要配置PostgreSQL、Redis、向量数据库等多个组件
90%待验证Neon是新一代Serverless PostgreSQL服务,其核心创新在于存储与计算分离的架构,支持在无请求时将计算层缩容至零(scale-to-zero)
90%待验证LangGraph 通过检查点机制将每个节点执行后的完整状态序列化并持久化到外部存储(如 PostgreSQL 或 Redis),可在中断点精确恢复执行
60%待验证关系型数据库(如MySQL、PostgreSQL)以表格形式存储数据,非关系型数据库(如MongoDB)以文档形式存储
60%待验证在PostgreSQL中,如果在启用了RLS的表上创建视图但没有设置security_invoker = true,该视图会绕过RLS策略导致数据泄露
60%待验证TablePro 支持多达 35 种数据库,包括 MySQL、PostgreSQL、MongoDB、Redis 和 DuckDB
50%待验证Vaultisse 后端使用 Express + TypeScript + PostgreSQL
50%待验证基准测试表明当系统存在持有超过 64 个子事务的长事务时,其他并发查询性能会出现断崖式下跌,且衰减非线性,越过临界点后突然爆发
50%待验证应对子事务性能陷阱的策略包括审慎使用 SAVEPOINT、检查 ORM 框架嵌套事务配置、监控子事务溢出以及缩短长事务生命周期
50%待验证SLRU(Simple Least Recently Used)是 PostgreSQL 内部用于管理共享状态的轻量级缓存框架,pg_subtrans、pg_clog 等子系统均基于它构建,以固定大小页面(通常8KB)为单位组织数据
50%待验证PostgreSQL 子事务通常通过 SAVEPOINT 命令显式创建,也可能由 PL/pgSQL 中的 BEGIN...EXCEPTION...END 异常处理块隐式触发
50%待验证PostgreSQL 为每个子事务分配独立的事务 ID(XID),并通过 SLRU 缓存子系统跟踪子事务与其父事务的映射关系,该映射存储在 pg_subtrans 目录中
50%待验证64 是每个后端进程在 PGPROC 结构中缓存子事务 ID 的上限阈值,超过该数量的子事务会溢出到共享槽位机制
50%待验证当子事务数量超过 64 后发生 subxid overflow,其他事务在进行 MVCC 可见性检查时必须频繁访问 pg_subtrans 这个 SLRU 缓存,导致锁竞争加剧、磁盘 I/O 增加和吞吐量下降
50%