PostgreSQL Certified Master 专访 | 第三期 李洋
请简单介绍一下自己,您的爱好、您的事业。大家好,我是李洋,我的家乡是美丽的天津,它是一座融合历史与现代,兼具经济活力和文化底蕴的城市。我的爱好十分广泛,其中我最喜欢的是阅读和运动。阅读对我来说是一种享受,它能让我开阔视野、增长知识、丰富内心世界。运动也是我生活中不可或缺的一部分,我热衷于跑步和篮球。运动时,我可以尽情享受汗水挥洒的感觉,释放生活和工作中的压力,同时它也锻炼了我的意志力和耐力,让我拥
【PGCCC】在 Postgres 中构建复制安全的 LSM 树
在原生 Postgres 实现中,全文搜索由B 树或GIN(广义倒排索引)结构支持。这些索引针对相对快速的查找进行了优化,但受限于 B 树的写入吞吐量。当我们构建pg_searchPostgres 搜索和分析扩展时,我们的优先级有所不同。为了成为 Elasticsearch 的有效替代方案,我们需要支持高效的实时扫描。我们选择了一种更适合密集发布列表位图和高数据采集工作负载的数据结构:日志结构化合
【PGCCC】PostgreSQL 18 Beta 1发布,有哪些亮点?
PostgreSQL 全球开发组于 2025 年 5 月 8 日发布了第一个 PostgreSQL 18 Beta 版本,现已开放下载。虽然细节可能会有所改变,但是该版本包含了 PostgreSQL 18 最终正式版中所有新功能的预览。以下是 PostgreSQL 18 引入的部分关键功能亮点。性能优化异步 I/O(AIO),通过全新的异步 I/O 子系统提升 I/O 吞吐量并隐藏延迟。Linux
【PGCCC】Redash:一个开源的数据查询与可视化工具
Redash 是一款免费开源的数据可视化与协作工具,可以帮助用户快速连接数据源、编写查询、生成图表并构建交互式仪表盘。它简化了数据探索和共享的过程,尤其适合需要团队协作的数据分析场景。数据源Redash 支持各种 SQL、NoSQL、大数据和 API 数据源,包括 Amazon Athena、Amazon CloudWatch、Amazon DynamoDB、Amazon Redshift、Ara
【PGCCC】PostgreSQL Certified Master 个人专访 | 第一期 王丁丁
由PGCCC发起的“PostgreSQL Certified Master 个人专访”栏目,旨在挖掘PCM们对数据库行业的深度洞察,分享他们对行业发展的思考和个人感悟,对广大PGer们具有实际借鉴意义1.请简单介绍一下自己,您的爱好、您的事业。大家好,我是王丁丁,服务于工业互联网,Oracle、PostgreSQL ACECSDN博客专家及B站知名UP主,全网粉丝10万+,15年DBA运维经验维保
【PGCCC】PostgreSQL 的弊端(第一部分):临时表
PostgreSQL 是世界上最强大的数据库系统之一。我一直对它的强大功能充满热情,尤其是它的现代 SQL 语言功能。然而,这并不意味着一切都很好。有些地方还是很麻烦。新手用户如果不知道这个问题,可能会遇到麻烦,而且我发现这种情况经常发生。这是给那些使用临时表围绕 PostgreSQL 设计解决方案的人的提示。问题一:目录臃肿,性能不佳PostgreSQL 用户经常联系我们,抱怨数据库服务器响应速
【PGCCC】pg_squeeze 1.8:自动表膨胀清理的扩展
PostgreSQL 扩展可从表中删除未使用的空间,并可选择根据特定索引对元组进行排序(就像CLUSTER命令与常规读取/写入同时执行一样)。事实上,我们尝试替换 pg_repack扩展。虽然提供了非常相似的功能,但pg_squeeze采用了不同的方法:纯粹在服务器端实现功能。利用 PostgreSQL 数据库服务器的最新改进。虽然 (1) 使配置和使用都更简单(与使用服务器和客户端代码的pg_r
【PGCCC】commit_delay 对性能的提升:PostgreSQL 基准测试
通过禁用参数可以来调整事务工作负载synchronous_commit。该措施有惊人效果。但在操作系统崩溃期间丢失已提交事务的可能性使其成为许多应用程序无法启动的因素。因此我决定写下来。WAL 刷新是事务数据库工作负载的瓶颈为了确保已提交的事务不会丢失,PostgreSQL 必须确保事务的WAL已刷新到磁盘,然后才能向客户端报告成功。如果数据库工作负载主要由小数据修改组成,则这些事务产生的IOPS
【PGCCC】在 PostgreSQL 上使用 pg_hint_plan替换 Oracle Hints 的最佳实践
如果您要从 Oracle 数据库迁移到 PostgreSQL,您可能习惯于使用提示来优化查询。在 Oracle 中,这些是嵌入在 SQL 中的特殊指令(如/*+ INDEX(...) */),用于指导优化器的执行计划。它们可能非常有用,但随着时间的推移也会引入复杂性和“提示债务”。PostgreSQL 采用了一种截然不同的查询优化方法。Postgres 社区历来强调依靠基于成本的规划器来根据统计数
【PGCCC】表级锁剖析:减少锁定影响
我之前撰写有关PostgreSQL 中表级锁的剖析的博客。在这篇博客中,我们讨论了数据库系统使用锁定机制的原因以及 Postgres 如何利用 MVCC 来避免大多数并发问题,从而减少锁定的必要性。然后我们讨论了 DDL 锁,并解释了 Postgres 锁队列的工作原理。在这篇后续文章中,我们将讨论锁争用,以探索减少生产系统中锁定影响的方法,以减少与 DDL 更改相关的潜在停机风险。锁争用当多个事
【PGCCC】用于全文搜索的全新 Postgres 块存储布局
我们最近完成了迄今为止最大的工程项目之一:将pg_searchPostgres 的全文搜索和分析扩展 迁移到 Postgres 的块存储系统。这pg_search是有史以来第一个将外部文件格式移植到 Postgres 块存储的扩展。就上下文而言 - 块存储是 Postgres 的存储 API,它支持 Postgres 的所有表和内置索引类型。在迁移之前,pg_search块存储是在块存储之外运行的
【PGCCC】PostgreSQL 中表级锁的剖析
本博客解释了 PostgreSQL 中的锁定机制,重点关注数据定义语言 (DDL) 操作所需的表级锁定。锁定还是解锁的艺术?人们通常将数据库锁与物理锁进行比较,这甚至可能导致您订购有关锁的历史、波斯锁和撬锁技术的书籍。我们大多数人可能都是通过深入研究“锁定”一词来理解 PostgreSQL 中与物理锁没有太大关系的概念,物理锁主要与安全性有关。然而,Postgres 锁完全是关于并发性的,以及控制
【PGCCC】空闲事务导致表膨胀?等等,什么?
是的,你没看错。空闲事务可能导致大量表膨胀,而清理过程可能无法解决这一问题。膨胀会导致性能下降,并可能通过死元组不断侵占磁盘空间。本博客深入探讨了空闲事务如何导致表膨胀、为什么这会带来问题以及避免这种情况的实用策略。什么是表膨胀?当未使用或过时的数据(称为死元组)在表和索引中累积时,PostgreSQL 中的表就会膨胀。PostgreSQL 使用多版本并发控制 (MVCC)机制来维护数据一致性。每
【PGCCC】PostgreSQL 事务及其使用方法
在本文中,我们将回答所有这些问题以及更多问题,以帮助您开始使用 PostgreSQL 事务和实施。什么是交易?简单来说,事务就是对数据库中任何更改的传播。假设您向数据库添加了一个新元素 — 这是事务的一个例子。事务不一定只是单一更改,而是可以包含一个或多个操作。在实际应用中,事务通常是各种数据库操作的组合。关于 PostgreSQL 事务,需要注意的重要一点是它们符合ACID标准。这意味着它们是一
【PGCCC】PostgreSQL 临时文件的使用
临时文件某些查询操作(例如sort或hash表)需要一些内存功能。此内存由运行时配置提供work_mem。来自官方文档work_memwork_mem (整数)设置在写入临时磁盘文件之前查询操作(例如排序或哈希表)使用的基本最大内存量。请注意,对于复杂查询,可能会并行运行多个排序或哈希操作;在开始将数据写入临时文件之前,通常允许每个操作使用此值指定的内存量。 排序操作用于ORDER BY、DIST
【PGCCC】PostgreSQL 的一些你可能不知道但应该尝试的功能
PostgreSQL包含许多重要的功能。他们中的许多人都非常知名。其他人可以是非常有用的,但没有广泛赞赏。以下是我们首选的PostgreSQL功能,您可能没有仔细看过,但实际上应该这样做,因为它们可以帮助您更快地将代码投入生产,使操作更轻松,并且通常可以使用更少的代码和劳动来完成任务。发布/订阅通知PostgreSQL带有一个简单的非持久基于主题的发布 - 订阅通知系统。它不是Kafka,但功能确
【PGCCC】如何加快 SQL 查询速度的同时保持SQL的简洁?
在本文中,我们将讨论如何提高SQL查询速度的同时,还能保持SQL语句的简洁。在进入主题之前,我们先了解一下查询的实际处理过程:1、查询处理过程查询处理过程被定义为通过一系列从数据库中提取数据的过程。这涉及将SQL语句的转换为数据库可以理解的形式,并查询出最终的结果。查询处理涉及三个主要步骤:解析和翻译:查询处理从SQL的解析和翻译开始。与编译器中的解析器类似,解析器检查查询语法以查看提到的内容是否
【PGCCC】在 PostgreSQL 中,如何优化对于日期范围的查询?
在 P在 PostgreSQL 中,处理日期范围的查询是常见的操作。然而,如果不进行适当的优化,这些查询可能会导致性能问题,特别是在处理大型数据集时。本文章将详细讨论如何优化在 PostgreSQL 中对于日期范围的查询,并提供解决方案和具体的示例代码来演示优化的效果。建立合适的索引为了提高日期范围查询的性能,首先需要考虑为包含日期的列建立合适的索引。在 PostgreSQL 中,常见的索引类型包
【PGCCC】PostgreSQL 作为向量数据库:入门和扩展
这篇文章介绍了如何使用 PostgreSQL 作为向量数据库构建生成式 AI 应用程序。从使用 pgvector 扩展启动 PostgreSQL,加载 Airbnb 数据集,到查找相关房源,还提到了扩展性能和可扩展性的方法,如使用专用索引和分布式版本如 YugabyteDB。PostgreSQL 拥有丰富的扩展和解决方案生态系统,使我们能够将该数据库用于通用人工智能应用程序。本指南将引导您完成使用
【PGCCC】解锁 7 大技巧,避免你的 Postgres 挂掉
1.永远不要添加带默认值的列从 PostgreSQL 11 开始,添加带默认值的列不再重写表。本博文中的其他提示仍然有效!PostgreSQL 的黄金法则是:在生产中向表添加列时,千万不要指定默认值。添加列会对表加上锁,从而阻塞读写。如果添加的列有默认值,PostgreSQL 会重写整个表,为每一行填写默认值,这对大型表来说可能需要数小时。在此期间,所有查询都会阻塞,数据库将不可用。不要这样做:-