DataBase
文章平均质量分 85
Wang's Blog
Keep learning for the innovation era.
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
PostgreSQL笔记64:分区插件生态与扩展查询协议深度解析
本文全面梳理了 PostgreSQL 分区相关的第三方插件生态,明确了各插件的定位、适用版本及维护状态,并重点剖析了扩展查询协议的工作原理、计划缓存策略及常见问题。pg_rewrite利用逻辑复制实现在线非分区表迁移,适合升级场景。pg_partman已过时,12+ 建议转向原生分区。提供纯 SQL 运维自动化,适合轻量级管理。是时序场景的强力扩展,底层仍依赖分区。扩展查询协议可提升批量执行性能,但需警惕计划缓存导致的次优计划,可通过调控。原创 2026-08-24 20:15:00 · 492 阅读 · 0 评论 -
PostgreSQL笔记63:分区表最佳实践与避坑指南
技术点说明声明式分区使用定义分区表子分区创建使用分区裁剪验证通过观察是否只扫描目标分区元数据查询通过和查看分区结构技术点说明驱动选择使用pgx作为 PostgreSQL 驱动,支持上下文和原生类型声明式分区与 Node.js 示例相同的 DDL 语句执行计划通过验证分区裁剪元数据查询使用系统表获取分区结构技术点说明驱动选择使用psycopg2作为 PostgreSQL 驱动,成熟稳定事务控制通过简化 DDL 操作执行计划与 Node.js 示例相同的。原创 2026-08-23 21:30:00 · 108 阅读 · 0 评论 -
PostgreSQL笔记62: 分区表维护最佳实践——默认分区、锁策略与性能调优
PostgreSQL分区表维护实践指南 本文全面剖析PostgreSQL分区表的核心维护技术,重点关注默认分区风险与优化策略、分区操作锁机制演进及最佳实践。默认分区作为"数据垃圾桶"虽能捕获不匹配数据,但存在新增分区冲突检测和全表扫描性能隐患,建议采用定期巡检+数据迁移策略或触发器替代方案。分区操作锁机制方面,PostgreSQL 12+通过优化ATTACH PARTITION锁级别提升并发性,14版本引入DETACH PARTITION CONCURRENTLY支持在线卸载。文章还深入解析分区智能连接/聚原创 2026-08-23 19:30:00 · 64 阅读 · 0 评论 -
PostgreSQL笔记61:分区表核心概念、声明式分区与最佳实践
分区表是PostgreSQL中一类重要的数据库对象,它将一个逻辑表按既定规则拆分为多个物理子表,对上层业务保持透明。业务端仍操作父表,所有INSERTUPDATEDELETESELECT均自动路由至对应子表,无需修改应用代码。这一特性使得分区表在运维、性能优化和数据生命周期管理方面扮演关键角色。在PostgreSQL超大规模表的查询性能瓶颈数据清理(如按时间淘汰历史数据)效率低下VACUUM与ANALYZE因表体积过大而耗时过长需要按特定维度(时间、地区、类别)隔离数据使用pg。原创 2026-08-23 17:45:00 · 154 阅读 · 0 评论 -
PostgreSQL笔记60: 权限与角色管理——从层级体系到最佳实践
摘要 PostgreSQL采用精细的层级化权限管理体系,从实例连接、数据库、Schema到表/列/行实现多层访问控制。其核心特点包括: 权限层级:包含实例级连接、数据库CONNECT、Schema USAGE、表操作权限、列级权限和行级安全(RLS)策略 角色机制:Role与User本质相同,区别仅在于默认LOGIN属性。建议创建NOLOGIN角色作为权限模板,再授予具体用户 权限继承:支持角色间继承形成权限链,可通过NOINHERIT阻断继承 预定义角色:PostgreSQL 14+提供pg_read_a原创 2026-08-23 16:45:00 · 240 阅读 · 0 评论 -
PostgreSQL笔记59:行列级权限机制与数据脱敏实践
行级安全策略的启用与创建。多用户角色隔离查询。通过实现动态过滤。超级用户绕过策略的能力。PostgreSQL 提供了列级权限与行级安全两大精细控制机制,分别作用于字段和记录层面,为多租户应用、隐私合规场景提供了原生支持。列级权限通过GRANT指定列名实现,而行级安全则依赖策略表达式,并配合USINGWITH CHECK完成读写过滤。结合静态或动态脱敏工具,可构建完整的敏感数据保护体系。实际部署时需注意默认否定行为、策略组合规则以及超级用户的绕过权限,以确保业务平滑迁移。原创 2026-08-23 15:45:00 · 124 阅读 · 0 评论 -
PostgreSQL笔记58: 性能监控工具全景——从内核指标到操作系统诊断
PostgreSQL性能监控与诊断工具集 本文系统介绍了PostgreSQL性能监控的完整工具链,包括: 核心插件:重点讲解pg_stat_statements的配置使用,包括统计视图分析、关键指标计算和管理函数。 监控平台:介绍企业级工具pganalyze和基于日志分析的pgBadger。 命令行工具:推荐pgCenter、pgactivity等实时监控工具。 可视化分析:执行计划解析工具pev、dalibo和pgMustard。 自动调优:PGConfigurator和pgtune的参数优化工具。 扩展原创 2026-08-23 14:30:00 · 311 阅读 · 0 评论 -
PostgreSQL笔记57: 常规巡检方法与开源工具实践指南
本文总结了PostgreSQL数据库常规巡检的核心内容与工具。重点介绍了事务ID回卷与冻结机制、表膨胀与死元组处理、子事务代价、锁管理与死锁检测、WAL日志堆积等关键巡检项。推荐了PG Collector、pg_gather和Postgres Checkup三款开源巡检工具,分别对比了其功能特点和使用方法。这些巡检项和工具可帮助DBA及时发现潜在问题,保障PostgreSQL数据库的稳定运行。原创 2026-08-23 11:30:00 · 273 阅读 · 0 评论 -
PostgreSQL笔记56: 慢查询日志分析与诊断工具实践
日志配置:通过精准控制日志输出粒度,确保与pgBadger解析规则匹配。负载模拟:利用 Node.js 的pg驱动执行包含排序、更新和CHECKPOINT的混合负载,生成涵盖多种日志类型的素材。自动化分析:通过确保日志文件封存完整,最终由pgBadger生成一站式 HTML 诊断报表。驱动选型:使用纯 Go 实现的 PostgreSQL 驱动,支持标准接口。连接管理:通过sql.Open创建连接池,保证资源释放。错误处理:每个 SQL 操作均独立处理错误,保证负载持续运行,不影响后续迭代。原创 2026-08-23 10:30:00 · 582 阅读 · 0 评论 -
PostgreSQL笔记55:慢查询日志配置与日志管理完全指南
PostgreSQL日志系统配置指南 本文系统梳理了PostgreSQL的日志管理机制,重点介绍了关键配置参数及其应用场景: 基础配置:包括日志收集器、输出目标、目录设置及轮转策略 连接日志:记录客户端连接/断开事件 AutoVacuum与检查点日志:监控自动清理和检查点操作 锁等待与临时文件日志:诊断锁争用和内存溢出问题 慢查询日志:通过时间阈值和采样机制记录性能问题 语句类型日志:控制DDL/DML语句记录级别 格式定制:支持自定义日志格式和消息级别控制 高级功能:利用file_fdw模块实现SQL查询原创 2026-08-23 09:45:00 · 567 阅读 · 0 评论 -
PostgreSQL笔记54: 基于PGVector的语义检索与RAG智能问答系统构建
使用pgvector的VECTOR类型存储高维向量通过余弦距离操作符<=>计算语义相似度通过动态调整召回率使用LIMIT实现 Top-K 语义检索完整演示了从数据入库到查询的全流程使用lib/pq驱动连接 PostgreSQL,支持VECTOR类型参数传递通过$1::VECTOR显式类型转换传递向量参数动态设置会话级参数使用标准接口,便于迁移或测试psycopg2原生支持VECTOR类型传递,使用%s占位符显式类型转换%s::VECTOR确保参数类型正确通过。原创 2026-08-23 08:30:00 · 683 阅读 · 0 评论 -
PostgreSQL笔记53:向量索引创建与性能对比及常见陷阱解析
PostgreSQL的pgvector扩展支持向量相似性搜索,但需正确使用索引才能实现高效查询。文章介绍了pgvector的核心概念,包括向量数据类型和距离运算符,重点分析了ivfflat和hnsw两种向量索引的适用场景。通过实验演示,在5万条数据的知识库表中,无索引顺序扫描耗时300-400毫秒,而创建ivfflat索引后查询仅需0.7毫秒,性能提升400倍。同时指出了常见陷阱:当查询向量使用volatile函数(如random())生成时,优化器无法在计划阶段确定索引扫描范围,导致索引失效。解决方案是使原创 2026-08-23 07:30:00 · 670 阅读 · 0 评论 -
PostgreSQL笔记52: 智能问答系统核心表结构设计与向量检索实践
智能问答系统数据模型设计 本文提出了一种基于PostgreSQL的智能问答系统(RAG)数据模型设计方案。系统核心由三张表构成: 知识库表(knowledge_base):存储知识片段及其768维向量表示,支持IVFFlat或HNSW索引加速检索 用户问题表(qa_questions):记录用户提问原文及其向量化表示 问答历史表(qa_answers):保存系统生成的回答、引用的知识片段及用户反馈评分 设计方案充分利用PostgreSQL的pgvector扩展实现向量相似度检索,配合JSONB类型存储灵活元原创 2026-08-23 00:45:00 · 636 阅读 · 0 评论 -
PostgreSQL笔记51: 基于 pgvector 构建企业级智能问答系统
摘要 本文介绍了基于PostgreSQL和pgvector构建RAG(检索增强生成)系统的技术方案。RAG系统通过将用户查询向量化,检索语义相关的知识片段,再结合大语言模型生成精准答案。PostgreSQL凭借pgvector扩展实现向量存储与检索,同时支持结构化数据管理,形成统一的知识库底座。文章详细阐述了系统架构、技术选型优势、数据库设计(包括表结构、向量索引选择与创建)以及系统集成方法。该方案通过PostgreSQL的事务一致性、权限控制等企业级特性,结合向量检索能力,为企业知识管理提供高效解决方案。原创 2026-08-22 23:30:00 · 285 阅读 · 0 评论 -
PostgreSQL笔记50: 基于PGVECTOR的实时推荐与搜索系统构建
本文介绍了基于PostgreSQL和pgvector扩展构建实时推荐与搜索系统的技术方案。系统通过整合全文检索、向量语义检索和业务过滤能力,简化了传统复杂技术栈。文章详细阐述了核心概念、系统架构流程,重点展示了电商场景下的数据模型设计(商品表、用户画像表、用户行为表)和四种典型查询场景的实现,包括业务过滤+向量Top-K检索、全文+语义混合检索、复合排序以及个性化推荐。方案利用PostgreSQL的GIN索引(全文检索)和HNSW/IVFFlat索引(向量检索)实现高效查询,显著降低了系统复杂度和运维成本。原创 2026-08-22 22:30:00 · 216 阅读 · 0 评论 -
PostgreSQL笔记49:向量检索核心算法、索引调优与过滤策略深度解析
本文介绍了 PostgreSQL 中 pgvector 扩展的向量检索技术,包括核心算法(暴力检索和近似最近邻)、过滤策略(预过滤、后过滤和迭代扫描),以及 HNSW 和 IVFFlat 两种索引类型的实现与优化。文章详细讲解了关键参数配置、性能优化手段(如降维、量化、部分索引等),并对比了不同方法的适用场景,为高效实现向量相似度搜索提供了实用指南。原创 2026-08-22 21:45:00 · 281 阅读 · 0 评论 -
PostgreSQL笔记48: 全文检索与向量检索的对比与混合检索实践
本文介绍了信息检索技术的演进历程,从关键词匹配、全文检索到语义检索(向量检索),重点分析了PostgreSQL中全文检索和向量检索的实现机制。全文检索通过tsvector/tsquery数据类型、GIN索引和ts_rank函数实现高效检索;向量检索则借助pgvector扩展,使用Embedding模型和相似度计算进行语义搜索。文章对比了两种技术的优缺点,并提出了混合检索策略,结合全文检索的精确性和向量检索的语义理解能力。最后提供了完整的SQL示例,展示了如何在PostgreSQL中实现高效、精准、智能的搜索原创 2026-08-22 20:45:00 · 740 阅读 · 0 评论 -
PostgreSQL笔记47: pgvector向量索引原理与选型指南
本文介绍了pgvector中的两种近似最近邻(ANN)搜索索引IVFFlat和HNSW。IVFFlat基于K-Means聚类原理,通过lists和probes参数控制搜索范围,适合高写入频率场景但需定期重建;HNSW采用分层图结构,支持动态插入且召回率更高,但内存占用较大。文章对比了两者的性能特点、适用场景及关键参数配置,并概述了距离度量方式、版本演进和核心API。pgvector通过这两种索引在保持PostgreSQL兼容性的同时,实现了高效的向量相似性搜索能力。原创 2026-08-22 16:33:42 · 316 阅读 · 0 评论 -
PostgreSQL笔记46:向量相似性搜索的概念、度量与索引机制
本文介绍了PostgreSQL的pgvector扩展及其在向量相似性搜索中的应用。主要内容包括: KNN精确最近邻搜索的局限性(计算复杂度高)与ANN近似最近邻搜索的优势(通过牺牲少量精度换取性能提升) 三种核心距离度量方法: 欧几里得距离(L2)适用图像/地理场景 余弦距离适合文本语义搜索 内积用于推荐系统 两种索引实现: IVFFlat基于聚类,适合超大规模数据 HNSW基于多层图结构,查询更快但内存占用较高 关键参数调优: IVFFlat的lists和probes HNSW的ef_search 召回率原创 2026-08-22 11:58:43 · 361 阅读 · 0 评论 -
PostgreSQL笔记45: 向量化核心概念、Embedding模型与相似检索应用
使用在 Node 中本地运行嵌入模型,无需外部 API。pgvector的vector类型接收数组字符串,排序使用余弦距离操作符<=>。HNSW 索引显著加速 KNN 查询,适合百万级以下数据集。完整演示了从Embedding生成、存储到相似检索的全链路。本文从向量化的核心动机出发,对比了传统数据库与向量检索的区别,系统介绍了Embedding嵌入技术、主流模型及其适用场景。重点展示了PostgreSQL通过pgvector。原创 2026-08-22 07:30:00 · 383 阅读 · 0 评论 -
PostgreSQL笔记44:pgvector向量操作与查询实践
PostgreSQL原生支持array和cube类型存储向量,但存在不支持距离函数、无专用索引等局限。pgvector扩展专为AI向量设计,提供vector数据类型、多种距离度量(L2、余弦等)和高效索引(IVFFlat、HNSW)。0.8.0版本引入的迭代索引扫描解决了Pre-filter和Post-filter的取舍问题,通过分批检索确保结果质量。该扩展支持配置扫描模式(strict_order/relaxed_order)和扫描参数,平衡精度与性能,为大规模向量检索提供了完整解决方案。原创 2026-08-22 01:45:00 · 423 阅读 · 0 评论 -
PostgreSQL笔记43:pgvector向量数据存储机制与索引限制深度解析
PostgreSQL pgvector 扩展存储机制与优化 核心特性 pgvector 为 PostgreSQL 提供向量存储与相似性搜索能力,支持四种向量数据类型:vector(float32)、halfvec(float16)、sparsevec(稀疏向量)和 bit(二进制向量)。 存储结构分析 vector 类型采用 varlena 可变长度存储,包含 8 字节元数据头和 4 字节/维的浮点数组。存储空间计算公式为:维度×4 + 8 字节。 TOAST 机制影响 PostgreSQL 的 TOAST原创 2026-08-22 00:45:00 · 755 阅读 · 0 评论 -
PostgreSQL笔记42: pgvector扩展安装与配置完全指南
pgvector安装与配置指南 本文详细介绍了PostgreSQL向量搜索扩展pgvector的三种安装方法: pgenv一键安装 - 适合快速部署,自动处理依赖 源码编译安装 - 最灵活,支持指定版本 RPM包安装 - 适合企业生产环境 重点分析了源码安装中的常见问题: pg_config路径问题的多种解决方案 sudo环境下的权限处理 多版本PostgreSQL环境下的配置 安装完成后,可通过CREATE EXTENSION vector启用功能,并使用vector(n)数据类型存储和查询向量数据。 p原创 2026-08-21 23:45:00 · 470 阅读 · 0 评论 -
PostgreSQL笔记41:向量数据、向量化表示与pgvector扩展实践
本文系统介绍了PostgreSQL的pgvector扩展,它为非结构化数据的向量化存储与检索提供了强大支持。主要内容包括:向量数据的基本概念与数学原理,pgvector的安装与向量数据类型(vector、halfvec等),向量数据的存储与相似性检索操作,以及两种核心索引IVFFlat和HNSW的性能优化策略。文章通过犬种区分的案例阐释了高维特征空间的语义表达优势,并提供了完整的SQL操作示例,帮助读者掌握这一AI时代的关键数据库技术。原创 2026-08-21 22:30:00 · 320 阅读 · 0 评论 -
PostgreSQL笔记40:PG生态中AI与向量检索扩展全景概览
PostgreSQL 凭借强大的扩展性机制,正在成为 AI 和向量检索领域的重要选择。本文梳理了 PG 生态中与 AI、向量检索相关的核心扩展: 向量检索:重点介绍了 pgvector(支持多种向量类型和距离度量)、pgvecto.rs/VectorChord(支持高维向量)和 pg_analytics/pg_lakehouse(分析型查询引擎) 文本处理:包括 pg_similarity(文本相似性计算)、pg_summarize(LLM文本摘要)和 pg_tokenize(分词与Token计数) 库内机原创 2026-08-21 21:30:00 · 257 阅读 · 0 评论 -
PostgreSQL笔记39:PG作为AI数据底座——向量检索与语义搜索能力解析
摘要: PostgreSQL凭借其强大的可扩展性,通过pgvector扩展实现了高效的向量存储与语义检索能力,成为AI应用的理想数据库选择。pgvector支持多种向量数据类型(单精度、半精度、稀疏向量)和距离度量(L2、余弦相似度等),并提供IVFFlat和HNSW两种近似最近邻索引加速查询。其核心优势在于将向量检索与传统SQL过滤、全文检索无缝结合,支持混合查询模式,满足复杂业务场景需求。作为成熟的关系型数据库,PostgreSQL还提供ACID事务、高并发控制、备份恢复等企业级能力,避免了专用向量数据原创 2026-08-21 20:30:00 · 576 阅读 · 0 评论 -
PostgreSQL笔记38:慢查询定位与优化的系统方法论
PostgreSQL慢查询分析与优化方法论 本文系统介绍了PostgreSQL慢查询分析和SQL优化的完整方法论。主要内容包括: 慢查询采集与定位: 日志参数配置(log_min_duration_statement等) 执行计划自动记录(auto_explain扩展) 语句统计信息(pg_stat_statements扩展) 日志分析工具(pgBadger和file_fdw) SQL优化方法论(漏斗法则): 强调避免过早优化 优先考虑资源扩容(横向/纵向) 优化资源利用(并行查询、向量化执行) 减少CPU原创 2026-08-21 19:30:00 · 335 阅读 · 0 评论 -
PostgreSQL笔记37:数据库性能瓶颈排查方法论与工具链
本文系统介绍了 PostgreSQL 数据库性能排查的指标体系和方法论。主要内容包括:性能衡量指标(QPS/TPS、延迟、饱和度、错误数、缓存命中率);硬件基础指标(CPU、内存、存储、网络延迟);操作系统排查工具(CPU/IO/网络/内存分析工具);PostgreSQL 核心统计视图和慢查询分析;以及第三方监控工具(pgBadger、PgHero、Prometheus等)。文章强调建立量化标准的重要性,并提供了从硬件层到数据库层的完整排查路径,帮助开发者系统性地定位和解决数据库性能问题。原创 2026-08-21 12:45:00 · 727 阅读 · 0 评论 -
PostgreSQL笔记36:执行计划基础解读与优化器成本模型
PostgreSQL 查询执行计划解析 本文系统介绍了PostgreSQL查询执行计划的分析方法,主要内容包括: 执行计划基础:解释了EXPLAIN和EXPLAIN ANALYZE的区别,执行计划的树形结构特征,以及自底向上、从左往右的阅读原则。 成本模型:详细说明了cost、rows、width等关键指标的含义,以及seq_page_cost、random_page_cost等核心成本参数的配置建议,特别针对不同存储介质(HDD/SSD/NVMe)给出了优化建议。 统计信息:介绍了pg_stats视图中的原创 2026-08-21 07:30:00 · 431 阅读 · 0 评论 -
PostgreSQL笔记35:索引常见问题诊断与解决方案全景解析
使用pg驱动连接 PostgreSQL 并执行 DDL/DML通过pg_index系统视图查询索引状态(indisvalidindisready使用获取查询计划调用amcheck扩展的进行索引一致性检测INVALID索引的产生与修复、系统表与普通表索引损坏的诊断与恢复、索引膨胀的成因与监控手段,以及查询优化器拒绝使用索引的多维度场景。在修复策略上,强调了的适用版本(PG 12+)和开发者参数在系统表损坏场景下的关键作用。在膨胀问题上,明确指出 PostgreSQL 17 之前VACUUM。原创 2026-08-21 02:45:00 · 836 阅读 · 0 评论 -
PostgreSQL笔记34:索引优化策略全景解析——从B-tree到HOT的核心原理与实践
PostgreSQL索引技术全面解析:从B-tree到函数索引 摘要:本文系统梳理了PostgreSQL中各类索引技术的核心特性与适用场景。B-tree作为默认索引支持范围查询和排序,但有单页大小限制;Hash索引仅支持等值查询;BRIN索引通过块范围摘要优化时序数据查询;GIN倒排索引擅长处理全文检索和JSON数据;GiST支持空间搜索和最近邻查询。此外还介绍了函数索引、部分索引、复合索引等高级用法,以及索引扫描优化技术如Index-Only Scan和HOT机制。不同索引类型在查询支持、存储效率和维护成原创 2026-08-21 01:30:00 · 709 阅读 · 0 评论 -
PostgreSQL笔记33: 索引底层原理、扫描类型与属性体系深度解析
摘要 PostgreSQL索引通过加速条件检索、排序和关联提升查询性能,同时支持唯一性和排他性约束。索引扫描类型包括:Index Scan(通过索引键定位TID后回表)、Bitmap Scan(合并多个索引结果优化随机I/O)和Index Only Scan(依赖Visibility Map跳过回表)。索引访问方法具有多种属性,如B-tree支持排序(can_order)和唯一约束(can_unique),所有主流索引类型都支持多列索引(can_multi_col)。索引与表物理存储分离,可通过CLUSTE原创 2026-08-20 22:45:00 · 526 阅读 · 0 评论 -
PostgreSQL笔记32:死锁的诊断、处理与加锁原则
PostgreSQL 死锁机制解析 死锁是指多个事务互相持有对方所需资源而形成的循环等待状态。PostgreSQL 采用预防-检测-恢复机制处理死锁,核心是 deadlock_timeout 参数(默认1秒),控制检测频率。单机环境下,事务交错更新不同行会引发死锁;流复制环境中,备库回放进程与用户查询也可能形成死锁。UPDATE 语句的锁获取顺序(顺序扫描 vs 索引扫描)也会影响死锁发生。为避免死锁,应遵循加锁原则:使用最弱锁模式、快速完成强锁操作、按固定顺序获取锁。死锁检测后会选择牺牲者终止,但会优先保原创 2026-08-20 21:30:00 · 318 阅读 · 0 评论 -
PostgreSQL笔记31:咨询锁(Advisory Lock)在高并发场景下的原理与实践
PostgreSQL在高并发场景下提供了多种锁机制优化方案。本文对比了行级锁与咨询锁(Advisory Lock)的性能特点:行级锁(如SELECT FOR UPDATE)虽能保证数据一致性,但会导致锁等待和表膨胀问题;而咨询锁通过轻量级的整型键值锁定机制,避免了行检索和MVCC开销,性能提升显著(测试显示吞吐量从8.6万/秒提升至39万/秒)。文章详细介绍了咨询锁的会话级/事务级分类、核心API函数及使用场景,并提供了SELECT FOR UPDATE的NOWAIT和SKIP LOCKED优化选项。咨询锁原创 2026-08-20 20:30:00 · 350 阅读 · 0 评论 -
PostgreSQL笔记30:锁机制深度解析——表级锁、行级锁、轻量级锁与自旋锁
摘要 PostgreSQL锁机制包含表级锁、行级锁、轻量级锁和自旋锁四种类型。表级锁有8种模式(从ACCESS SHARE到ACCESS EXCLUSIVE),不同操作会获取不同级别的锁,如SELECT获取ACCESS SHARE,INSERT/UPDATE获取ROW EXCLUSIVE,VACUUM FULL需要ACCESS EXCLUSIVE锁。锁存储在共享内存中,大小受max_locks_per_transaction参数限制。行级锁包括FOR UPDATE等模式,存储在元组头中。轻量级锁保护内存结构原创 2026-08-20 19:45:00 · 766 阅读 · 0 评论 -
PostgreSQL笔记29:事务隔离级别深度解析——从MVCC快照到SSI可串行化
本文深入解析了PostgreSQL的事务隔离机制,重点介绍了MVCC实现中的事务快照概念及其组成要素(xmin/xmax/xip_list)。文章系统梳理了SQL标准定义的6种并发异常(脏读、不可重复读、幻读、序列化异常、更新丢失、读写偏序),详细对比了PostgreSQL支持的3种隔离级别(READ COMMITTED/REPEATABLE READ/SERIALIZABLE)在防止这些异常方面的行为差异。特别针对常见的更新丢失问题,通过示例演示了不同隔离级别下的处理机制,并指出READ COMMITTE原创 2026-08-20 07:15:00 · 751 阅读 · 0 评论 -
PostgreSQL笔记28: PostgreSQL ACID 特性与实现机制深度解析
摘要 PostgreSQL的事务机制严格遵循ACID原则,通过原子性、一致性、隔离性和持久性保障数据可靠性。原子性通过WAL和CLOG实现全事务回滚,子事务(SAVEPOINT)提供细粒度控制但需注意XID消耗和性能影响。一致性由约束条件确保数据完整性。隔离性通过MVCC实现高效并发,支持READ COMMITTED(默认)、REPEATABLE READ和SERIALIZABLE三级隔离,其中REPEATABLE READ已防止幻读。持久性依赖WAL日志和检查点机制,确保事务提交后数据永久保存。合理使用事原创 2026-08-20 00:45:00 · 447 阅读 · 0 评论 -
PostgreSQL笔记27: 双缓存架构下的内存管理与性能观测实践
PostgreSQL采用双缓存架构,同时使用共享缓冲区(shared_buffers)和操作系统页缓存(OS Page Cache)来提高查询性能。文章分析了其内存管理机制,包括Linux内核的水位线回收策略和直接内存回收对性能的影响。同时介绍了PostgreSQL的私有缓存SysCache和RelCache的特性,以及相关观测工具如pg_buffercache和pg_prewarm的使用方法。最后给出了shared_buffers的配置建议,通常设置为总内存的25%-40%,并需要权衡双缓存架构带来的性能原创 2026-08-19 23:45:00 · 224 阅读 · 0 评论 -
PostgreSQL笔记26:MVCC多版本并发控制机制深度解析
本文深入解析了PostgreSQL的MVCC机制和事务隔离实现。主要内容包括:元组内部结构(HeapTupleHeader)的关键字段如t_xmin/t_xmax等;数据操作(INSERT/DELETE/UPDATE)在MVCC下的具体行为;提交日志(CLOG)的作用;快照(Snapshot)的生成与可见性判断规则;四种隔离级别的实现差异;以及通过pageinspect插件观察元组状态和VACUUM清理死元组的操作。文章还提供了Node.js示例代码,展示如何通过pg库观察MVCC行为。这些机制共同构成了P原创 2026-08-19 22:45:00 · 616 阅读 · 0 评论 -
PostgreSQL笔记25:数据写入与读取流程及IO模型演进
本文深入解析PostgreSQL存储引擎架构与IO优化演进,主要内容包括: 体系架构:采用多进程模型,共享内存(shared_buffers/wal_buffers)与私有内存分离,后台进程负责脏页刷盘和WAL持久化。 数据读写:读取路径涉及shared_buffers→OS Page Cache→磁盘三级查询;写入采用延迟刷脏机制,通过WAL保证持久性。 核心挑战:双缓存问题导致内存浪费和算法冲突,PostgreSQL独创Clock Sweep页面置换算法替代传统LRU。 IO演进:从Buffered I原创 2026-08-19 21:45:00 · 647 阅读 · 0 评论
分享