- 博客(213)
- 收藏
- 关注
翻译 PostgreSQL pgvector:入门与扩展
本文介绍了如何在 PostgreSQL 中使用 pgvector 扩展来存储、索引和查询用于生成式 AI 应用的向量嵌入(embedding)。内容涵盖 pgvector 入门、存储文本嵌入、使用距离函数查询、数据预过滤、向量索引对比(HNSW 和 IVFFlat),以及使用 YugabyteDB 通过分布式 SQL 进行扩展。
2026-05-10 22:32:30
78
翻译 我的端口开放了吗?
本文提供了一个简单的单行命令,用于检查 Linux 系统上特定端口是否开放,避免了使用 `nmap` 或 `netcat` 等传统工具的复杂性。
2026-05-09 11:59:52
35
翻译 fsync 问题与 PostgreSQL
本文解释了影响 PostgreSQL 数据持久性的内核级 `fsync` 问题,操作系统如何处理缓存刷新失败,以及为什么使用配合 Linux 内核 4.13+ 的最新 PostgreSQL 版本可以通过 PANIC 恢复机制防止数据损坏。
2026-05-09 11:56:54
44
翻译 无法连接到 PostgreSQL
本文提供了一份在 Linux 上检查 PostgreSQL 是否运行的故障排除指南,包括如何识别正确的实例和端口,以及在基于 Debian 和使用 Systemd 的发行版上启动 Postgres 的方法。
2026-05-07 23:53:21
42
翻译 海量写入的恶性循环
本文探讨了 PostgreSQL 中的海量写入操作如何通过 WAL(预写式日志)生成、检查点、全页写入和自动清理(autovacuum)过程,形成自我强化的性能下降恶性循环。
2026-05-07 23:50:36
25
翻译 PostgreSQL 是在运行吗?
本文提供了一份在 Linux 上检查 PostgreSQL 是否运行的故障排除指南,包括如何识别正确的实例和端口,以及在基于 Debian 和使用 Systemd 的发行版上启动 Postgres 的方法。
2026-05-06 14:57:06
30
翻译 我的PostgreSQL配置参数来自哪里?
本文解释了PostgreSQL配置参数的层级顺序,展示了不同配置级别如何相互覆盖,以及如何使用pg_settings视图识别当前生效的配置参数。
2026-05-06 14:53:05
21
翻译 pgBackRest 已死。接下来怎么办?
本文宣布了 pgBackRest 的终止运营。pgBackRest 是顶级的 PostgreSQL 备份工具,在经过十三年的开发后,由唯一的维护者 David Steele 宣布停止维护。本文探讨了该项目终止的原因,包括缺乏商业赞助以及 IT 行业向 AI 优先级倾斜而非数据完整性基础设施的转变,同时为需要迁移的用户提供了 Barman 等替代方案
2026-05-03 23:24:24
52
翻译 PAX:存储引擎反击
本文探讨了在 PostgreSQL 中集成 PAX(Partition Attributes Across,一种缓存友好的存储格式)的实现挑战。详细介绍了定长属性和变长属性的 minipage 模式设计,分析了与 PostgreSQL MVCC 模型的基本不兼容性,并提出了元数据 minipage 解决方案以及使用 fillfactor 和 TOAST 的实际缓解措施。
2026-05-03 23:22:09
33
翻译 使用 YugabyteDB 自动分片实现高级 PostgreSQL 日期分区
本文探讨了使用 YugabyteDB 自动分片功能实现高级 PostgreSQL 日期分区策略。作者解释了如何在日期列上进行范围分片,同时保持高效的插入和查询性能,并展示了纯自动分片与结合 PostgreSQL 声明式分区进行生命周期管理的区别。
2026-05-02 23:32:39
35
翻译 MCD:将“我们需要一个数据库“转化为实际需求的罗塞塔石碑
本文解释了 MERISE 方法论中的概念数据模型(Conceptual Data Model,MCD)如何作为对话框架,通过在编写任何 SQL 代码之前系统地定义实体、关系和基数,将"我们需要一个数据库"这类模糊请求转化为具体需求。
2026-05-01 08:27:32
50
翻译 云迁移失败的10个原因及提高成功率的关键策略
云迁移失败率令人担忧,原因是领导者低估了数据库层的复杂性,并依赖过时的架构。本文探讨了迁移失败的十个主要原因,并提供了提高成功率的关键策略,强调了在迁移到云之前实现数据库架构现代化的重要性
2026-05-01 08:24:51
50
翻译 如何在 YSQL 中对时态连接使用并行索引扫描
本文探讨了 YSQL 现在如何为时态连接(temporal join)模式提供原生 PostgreSQL 并行查询(Parallel Query,PQ)支持,从而无需再使用分桶索引和查询变通方案。通过对时态表使用并行索引扫描(Parallel Index Scan)和 YB 批量嵌套循环连接(YB Batched Nested Loop Join),查询可以实现 50-55% 的延迟改善,同时保持原始 schema 和 SQL 不变。
2026-05-01 08:21:43
29
翻译 Postgres 实现自增的三种方式
本文介绍了在 PostgreSQL 中创建自增列的三种方法:直接使用序列(sequence)、使用 serial 数据类型,以及使用 identity column 语法。文章通过实际示例详细讲解了每种方法的语法、行为和使用场景。
2026-04-27 23:42:52
79
翻译 分片 vs 分布式:弹性与高可用性背后的数学原理
概率论(Probability theory)是数学中研究不确定性的分支。它帮助我们理解不同结果发生的可能性。在本文中,我们将考虑两种水平扩展数据库的替代架构方案,并运用概率论来评估每种架构对潜在故障的弹性(resilience)。
2026-04-27 21:58:33
32
翻译 什么是排序规则,为什么我的数据损坏了?
本文探讨了 GNU C 库(glibc)2.28 版本在 2018 年升级时如何通过更改排序规则导致全球 PostgreSQL 数据库静默损坏,并解释了 PostgreSQL 社区为防止此类事件再次发生而开发的解决方案。
2026-04-26 08:46:54
48
翻译 通过时间线变更恢复
本文演示了在 PostgreSQL 中可以通过时间线变更(timeline change)执行时间点恢复(Point-In-Time Recovery,PITR),这与常见假设相反。作者通过一个实际示例展示了如何备份 PostgreSQL 集群、提升副本,以及成功恢复包括提升后发生的事务在内的数据。
2026-04-26 08:34:08
35
翻译 轻松审计数据库变更
本文介绍了如何利用 PostgreSQL 原生的日志功能来跟踪和审计数据库变更,包括 DDL 和 DML 操作,无需复杂的触发器或外部扩展。作者展示了如何配置 PostgreSQL 日志、使用外部数据包装器(FDW)读取日志文件,以及创建视图将 DDL 和 DML 变更作为普通表数据进行查询。
2026-04-25 22:03:59
32
翻译 PGSQL Phriday #010:日志分析
本文讨论了 PostgreSQL 日志分析方法,重点介绍了作者使用 SQL 和外部数据包装器(FDW)而非 pgBadger 的方法。虽然认可 pgBadger 是生产环境监控的有用工具,但作者解释了为什么在排查特定数据库问题时更倾向于使用基于 SQL 的灵活方法进行深入分析。
2026-04-25 21:56:17
27
翻译 不要创建无用的索引
本文讨论了创建过多数据库索引这一常见的性能陷阱,解释为何过多的索引会损害写入性能,并提供了实用的脚本来识别和删除 PostgreSQL 中未使用或重复的索引。
2026-04-22 22:10:05
22
翻译 pg_background v1.9:一种更简洁、更实用的后台运行SQL的方法
pg_background 允许 PostgreSQL 在后台 worker 进程中异步执行 SQL,使调用会话不会被阻塞。它支持通过共享内存队列获取结果、独立于调用方提交的自定义事务、显式的生命周期控制(如 launch、wait、cancel、detach 和 list 操作),以及强化了安全模型(NOLOGIN 角色、特权辅助函数、无 PUBLIC 权限)
2026-04-21 22:51:01
55
翻译 Postgres 性能三角
本文通过三个相互关联的参数——内存分配、磁盘 I/O 和并发——探讨 Postgres 性能调优,类似于摄影中的曝光三角。光圈、快门速度和 ISO 一样,每个参数都涉及数据库管理员需要在维持系统吞吐量和稳定性之间进行的权衡。
2026-04-21 22:42:24
27
翻译 Postgres 性能回退:我们到了吗?
本文探讨了在 Linux 7.0 上报告的 PostgreSQL 性能回退问题,分析了根本原因(自旋锁竞争期间的 TLB 未命中和页错误,而非抢占模式本身),解释了为什么大页(Huge Pages)和透明大页(Transparent Huge Pages)能缓解此问题,并强调了在容器化环境中启用大页的更大挑战。
2026-04-19 10:41:33
81
翻译 PostgreSQL MVCC 深度解析
本文通过每条元组头部的 t_xmin 和 t_xmax 字段,解释 PostgreSQL 的多版本并发控制(Multi-Version Concurrency Control)在存储层的工作原理。展示了快照如何在并发会话之间确定可见性,为什么 READ COMMITTED 和 REPEATABLE READ 隔离级别表现不同,以及非阻塞读取与磁盘空间使用之间的权衡。
2026-04-19 10:35:09
51
翻译 基于 PostgreSQL pgvector 的多模态搜索
本文演示如何使用 PostgreSQL 和 pgvector 构建多模态搜索应用,允许用户使用图片或文本输入搜索印度食谱数据库。该应用利用多模态大语言模型从视觉和文本数据生成嵌入向量,实现通过存储在 PostgreSQL 中的向量嵌入进行相似性搜索。
2026-04-17 09:57:31
50
翻译 PAX:你一直在寻找的缓存性能
PAX(分区属性扩展)是一种存储布局,将数据库页面内的数据组织成面向列的迷你页,将典型 NSM(n 元存储模型)中 94% 的缓存污染降至几乎可忽略的水平。通过在每个 8KB 页面内将列值分组存放,同时保持同一页面上的所有列以便于元组重建,PAX 实现了纯列式存储 80% 的优势,仅需 5% 的实现复杂度,非常适合宽表的混合 OLTP/OLAP 工作负载和选择性查询。
2026-04-17 09:26:02
49
翻译 PGSQL Phriday #015:主键:UUID、CUID 还是 TSID?
本文探讨了将 UUID、CUID 和 TSID 作为 PostgreSQL 数据库主键策略的争论。在审视了各种方案的特点后,作者的结论是:以上方案都不推荐——PostgreSQL 原生的 identity 列(identity column)配合适当的数据建模能提供最佳的性能和可靠性。
2026-04-16 22:58:01
31
翻译 INSERT 0 1 到底告诉你什么?
本文解释了 PostgreSQL 中神秘的 "INSERT 0 1" 命令标签的含义,这个标签会在执行 INSERT 语句后出现。本文将其格式分解为两个部分——OID 字段(历史上是对象标识符,现在为了向后兼容始终为 0)和行数——然后通过实际的 SQL 示例演示其工作原理。
2026-04-16 22:49:41
80
翻译 为什么你的高可用架构是个谎言(而且这没关系)
本文挑战了数据库系统中关于“五个九”可用性和“零数据丢失”的常见神话,认为高可用架构建立在一致性、可用性和分区容忍性之间不可避免的权衡之上。作者使用 CAP 和 PACELC 定理为实际架构决策提供实用框架
2026-04-14 22:46:31
23
翻译 大功率,高延迟:NUMA 调优的“蜘蛛感应“
本文探讨了现代"Titan 级"基础设施上的 NUMA(非统一内存访问)调优,这些基础设施配备了 AMD EPYC Venice 等高核心数 CPU。文章解释了本地内存访问与远程内存访问的关键性能影响,介绍了 PostgreSQL 18 新增的 `pg_shmem_allocations_numa` 视图用于调试 NUMA 不平衡,并提供了一套诊断 PostgreSQL 性能问题的系统化层级,在深入底层硬件调优之前先进行问题排查。
2026-04-14 22:40:45
28
翻译 终结僵尸会话
本文探讨了 PostgreSQL 中僵尸会话的问题,即那些在客户端断开后仍然保持活跃或处于事务空闲状态的连接,它们持有锁并阻止 vacuum 进行清理。本文解释了在操作系统层面结合 TCP keepalives 与 PostgreSQL 的 `client_connection_check_interval` 参数的两层解决方案,并为生产环境提供了专业的配置建议。
2026-04-13 21:32:22
31
翻译 work_mem: 这是一个陷阱!
本文探讨了一个 PostgreSQL 内存问题,尽管 `work_mem` 仅设置为 2 MB,但某个查询却消耗了 2 TB 的 RAM。根本原因在于 PostgreSQL 的内存上下文系统,该系统只在查询执行结束时释放内存,而不是在执行过程中释放,导致所有 `work_mem` 分配都在单个上下文内累积,直到执行完成。
2026-04-13 21:23:11
36
翻译 pg_service.conf:你团队遗忘的魔法
本文介绍 `pg_service.conf`,这是一个简单的 INI 格式配置文件,允许开发者为 PostgreSQL 定义命名的连接配置文件,无需记忆复杂的连接字符串,并通过配置文件中的统一服务别名实现无缝的环境切换。
2026-04-12 22:52:51
38
翻译 pg_column_size(): 眼见不一定为实
本文探讨了 PostgreSQL 的 `pg_column_size()` 函数,并揭示了一个令人惊讶的行为:对于以行外方式存储的 TOASTed 值,该函数仅返回 18 字节的指针大小,而非实际数据大小,这可能导致在估算表存储需求时出现重大误差。
2026-04-12 22:49:28
34
翻译 触发器,我们真的需要吗
作者是一位生产环境 DBA 和数据库顾问,他反对在 PostgreSQL 中使用触发器。虽然触发器有合理的内部用途,但当交给开发人员使用时往往会带来更多问题。触发器应该只由专家使用,即使如此,替代方案(如 CTE)通常更可取。
2026-04-12 22:43:14
39
翻译 YugabyteDB 加入 Google MCP Toolbox 助力 AI Agent 开发
YugabyteDB 现已成为 Google MCP Toolbox 官方支持的数据源,为 AI Agent 开发带来分布式 SQL 能力。
2026-04-10 10:49:20
43
翻译 如何为零代码构建 Agentic AI 的 RAG 工作流
摘要 本文介绍了如何利用YugabyteDB和n8n构建零代码的Agentic AI RAG工作流。YugabyteDB作为高性能向量数据库,支持语义搜索并满足数据主权要求。文章详细演示了使用n8n可视化工具创建数据摄入管道和聊天交互流程的场景,包括地理数据分区实现多区域部署。
2026-04-10 10:44:31
41
翻译 如何使用 Deno 和 YugabyteDB 现代化你的 JavaScript API
本文介绍了如何使用Deno 2.0和YugabyteDB构建现代化JavaScript API。Deno作为Node.js的改进版本,提供了TypeScript原生支持、内置工具链和更高性能。
2026-04-10 10:36:18
36
翻译 Agentic AI 运营效率:借助 YugabyteDB Performance Advisor 实现更智能的可观测性
YugabyteDB Aeon 最近推出了 Performance Advisor,这是一款强大的新工具,将智能可观测性直接集成到您兼容 PostgreSQL 的分布式数据库中。在本文中,我们将深入探讨 YugabyteDB Performance Advisor 的新功能
2026-04-10 10:22:26
40
翻译 使用 Agentic AI 实现 YugabyteDB 元数据的智能洞察
在这篇博客中,我们将讨论 YugabyteDB 元数据的 Agentic AI 如何通过自然语言查询提供智能、实时的洞察,从而改变组织与分布式 SQL 数据库的交互方式。
2026-04-10 10:17:21
40
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅