【PGCCC】Postgresql 动态哈希表实现
结构图hash 表包含了多个 segment 切片,每个 segment 包含了相同数量的 bucket。里面的 bucket 使用链表存储着 hash 值相同的元素。当查找指定的 key 时,首先计算出它的哈希值,然后根据后面的几位数,计算出对应的 bucket 位置。之后遍历 bucket 的元素链表,查看是否有 key 元素。当增加元素时,同样先找到对应 bucket 位置,然后查看是否存在
【PGCCC】Postgresql Checkpoint 原理
前言postgresql 的 checkpoint 是数据库中非常重要的部分,它涉及到数据库的缓存,持久化与数据恢复各个方面。它在执行时会涉及到大量磁盘 IO,所以对于它的优化和监控是不可缺少的。此篇文章讲述了 checkpoint 的原理及其监控,这对调优会有很大的帮助。Checkpoint 简介postgresql 会将数据持久化到磁盘里,不过因为磁盘的读写性能比较差,所以又添加了一层缓存。这
【PGCCC】Postgresql BgWriter 原理
前言postgresql 有一个后台进程 bgwriter,它会定时刷新缓存到文件系统中。这种机制提高了缓存的替换速度,因为在寻找空闲缓存时,有时需要将脏页刷新到文件中,而刷新操作是比较耗时的。同样它也提高了执行 checkpoint 的完成速度,因为 checkpoint 需要刷新所有的脏页。监控BgWriter 的监控只能从 **pg_stat_bgwriter**视图查看,它只是记录了统计数
PostgreSQL中触发器递归的处理 |
许多初学者在某个时候都会陷入触发器递归的陷阱。通常,解决方案是完全避免递归。但对于某些用例,您可能必须处理触发器递归。本文将告诉您有关该主题需要了解的内容。如果您曾经被错误消息“超出堆栈深度限制”所困扰,那么这里就是解决方案。01 初学者的错误导致触发递归触发器是自动更改数据的唯一好方法。约束是确保规则不被违反的“警察”,而触发器是让数据保持一致的工人。理解这一点的初学者可能(非常正确)希望使用触
【PGCCC】在 Postgres 上构建图像搜索引擎
我最近看到的最有趣的电子商务功能之一是能够搜索与我手机上的图片相似的产品。例如,我可以拍一双鞋或其他产品的照片,然后搜索产品目录以查找类似商品。使用这样的功能可以是一个相当简单的项目,只要有合适的工具。如果我们可以将问题定义为向量搜索问题,那么我们就可以使用 Postgres 来解决它!在这篇博文中,我们将使用Postgres构建一个基本的图像搜索引擎。我们将使用预先训练的模型为图像和文本生成嵌入
【PGCCC】深入解析 pg_send_execute:异步执行让你“快到飞起”
在使用PostgreSQL时,我们经常需要提高查询效率,减少延迟。这时候,异步操作就显得至关重要。而在异步操作中,pg_send_execute无疑是一项你不得不了解的黑科技。它是如何让你在预处理语句上“快到飞起”的?让我们从异步执行的角度,一起深度探索这个特性。什么是 pg_send_execute?在PostgreSQL中,pg_send_execute 是用于异步执行已经准备好的SQL预处理
【PGCCC】从 PostgreSQL 表恢复已删除的数据
PostgreSQL 非常擅长保护您的数据安全,因此它不会自行消失。不幸的是,反之亦然——如果数据已被删除,它将无法恢复。在本文中,我们将探讨从 PostgreSQL 表中恢复已删除数据的选项。01 谨慎的人使用事务如果在处理数据时从不犯错误,就不会需要紧急程序。但由于我们都是人,像这样的事情偶尔会发生:-- remove an entry from&nbs
【PGCCC】PostgreSQL 17 发布!
PostgreSQL全球开发小组 9.26日发布PostgreSQL 17,这是世界上先进的开源数据库的最新版本。PostgreSQL 17 以数十年的开源开发为基础,在适应新兴数据访问和存储模式的同时,提高了性能和可扩展性。PostgreSQL 的此版本显著提高了整体性能,包括彻底改进的真空内存管理实现、存储访问优化和高并发工作负载改进、批量加载和导出加速以及索引查询执行改进。PostgreSQ
【PGCCC】PostgreSQL中的超级监控助手:pg_stat_monitor,您数据库的最佳搭档!
在数据库管理的浩瀚海洋中,如何有效监控和优化性能始终是每位DBA心中挥之不去的难题。今天,我们要深入探讨一个在PostgreSQL社区中炙手可热的工具——pg_stat_monitor。它不仅能够帮助我们实时监控数据库性能,还能为我们的优化决策提供强有力的数据支持。接下来,我们将揭示这个工具的概念、特征,并通过实际案例演示它的强大功能,让你对它有更深入的了解。pg_stat_monitor工具概念
【PGCCC】PostgreSQL 删除的数据真的消失了吗?教你如何找回“丢失的宝藏”!
你有没有遇到过这样的情形:一不小心删除了PostgreSQL中的重要数据,然后陷入了“我是不是再也找不回来了”的恐慌中?别急,PostgreSQL 虽然不像一些数据库一样直接提供“后悔药”,但通过一些巧妙的操作,我们依然可以恢复已删除的数据!今天,我们就来聊聊如何在 PostgreSQL 中恢复误删的数据,还会给你展示一个实际案例,帮你理解这个“救命神器”是如何在生产环境中大显神威的!恢复已删除数
【PGCCC】磁盘上的秘密:PostgreSQL 数据存储方式大揭秘!
在数据库的浩瀚宇宙中,数据的存储方式如同宇宙中的星辰,璀璨而又复杂。尤其是在PostgreSQL中,如何有效地将数据存储到磁盘上,是每位数据库管理员和开发者必须掌握的基本功。今天,我们将深入探讨这一主题,让你在PostgreSQL的世界里畅游自如!PostgreSQL的数据存储概念PostgreSQL是一种关系型数据库管理系统(RDBMS),它使用表格(tables)来组织数据,每个表都由行(ro
【PGCCC】 复合索引和部分索引,竟然能让查询速度提升 275 倍!
索引对于加速数据库查询和提高 PostgreSQL 应用程序的性能至关重要。但是,并非所有索引都以相同的方式发挥作用。复合索引和部分索引是两种常见类型,每种类型都有不同的用途和对性能的影响。本文我们将深入探讨复合索引和部分索引是什么、它们如何运作以及何时使用它们来为数据库实现最佳结果。复合索引复合索引是在多个列上创建的,使 PostgreSQL 能够高效处理搜索条件中包含多个列的查询。当查询频繁使
【PGCCC】PostgreSQL 向量化引擎算子:数据库性能的加速神器?
在PostgreSQL的世界里,性能优化永远是一个绕不开的话题。而当你听到“向量化引擎算子”时,是不是有点一头雾水?它到底是干啥的?有什么特别之处?今天我们就来深度剖析一下这个概念,并通过实际案例展示它如何在真实环境中提升查询效率。什么是向量化引擎算子?向量化引擎算子本质上是数据库引擎中一种处理数据的方式。与传统的“元组化(tuple-based)”处理方式不同,向量化处理将数据批量化,将一组数据
【PGCCC】10本你值得收藏的 PostgreSQL 学习书籍推荐
PostgreSQL 是一种特性非常齐全、功能十分强大、源代码开放的自由软件的对象-关系型数据库管理系统。而且它的性能十分优秀,且支持多种例如 json 、 Hive 的复杂类型。今天就推荐10本PostgreSQL的学习书籍。1.《PostgreSQL实战》内容简介 :本书基于PostgreSQL 10编写,重点介绍PostgreSQL的丰富特性以及生产实践运维技巧。全书共18章,分为基础篇、核
【PGCCC】PostgreSQL重做日志内幕!如何掌握事务日志记录的“黑魔法”
嘿!大家好,今天我们要揭开一个隐藏在PostgreSQL世界中的神秘机制——重做日志(WAL,Write-Ahead Logging)。如果你是刚接触数据库或想进一步深入了解PostgreSQL事务处理的“魔法”,那么你一定不能错过今天的分享。我们将从事务日志的本质入手,深入挖掘重做日志的关键类、数据结构,以及不同的日志类型,并为你提供一个实际案例,来帮助你理解这个至关重要的数据库功能。相信我,这
【PGCCC】秒懂PostgreSQL的多线程管理!一看就会的实战技巧!
你有没有在使用PostgreSQL时好奇过,数据库到底是如何在背后管理这些复杂的查询任务?尤其是当数据库面对庞大的数据量时,PostgreSQL是怎么利用多线程来加速这些操作的?今天,我们就来聊一聊PostgreSQL中的多线程管理机制,用几个案例让你彻底搞懂它是怎么工作的。别担心,读完本文,你就能自信地对着同事说:“多线程?小意思!”。PostgreSQL的多进程 vs 多线程首先,我们要明确一
【PGCCC】Postgres 17 中的 3 大特性
一年又一年,Postgres 已成为世界上最受喜爱和最受信任的数据库 — Postgres 17将变得更好。即将发布的版本在开发人员体验和性能方面都有所改进。Postgres 17 中的 3 大特性#01具有 RETURNING 支持的 MERGE 命令它可以帮助需要处理条件数据修改而无需处理多个查询的应用程序开发人员。Postgres 17在 Postgres 15 中引入的MERGE命令的基础
【PGCCC】监控不到位?你可能已经让PostgreSQL埋下了隐患!
在PostgreSQL的运维和管理过程中,数据库的监控是一个至关重要的环节。通过监控,我们可以及时发现系统的瓶颈和潜在问题,保证数据库的高效、稳定运行。但传统的单维监控往往无法充分揭示系统的复杂性,这时候,多维监控应运而生。多维监控,不仅能捕捉数据库的各个角度,如性能、连接、事务、锁、磁盘IO等,更能够对问题进行深度剖析,从而大大提高故障诊断和优化的效率。本文将深入探讨在PostgreSQL中如何
【PGCCC】探秘PostgreSQL执行算子:幕后英雄的全景解析
在数据库的世界中,执行算子是支撑SQL查询的幕后英雄。它们负责将复杂的查询语句转换为数据库可以理解并执行的操作序列。尽管这些算子在查询过程中悄无声息地工作,但它们的效率和性能直接影响着查询的执行时间。本文将带领大家深入了解PostgreSQL中执行算子的类别及其特性,并通过实际案例展示它们的原理和实现方式。执行算子的类别与特性在PostgreSQL中,执行算子通常分为以下几类:顺序扫描(Seque
【PGCCC】揭秘PostgreSQL中行存储索引的奥秘:从原理到实战案例
PostgreSQL作为一个强大而灵活的开源关系型数据库管理系统,凭借其丰富的功能和高效的性能,深受开发者和DBA们的青睐。在日常使用中,索引是提高查询效率的关键工具之一,而索引的存储机制则直接影响着数据库的性能。今天,我们将深入探讨PostgreSQL中行存储索引机制的原理及其实现,并通过实际案例为你揭示其中的奥秘。行存储索引的原理在数据库中,索引就像一本书的目录,帮助我们快速定位所需的数据。P