程序员茄子
全部
编程
代码
资讯
案例
综合
联系我们
PostgreSQL 相关技术文章
php
mysql
shell
go
vue
css
api接口对接
支付接口对接
PostgreSQL 18 升级:VACUUM 开始管子表、pg_upgrade 卡在 checksum、AFTER 触发器换角色
编程
PostgreSQL 18 升级:VACUUM 开始管子表、pg_upgrade 卡在 checksum、AFTER 触发器换角色
2026-11-02 21:03:48
PostgreSQL 18 三处容易在维护窗口才暴露的行为变化:VACUUM/ANALYZE 默认递归处理继承子表需加 ONLY、initdb 默认开数据校验和导致 pg_upgrade 直接失败、AFTER 触发器改按事件入队时的角色执行。附 unlogged 分区表、COPY FROM 的 \\. 与时区缩写的兼容差异和检查命令。
PostgreSQL
数据库升级
运维
PostgreSQL 18.6 的 output_plugin_libraries 白名单:第三方逻辑解码插件被挡掉,pg_upgrade --check 会先失败
综合
PostgreSQL 18.6 的 output_plugin_libraries 白名单:第三方逻辑解码插件被挡掉,pg_upgrade --check 会先失败
2026-10-29 21:05:49
18.6 引入 output_plugin_libraries 白名单(CVE-2026-6471),默认只放行 pgoutput 与 test_decoding,wal2json、postgres-decoderbufs 等要显式加;pg_upgrade --check 在 17+ 迁移前会先失败。附查 slot 插件、ALTER SYSTEM 与 reload 的顺序。
PostgreSQL
数据库
运维
advisory lock 的两套键空间和 40P01:bigint 与 (int4,int4) 不互通,死锁要从 pg_locks 反查
编程
advisory lock 的两套键空间和 40P01:bigint 与 (int4,int4) 不互通,死锁要从 pg_locks 反查
2026-10-29 00:03:51
PostgreSQL 咨询锁的 bigint 与 (int4,int4) 两套键空间并不互通,混用等于两把锁;给出 pg_locks 里 classid/objid 按无符号反解 key 的写法、40P01 死锁的复现与定位查询,并对照 MySQL GET_LOCK 只有会话级、死锁错误不回滚事务的差异。
advisorylock
advisory-lock
PostgreSQL
MySQL
咨询锁
pg_locks
用 tbls 把数据库文档纳入 CI:diff、lint 与覆盖率的实际用法
编程
用 tbls 把数据库文档纳入 CI:diff、lint 与覆盖率的实际用法
2026-10-28 21:31:29
tbls 是 Go 写的单二进制工具,从 MySQL/PG 的活库生成 Markdown schema 文档。本文给最小 .tbls.yml、tbls diff 只比 Markdown 的坑(列顺序、--force 不删旧表文件)、lint 规则与 coverage 的真实适用边界,以及在 CI 里当 schema 漂移守门员的接法。
tbls
数据库文档
CI
schema
MySQL
PostgreSQL
Go
PgBouncer 1.26.1:知道一个 SCRAM 用户密码就能登成超级用户,1.26.0 还静默改了 search_path 的默认跟踪
资讯
PgBouncer 1.26.1:知道一个 SCRAM 用户密码就能登成超级用户,1.26.0 还静默改了 search_path 的默认跟踪
2026-10-28 20:02:50
PgBouncer 1.26.1 修了三个 CVE:1.17.0–1.26.0 的 SCRAM 认证绕过(知道一个用户密码即可登成任意 SCRAM 用户含超管)、两处未认证可触发的死循环 DoS;同时修了 1.26.0 引入的 search_path 跟踪导致 ignore_startup_parameters 静默失效。附版本、配置项与升级前脚本的检查步骤。
PgBouncer
PostgreSQL
安全修复
运维
PostgreSQL 19 RC1 升级前要测的事——REPACK 的锁、plan advice 的边界、默认值变化
编程
PostgreSQL 19 RC1 升级前要测的事——REPACK 的锁、plan advice 的边界、默认值变化
2026-10-28 20:01:49
PostgreSQL 19 RC1 已出,GA 计划 11 月 19 日。这篇按升级实际会遇到的问题整理:REPACK CONCURRENTLY 结尾仍要 ACCESS EXCLUSIVE 锁、pg_plan_advice 只是约束不是提速、autovacuum 并行与 pg_stat_autovacuum_scores 打分、序列同步要求 publisher 也是 19,以及 JIT 默认关闭、btree_gist inet/cidr 索引会被 pg_upgrade 拒绝等默认值变化。
PostgreSQL
数据库升级
运维
复制
幂等键有保质期:Idempotency-Key 过期后,同一个键的重试就是一次新请求
编程
幂等键有保质期:Idempotency-Key 过期后,同一个键的重试就是一次新请求
2026-10-25 00:04:12
重复扣款的根因常常不是中间件写错,而是没人定义过幂等键能活多久。这篇按 IETF draft-ietf-httpapi-idempotency-key-header-08 讲清 400/409/422 的分工、Structured Field 值的引号坑、保留期与客户端重试窗口/对账窗口怎么嵌套,给出 PostgreSQL 表与 Go 抢占-比对指纹-回放响应的实现,并把 Stripe API v1 的 24 小时与 v2 的 30 天差异对上。
幂等键
Idempotency-Key
幂等防重
重放窗口
接口设计
Go
PostgreSQL
停写没停干净就切库:MySQL/PG 割接窗口的位点判定、追平阈值与回滚预算
编程
停写没停干净就切库:MySQL/PG 割接窗口的位点判定、追平阈值与回滚预算
2026-10-24 00:04:16
割接窗口里真正决定成败的是四件事:源端停写是否彻底、增量链路是否追到最后一个事务、反向链路何时启动、回滚还有多少时间。按华为云 DRS、腾讯云 DTS 与 AWS 割接口径整理可执行命令:read_only 与 super_read_only 的差别、show master status 与 binlog events 抽查、processlist 里 Sleep 连接不算写入、长事务导致假追平、GTID 子集与 pt-heartbeat 判据,另附按分钟计的操作清单。
数据库割接
MySQL
PostgreSQL
数据库迁移
割接窗口
binlog
回滚
运维
PostgreSQL 19 异步 I/O 调优:删掉手工 io_workers,让 worker 池自己伸缩
编程
PostgreSQL 19 异步 I/O 调优:删掉手工 io_workers,让 worker 池自己伸缩
2026-10-23 21:03:32
PG 19 让 io_method=worker 的 worker 池自伸缩,新增四个 GUC,并用 EXPLAIN (ANALYZE, IO) 把每节点异步 I/O 计数放进执行计划。本文给出从 18 迁移时该删哪些参数、上下限怎么设、以及验证代价。
PostgreSQL
数据库
性能调优
DISCARD 不是万能重置:PostgreSQL、Redis、MySQL 清理会话状态的边界与代价
编程
DISCARD 不是万能重置:PostgreSQL、Redis、MySQL 清理会话状态的边界与代价
2026-10-23 00:03:47
连接池归还连接时该跑哪条重置命令?拆开 PostgreSQL DISCARD ALL 的等价语句,指出 RESET ALL 回到会话启动值、不能在事务块内(25001)、DISCARD SEQUENCES 造成序列空洞、DISCARD PLANS 清空计划缓存的代价;对比 Redis 的 DISCARD 与 6.2 的 RESET、MySQL 的 COM_RESET_CONNECTION,并给 PgBouncer 池化模式下的取舍与上线检查清单。
DISCARD
PostgreSQL
Redis
MySQL
连接池
会话状态
队列
PgBouncer 事务池下的 prepared statement:42P05、26000、08P01 与 1.21–1.24 的版本分界
编程
PgBouncer 事务池下的 prepared statement:42P05、26000、08P01 与 1.21–1.24 的版本分界
2026-10-22 00:05:01
事务池模式下 prepared statement 为什么会在三条 backend 之间串味:42P05 名字撞车、26000 语句不在这个后端、08P01 参数个数对不上,三种报错根因不同。补 PgBouncer 1.21/1.22/1.24 的版本分界、max_prepared_statements 默认 200 的 LRU 与内存代价、DEALLOCATE ALL 在 1.21 上的历史坑,以及 pgx、asyncpg、pgJDBC、postgres.js 各自关掉命名的方法。
事务池
PgBouncer
prepared-statement
PostgreSQL
连接池
max_prepared_statements
Postgres 连接风暴:97 个可用槽位、三条 FATAL 与四个默认为 0 的超时
编程
Postgres 连接风暴:97 个可用槽位、三条 FATAL 与四个默认为 0 的超时
2026-10-21 21:31:38
Postgres 连接耗尽多数不是单点 bug,而是池大小算术、重启惊群和重试放大叠出来的。这篇把 97 个可用槽位、三条 FATAL 原文、四个默认为 0 的超时和 full jitter 重试串成一条可落地的排查与整改路径。
PostgreSQL
连接池
运维
PgBouncer
SQLAlchemy
pg_advisory_lock 的两个悬挂事故:PgBouncer 事务池里的孤儿锁,和 25P02 之后再也解不开的迁移锁
编程
pg_advisory_lock 的两个悬挂事故:PgBouncer 事务池里的孤儿锁,和 25P02 之后再也解不开的迁移锁
2026-10-21 00:04:15
session 级 pg_advisory_lock 保护迁移时会挂在哪:PgBouncer transaction 模式下锁随连接归还池子、unlock 落到另一条后端返回 false 被静默丢弃,以及事务失败后 25P02 让 unlock 不可达、ROLLBACK 又不释放 session 锁。附 pg_locks 定位 SQL、pg_terminate_backend 清场、xact 锁改造与租约表取舍。
advisory
PostgreSQL
advisorylock
PgBouncer
数据库锁
连接池
迁移
运维
lock
事务池
PgDog v0.1.62:事务池复用连接时,SET/RESET 与 advisory lock 的会话状态怎么串味
编程
PgDog v0.1.62:事务池复用连接时,SET/RESET 与 advisory lock 的会话状态怎么串味
2026-10-19 00:03:42
PgDog v0.1.62 集中修了事务池下的会话状态泄漏:SET LOCAL ... TO DEFAULT 被当成会话级 SET、RESET 不恢复启动参数、ROLLBACK 撤销上一事务的 RESET、DISCARD ALL 命令标签错误打断 JDBC prepared statement、pg_try_advisory_lock 没拿到锁也 pin 连接。附最小复现 SQL、pgdog.toml 关键默认值与升级验证步骤。
PgDog
PostgreSQL
连接池
事务池
SET
advisory
lock
DISCARD
数据库代理
PostgreSQL 19 RC1 升级笔记:REPACK 取代 VACUUM FULL/CLUSTER,JIT 默认关闭,max_locks_per_transaction 64→128
资讯
PostgreSQL 19 RC1 升级笔记:REPACK 取代 VACUUM FULL/CLUSTER,JIT 默认关闭,max_locks_per_transaction 64→128
2026-10-18 21:04:03
PostgreSQL 19 RC1 升级清单:REPACK 取代 VACUUM FULL/CLUSTER 并支持 CONCURRENTLY,JIT 默认关闭,max_locks_per_transaction 从 64 变 128 且锁槽口径变化,inet/cidr 索引要重建为 GiST,另附 Beta 4 撤回的功能与命令片段。
PostgreSQL
数据库升级
运维
PostgreSQL 18 vs 17.9:2000 万行实测,大聚合慢 1.6 倍,skip scan 是唯一稳赢项
编程
PostgreSQL 18 vs 17.9:2000 万行实测,大聚合慢 1.6 倍,skip scan 是唯一稳赢项
2026-10-18 20:01:53
同样 2000 万行灌进 PostgreSQL 17.9 和 18,五类查询跑完发现:大聚合慢 1.6 倍,深 join 默认也慢,只有 skip scan 明确变快。附 io_method 三档对比、pg_upgrade 统计信息搬运与 checksum 默认开启带来的升级前置条件。
PostgreSQL
数据库升级
pg_upgrade
skip
scan
io_method
一次切干净还是渐进式:数据库割接的阶段、回滚,与 PgDog 的 CUTOVER 机制
编程
一次切干净还是渐进式:数据库割接的阶段、回滚,与 PgDog 的 CUTOVER 机制
2026-10-17 00:04:02
讲清 cut-over(数据库割接)到底切的是哪个动作:摄取冻结、最终同步、路由切换与回滚路径,all-at-once 与渐进式的选型判据,再拆解 PgDog 的 CUTOVER 命令、阈值配置、逆向复制,以及反向复制不停导致 WAL 堆积的坑。
cut-over
数据库割接
数据库迁移
PgDog
PostgreSQL
回滚
运维
PG19 的 REPACK:把 VACUUM FULL 和 CLUSTER 合成一条命令,CONCURRENTLY 不阻塞读写
编程
PG19 的 REPACK:把 VACUUM FULL 和 CLUSTER 合成一条命令,CONCURRENTLY 不阻塞读写
2026-10-15 21:03:21
PostgreSQL 19 新增 REPACK,合并 VACUUM FULL 与 CLUSTER 的功能,REPACK ... CONCURRENTLY 可在不阻塞读写的情况下重建表。文中对比两者的锁与磁盘/时间取舍,并列出 Beta4 回退的特性(SQL/PGQ、在线开关 checksums 等),避免照 beta1 公告做规划。
PostgreSQL
数据库
运维
SQL
LibrePhotos 部署:unified 单容器与 compose 拆分的取舍,以及 PG18 卷路径、CSRF 两个坑
编程
LibrePhotos 部署:unified 单容器与 compose 拆分的取舍,以及 PG18 卷路径、CSRF 两个坑
2026-10-15 00:04:45
LibrePhotos 自托管部署选型笔记:unified 单容器(SQLite/外部 PG)与标准 docker compose 拆分的取舍,含 SERVE_FRONTEND、DB_BACKEND、DB_HOST 指向,以及两个高频坑——PostgreSQL 18 数据目录从 /var/lib/postgresql/data 改为 /var/lib/postgresql,反代后必须设 CSRF_TRUSTED_ORIGINS 与 NUM_PROXIES。
LibrePhotos
自托管
Docker
PostgreSQL
Django
反代
运维
initdb 初始化集群:排序规则与 trust 认证建完就改不动
编程
initdb 初始化集群:排序规则与 trust 认证建完就改不动
2026-10-14 23:42:30
initdb 创建 PostgreSQL 集群时,排序规则、locale provider、编码和 WAL 段大小在初始化时就定死,默认信任认证还允许任意本地用户成为超级用户。梳理目录权限 0700/0600、-A scram-sha-256/-W/--pwfile 的用法,以及换 locale 只能清空重建的原因。
initdb
PostgreSQL
数据库
locale
排序规则
认证
运维
Shell
pg_upgrade 升级 PostgreSQL 18 失败:initdb 默认开启的 page checksums 与旧集群不一致
编程
pg_upgrade 升级 PostgreSQL 18 失败:initdb 默认开启的 page checksums 与旧集群不一致
2026-10-14 21:02:01
PostgreSQL 18 的 initdb 默认开启 page checksums,旧集群没开会让 pg_upgrade 直接失败。梳理对齐校验和的两条路径、pg_upgrade 保留 planner 统计等新选项,以及 MD5 弃用、AFTER 触发器角色语义、全文检索索引重建等不兼容点。
PostgreSQL
pg_upgrade
数据库
升级
initdb
PostgreSQL 18 工程师笔记:AIO、skip scan 与升级要处理的索引重建
编程
PostgreSQL 18 工程师笔记:AIO、skip scan 与升级要处理的索引重建
2026-10-08 21:05:20
PostgreSQL 18 引入 AIO 异步 I/O 子系统(io_method、io_combine_limit、pg_aios),支持多列 B-tree skip scan、uuidv7()、虚拟生成列默认、RETURNING 的 OLD/NEW 与时间范围约束。本文给出版本要点与升级要处理的全文检索索引重建、md5 弃用等注意点。
PostgreSQL
数据库
AIO
升级
索引
KIP
工程
回归
pgbot + pgterm:只读角色读统计视图,把 Postgres 体检接进终端和 CI
编程
pgbot + pgterm:只读角色读统计视图,把 Postgres 体检接进终端和 CI
2026-10-07 21:31:57
pgbot 是 Go 写的单只读二进制,读 Postgres 统计视图输出以发现为主的健康报告并对比 baseline;pgterm 用 Rust 把它渲染成终端 TUI。含只读角色 SQL、CI 退出码契约、MCP、安装方式与限制。
PostgreSQL
pgbot
pgterm
运维
可观测性
MCP
可观测
Databasus:自托管 PostgreSQL 备份与 PITR,备份完还会真跑一次恢复
综合
Databasus:自托管 PostgreSQL 备份与 PITR,备份完还会真跑一次恢复
2026-10-07 21:31:57
Databasus 是 Apache-2.0 的自托管备份工具,用物理增量与 WAL 流做 PostgreSQL PITR,并定时把备份真的恢复进容器验证。含 Docker/Compose/Helm 部署、保留策略、加密与只读用户等要点。
PostgreSQL
备份
PITR
运维
自托管
Docker
压缩
免费
大家都在搜索什么?
devops
易支付
一个官网+多少钱
统一接受回调
统一回调
python
sub
node
宝塔日志
mysql
shell
ElasticSearch
css
vue
api接口对接
2025
支付接口对接
go
php
php回调
上一页
1
2
3
4
5
6
7
…
9
下一页
共 9 页
到第
页
确定