BC省时区变更与Postgres时间戳陷阱:为何你的预约时间可能错了一小时?
文章以不列颠哥伦比亚省永久实行夏令时为例,深入分析了PostgreSQL中timestamptz字段在tzdata更新后导致的时间偏移问题。作者指出,由于timestamptz存储的是UTC时间,时区规则变更会导致历史存入的未来本地时间查询结果出错。文中提供了检测tzdata版本的方法,并推荐了存储本地时间与时区的双列模式(Dual Column Patt…
Crunchy Data,领先的企业级 PostgreSQL 解决方案提供商,提供可在任意基础设施上部署的可信、安全、商业支持的 PostgreSQL 服务。
文章以不列颠哥伦比亚省永久实行夏令时为例,深入分析了PostgreSQL中timestamptz字段在tzdata更新后导致的时间偏移问题。作者指出,由于timestamptz存储的是UTC时间,时区规则变更会导致历史存入的未来本地时间查询结果出错。文中提供了检测tzdata版本的方法,并推荐了存储本地时间与时区的双列模式(Dual Column Patt…
详解PostgreSQL EXPLAIN计划中的各类扫描类型,包括顺序扫描、索引扫描、位图索引扫描、并行扫描及索引-only扫描的原理、适用场景与性能差异,附带具体SQL示例和计划输出分析。
针对PostgreSQL中整数主键序列耗尽问题,提供了检测序列使用率的SQL查询,并对比了切换为负数序列(短期方案)和迁移至bigint(长期方案)的具体操作步骤、优缺点及注意事项。
文章指出Postgres中传统的SERIAL(INT)存在溢出风险,建议改用BIGINT。作者通过详细分析证明在64位系统上INT和BIGINT存储成本几乎相同。重点提供了将生产环境数据从INT迁移到BIGINT的完整技术方案,包括异步回填、批量清理、并发建索引以及最终的原子交换步骤,确保业务低停机。
Postgres 18 将数据校验和设为默认开启,以防御静默数据损坏。文章解释了校验和工作原理,并重点指出这可能导致使用 pg_upgrade 进行大版本升级时因新旧集群设置不一致而失败,提供了临时绕过方案及长期迁移建议。
文章介绍了PostgreSQL内部目录表(Catalog)和视图(Views)的用途,列举了psql常用命令以及pg_stat_activity、pg_locks等关键视图和底层表的查询方法,旨在帮助开发者更好地监控和调试数据库。
文章通过回顾2008年处理数据库查询时的痛点,对比了传统嵌套子查询、PostgreSQL特有的DISTINCT ON语法以及现代CTE与窗口函数的解决方案。重点讨论了在处理“获取最新关联记录”这一常见场景时,如何避免重复数据Bug及ORM导致的N+1查询性能问题,提供了具体的SQL代码示例和最佳实践。
文章探讨了如何判断PostgreSQL数据库是读密集还是写密集型,提供了基于内部统计信息的SQL查询方法来估算读写比例,并分别针对高写入和高读取负载给出了具体的性能调优建议,如使用NVMe SSD、调整WAL、利用只读副本等。
介绍 PostgreSQL 18 的新特性,允许在 INSERT、UPDATE、DELETE 和 MERGE 命令的 RETURNING 子句中直接访问 OLD 和 NEW 行数据。文章对比了此前依赖 xmax 实现细节的晦涩写法,展示了新版本中通过检查 OLD 是否为空来优雅区分 Upsert 中新插入和已更新行的方法,具有明确的工程实用价值。
文章回顾1986年Postgres原始论文中的六大设计目标,并逐一对照现代Postgres特性(如JSONB、PostGIS、pgvector、WAL、并行查询等)进行解析,展示其前瞻性与生态扩展能力。
CrunchyData详解PostgreSQL 18即将发布的重大特性,包括异步I/O提升性能、UUID v7优化索引局部性、B-tree跳过扫描、虚拟生成列以及原生OAuth 2.0支持。文章提供了技术原理、代码示例及性能影响分析,对数据库开发者和运维人员具有高参考价值。
本文详细介绍了PostgreSQL中JSONB数据的索引策略。重点讲解了GIN索引适用于包含查询和键存在性检查,但也指出了其在路径导航和比较查询中的局限性及维护开销。此外,还介绍了表达式索引用于优化特定字段的范围扫描,并给出了结合使用GIN与B-Tree的最佳实践建议。