PostgreSQL 小课专栏大纲【专栏已完成】
2025/2/1 19:13:28
来源:https://blog.csdn.net/cc20100608/article/details/142755367
浏览:
次
关键词:PostgreSQL 小课专栏大纲【专栏已完成】
PostgreSQL 介绍及发展历史
介绍
发展历史
克隆 PostgreSQL 的源代码
找到其第一次提交记录
看下第一次提交的信息
发布策略、版本号及生命周期
探索 PostgreSQL 中的术语
总结
PostgreSQL 安装
编译方式安装
yum 方式安装
apt 方式安装
Docker 方式运行
Mac/Windows 方式安装
Mac 方式安装
Windows 方式安装
pgAdmin 安装
启动/停止/重启
启动
停止
重启
总结
PG 多环境部署
了解我们的 PG 集群
pg_ctl
PostgreSQL 进程一览
模板数据库
探索 PGDATA 磁盘布局
PGDATA 目录中的对象
Tablespaces
PostgreSQL vs. MySQL
数据定义语言(DDL)
创建数据库
创建表
数据操纵语言(DML)
插入数据
查询数据
更新数据
删除数据
数据控制语言(DCL)
授权
撤销授权
结论
MySQL 与 PostgreSQL 中的数据类型对比
1. 数据类型
2. 索引
3. 约束
4. 事务处理
客户端连接的区别
基本操作命令的区别
建表语句的区别
MySQL 与 PostgreSQL 中的概念对比:Database 与 Schema
MySQL 中的 Database 与 Schema
PostgreSQL 中的 Database 与 Schema
总结
PostgreSQL 用户及授权管理
用户及组介绍
角色管理
创建角色
角色密码、连接和可用性
角色作为组
移除角色
检查已有角色
角色级别的连接管理
pg_hba.conf 语法
pg_hba.conf 中的规则顺序
多规则合并
授权规则中使用组
授权规则中使用文件
检查 pg_hba.conf 规则
pg_hba.conf 中引入其他文件
附录
命令行执行查询
查看用户的授权
总结
PostgreSQL 用户及授权管理 02:深入理解角色
深入理解角色
与新建对象相关的属性
与超级用户相关的属性
与复制相关的属性
与 RLS 相关的属性
修改角色属性:ALTER ROLE 语句
重命名角色
SESSION_USER vs. CURRENT_USER
为角色配置参数
查看角色信息
角色继承
权限是如何解析的
角色继承回顾
总结
PostgreSQL 用户及授权管理 03:ACLs
ACLs
默认 ACLs
了解默认 ACLs
总结
PostgreSQL 用户及授权管理 04:授予及回收权限
授予及回收权限
表相关的权限
基于列的权限
序列相关的权限
schema 相关的权限
schema 中的所有对象
编程语言相关的权限
例程相关的权限
database 相关的权限
授予对象所有者
获取 ACL 信息
总结
PostgreSQL 用户及授权管理 05:RLS
RLS
总结
PostgreSQL 用户及授权管理 06:启用 SSL 及验证
SSL 连接加密
生成相关的证书
通过 openssl 的方式创建证书
通过云厂商申请免费证书
为集群配置 SSL
通过 SSL 连接集群
附录
PostgreSQL 不支持 SSL 问题解决
抓包验证连接是否加密
没开启 SSL 的连接验证
已开启 SSL 的连接验证
总结
PostgreSQL 基础 SQL
创建及管理数据库
创建数据库
Schema 介绍
public 模式介绍
search_path 变量介绍
正确的打开方式
查看所有的表
从已修改的模板创建数据库
删除表及库
创建数据库副本
查看数据库的大小
创建 database 的时候发生了什么
表的管理
EXISTS 选项
临时表的管理
管理 unlogged 表
创建表
为表及字段添加注释
表操纵语句
插入及查询数据
NULL 值
NULL 值的排序
表的复制
更新数据
删除数据
总结
PostgreSQL 高级语句 01:高级 SELECT
探索 SELECT 语句
使用 like 子句
使用 ilike 子句
使用 distinct
使用 limit 及 offset
使用子查询
子查询和 IN/NOT IN 条件
子查询和 EXISTS/NOT EXISTS 条件
PostgreSQL 高级语句 02:连接查询
连接查询
内连接(INNER JOIN)
INNER JOIN vs. EXISTS/IN
左连接(LEFT JOIN)
右连接(RIGHT JOIN)
全外连接(FULL OUTTER JOIN)
横向连接(LATERAL JOIN)
PostgreSQL 高级语句 03:聚合函数
聚合函数
UNION/UNION ALL
EXCEPT/INTERSECT
PostgreSQL 高级语句 04:RETURNING 子句
UPSERT 语句
INSERT 的 RETURNING 子句
更新相关的多条记录
MERGE
UPDATE 的 RETURNING 子句
DELETE 的 RETURNING 子句
PostgreSQL 高级语句 05:CTEs
探索 CTEs
什么是 CTE
CTE - 使用场景
递归查询
递归 CTEs
总结
PostgreSQL 之 psql 命令定制
登录数据库
使用 psql
进阶功能
psql 定制
定制提示符
打开时间统计
执行系统命令
观察语句执行
常用的命令总结
查看当前的连接信息
查看数据库的运行时间
查看数据库目录
查看库里面有多少表
数据库及表占用磁盘空间大小
查看当前连接的信息
最大的 Top N 表是哪个
Window 函数
基础窗口函数
使用 PARTITION BY 函数及 WINDOW 子句
一些有用的函数
ROW_NUMBER 函数
ORDER BY 子句
FIRST_VAULE
LAST_VAULE
RANK
DENSE_RANK
LAG 及 LEAD 函数
CUME_DIST 函数
NTILE 函数
高级窗口函数
frame 子句
start_point 与 end_point 之间的行
RANGE BETWEEN 子句
总结
服务端编程
数据类型
什么是可扩展性
标准数据类型
布尔类型
数值类型
整型
固定精度的数值类型
任意精度的数值类型
字符类型
固定长度的字符类型
可变长度的字符类型(varchar)
可变长度的字符类型(text)
日期/时间戳类型
date 类型
区域设置和格式
timestamp 类型
NoSQL 数据类型
hstore 类型
JSON 类型
函数及编程语言
函数
SQL 函数
基础函数
返回一组数据的 SQL 函数
返回一个表的 SQL 函数
SQL 函数的多态
PL/pgSQL 函数
一个例子
删除函数
声明函数参数
输入/输出参数
函数波动性(易变性、稳定性)类别
控制结构
条件语句
IF 语句
CASE 语句
循环语句
record 类型
异常处理语句
安全定义
总结
触发器及规则
PostgreSQL 中的规则
理解 OLD 及 NEW 变量
INSERT 相关规则
ALSO 选项
INSTEAD 选项
INSTEAD NOTHING 选项
DELETE/UPDATE 相关规则
创建 new_tags 表
创建两个表
管理 INSERT/DELETE/UPDATE 事件上的规则
INSERT 规则
DELETE 规则
UPDATE 规则
PostgreSQL 中的触发器
触发器语法
INSERT 相关的触发器
TG_OP 变量
UPDATE/DELETE 相关的触发器
事件触发器
事件触发器示例
总结
分区
基本概念
范围分区
列表分区
哈希分区
表继承
drop 表
声明式分区
列表分区
范围分区
分区维护
附加新分区
分离现有分区
将现有表附加到父表
默认分区
分区及表空间
一个例子
总结
事务处理
事务介绍
隐式与显式事务对比
事务中的时间
事务 ID 相关问题
虚拟和真实事务 ID
多版本并发控制(MVCC)
事务隔离级别
读未提交
读已提交
可重复读
可串行化
MVCC 详解
Savepoints
Deadlocks
持久性及一致性的保证:WALs
WALs
如何保证宕机恢复
Checkpoints
Checkpoints 配置参数
checkpoint_timeout 与 max_wal_size
Checkpoints 限制
手工触发一个 checkpoint
VACUUM
手工 VACUUM
自动 VACUUM
总结
扩展 PostgreSQL
扩展介绍
Extension 生态
Gnu/Linux 的输出
Mac 的输出
Extension 的组成
控制文件
脚本文件
管理扩展
创建扩展
查看已安装的扩展
查看可用的扩展版本
更改已有扩展
删除扩展
PGXN 客户端
Debian 系列安装 pgxnclient
RHEL 系列安装 pgxnclient
源码安装 pgxnclient
pgxnclient 命令行介绍
安装扩展
通过 pgxnclient 安装扩展
手工安装扩展
使用安装的扩展
删除已安装的扩展
通过 pgxnclient 删除扩展
删除手工编译的扩展
创建自己的扩展
定义一个扩展
创建扩展文件
安装自定义的扩展
扩展升级
执行扩展升级
总结
调优
语句的执行
执行阶段
优化器
优化器使用的节点
顺序节点
顺序扫描
索引扫描
连接节点
并行节点
收集节点
并行扫描
并行连接
并行聚合
优化器何时选择并行计划?
其他实用节点
节点的成本
索引
索引类型
创建索引
查看索引
删除索引
索引失效
重建索引
EXPLAIN 语句
EXPLAIN 的输出格式
EXPLAIN ANALYZE 语句
EXPLAIN 选项
查询优化示例
ANALYZE 更新统计数据
Auto-explain
总结
日志及审计 01:日志
日志介绍
日志存放哪里
何时记录日志
需要记录什么
使用 pgBadger 抽取日志信息
安装 pgBadger
配置 PostgreSQL 以使用 pgBadger
使用 pgBadger
定时执行 pgBadger
总结
日志及审计 02:审计
实施审计
安装 PgAudit
配置 PostgreSQL 以使用 PgAudit
配置 PgAudit
会话级别审计
角色级别审计
总结
备份及恢复
备份及恢复类型介绍
逻辑备份
单库备份
单库恢复
备份指定的表及序列
压缩
备份格式及 pg_restore
我们查看一下里面的内容
选择性恢复
备份整个集群
并行备份
定时备份
COPY 命令
物理备份
手动物理备份
pg_verifybackup
启动克隆的集群
从物理备份恢复
PITR 背后的基本概念
总结
集群配置
集群配置
查看所有的配置参数
查看配置错误
配置嵌套
配置上下文
主配置相关设置
WAL 配置
其输出如下,仅截取部分输出
内存相关配置
进程信息配置
网络相关配置
归档及同步相关配置
Vacuum 及 autovacuum 相关配置
统计收集
配置修改
生成配置
总结
集群监控
查询及会话相关的信息
检查锁
检查数据库
检查表及索引
更多统计信息
pg_stat_statements
安装 pg_stat_statments 扩展
使用 pg_stat_statments
重置 pg_stat_statements 收集的数据
微调 pg_stat_statments
总结
PostgreSQL 监控实战
安装及配置 PMM 服务端
安装 PMM 服务端
卸载旧的 Docker 软件包
安装及配置 PMM 客户端
安装 PMM 客户端
Debian 系列安装
RHEL 系列安装
PMM 客户端注册
PMM 客户端取消注册
添加服务
创建数据库的 PMM 账号
安装及配置扩展
通过 UI 界面添加
通过命令行添加
删除服务
物理复制
物理复制的基本概念
物理复制及 WALs
wal_level 指令
流复制环境准备
管理流复制
流复制的基本概念
异步复制环境
wal_keep_segments 选项
复制槽
pg_basebackup 命令
异步复制
复制监控
同步复制
PostgreSQL 设置
主节点配置
从节点配置
级联复制
延迟复制
从节点提升为主节点
总结
逻辑复制
逻辑复制的一些基本概念
逻辑复制与物理复制的对比
探索逻辑复制
逻辑复制环境设置
创建复制角色
主服务器的 postgresql.conf
复制服务器的 postgresql.conf
pg_hba.conf 文件
开始配置逻辑复制
监控逻辑复制
只读 vs. 可写
DDL 问题
关闭逻辑复制
同时使用物理复制与逻辑复制
总结
有用的工具及扩展
Exploring the pg_trgm extension
使用 postgres_fdw 扩展
pgloader 迁移工具
从 MySQL 迁移到 PostgreSQL