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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LavenLiu

常言道:投资效率是最大的投资。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值