1. 概述 慢查询分析是数据库性能优化最实用的技能。完整流程分三步:发现慢查询 → 定位原因 → 优化验证。本篇覆盖 PG 的各类分析工具与实战套路。 对比 MyS
1. 概述 当单表数据量达到数千万甚至上亿行时,会遇到查询变慢、VACUUM 耗时长、历史数据难清理等问题。**分区(Partitioning)**
1. 概述 连接管理是 PostgreSQL 高并发场景的关键,也是 PG 区别于 MySQL 的重要架构点。 核心问题:PostgreSQL 每个连接是一个独立的操作系统进程(不是线程)。
1. 概述 **WAL(Write-Ahead Logging,预写日志)**是 PostgreSQL 保证数据持久性(Durability,ACID 的 D)和崩溃恢复的核
1. 概述 备份是数据库的生命线。PostgreSQL 备份分两大类,理解它们的区别是面试和实战的基础: 类型 工具 内容 特点 逻辑备份 pg_dump / pg_dumpall 导出为 SQL/
1. 概述 复制(Replication)是高可用和读扩展的基础。PostgreSQL 的复制建立在 WAL与检查点机制 之上:主库把 WAL 传给从库重放,从
1. 概述 “没有监控的数据库是黑盒”。本篇讲 PostgreSQL 的可观测性:用内置统计视图看实时状态,用日志留存审计与诊断信息,用 Prometheus + Grafana 做
1. 概述 数据库安全是多层防线:谁能连(认证)→ 连上后是谁(角色)→ 能做什么(权限)→ 能看哪些行(RLS)→ 传输是否加密(SSL)。本篇逐层讲解
1. 概述 数据迁移是常见且高风险的工作,分两类:异构迁移(MySQL→PostgreSQL 等换数据库)和同构迁移/升级(PG 大版本升级)。本篇覆
1. 概述 本章介绍如何在Go语言中连接和操作PostgreSQL数据库,包括标准库database/sql、流行ORM库、连接池管理等。 2. 快速开
1. 概述 完整的电商系统数据库设计实战案例。 2. 数据库架构 2.1 核心表设计 -- 用户表 CREATE TABLE users ( id SERIAL PRIMARY KEY, username VARCHAR(50) UNIQUE NOT NULL, email VARCHAR(100) UNIQUE NOT NULL, password_hash VARCHAR(255) NOT NULL, phone VARCHAR(20), is_active BOOLEAN DEFAULT TRUE, created_at TIMESTAMPTZ DEFAULT NOW(), updated_at TIMESTAMPTZ
1. 概述 完整的博客系统数据库设计,包含文章、评论、标签等功能。 2. 数据库设计 -- 用户表 CREATE TABLE users ( id SERIAL PRIMARY KEY, username VARCHAR(50) UNIQUE NOT NULL, email VARCHAR(100) UNIQUE NOT NULL, bio TEXT, avatar_url TEXT, created_at TIMESTAMPTZ DEFAULT NOW() ); -- 文章
1. 概述 使用PostgreSQL构建实时数据分析系统,包括用户行为分析、实时报表等。 2. 事件表设计 -- 用户行为事件表 CREATE TABLE events ( id BIGSERIAL PRIMARY KEY, event_type VARCHAR(50) NOT NULL, user_id INTEGER, session_id
1. 概述 本章总结PostgreSQL生产环境部署和运维的最佳实践,涵盖安全、性能、备份、监控等关键领域。 2. 安全最佳实践 2.1 网络安全 # pg_hba.conf - 配置客户
1. Git 简介 Git 是 Linus Torvalds 于 2005 年为管理 Linux 内核代码而开发的分布式版本控制系统。 与集中式版本控制(如 SVN)不同,每个 Git 仓库都包含完整的历史记录和版本追踪
1. 工作流模型 1.1 Git Flow 适合有计划版本发布的项目(如移动端 App、开源库)。 main ──●──────────────────────────●── (仅
1. Git 的本质:内容寻址文件系统 Git 本质上是一个以内容寻址的文件系统,在此之上构建了版本控制功能。 所有数据以对象形式存储在 .git/objects/ 目录下,每个对象用其内
背景 项目中向插入消息中心服务发送数据,消息字符串中有时间,格式是2006-01-02 15:04:05,于此同时向mysql数据库写数据,其中
背景 项目中使用gin框架,一般的注册路由和函数都这样写 func main() { engine := gin.New() engine.GET("/test",testHandler) engine.Run("localhost:8080") } type TestReq struct { Name string } func testHandler(ctx *gin.Context) { // 解析参数 name:=ctx.Query("name") testReq:=TestReq{Name: name} // 检查参数 checkTestReq(testReq) ... // 获取sessi
高并发秒杀问题 流程: 先来看秒杀活动流程: 活动入口 客户端秒杀列表页 商品秒杀详情页 点击购买 携带活动ID,商品ID提交服务端 服务端判断活动是否结束