随笔分类 -  PostgreSQL

27.PG的归档配置
摘要:归档功能可以将WAL复制到另一个目录。若复制目标为共享区域(如 NSF或其他主机),则可以将其用于备份和 PITR前滚(基于时间点的恢复)。 接下来我们来配置一个rsync归档,服务器先安装 rsync软件包,然后切换到PostgreSQL用户。配置PostgreSQL用户能和远端服务器进行ssh免 阅读全文

posted @ 2024-04-28 17:03 太白金星有点烦 阅读(119) 评论(0) 推荐(0)

26.pg_wal缓冲区浅析
摘要:1.内存结构如下 可以看到在共享内存中有一块区域叫做wal buffer,为了快速写操作,WAL首先写到内存,然后异步写到磁盘。写入内存的区域称为WAL缓冲区,由参数wal_buffer控制,默认值为shared_buffers值的1/32。并且WAL Writter进程将以200ms的默认设置将内 阅读全文

posted @ 2024-04-28 16:18 太白金星有点烦 阅读(99) 评论(0) 推荐(0)

25.wal日志大小是怎样规划的?
摘要:1. WAL空间是由那些参数决定的 WAL空间主要以下这三个参数控制: max_wal_size min_wal_size wal_keep_segments或wal_keep_size 所以需要正确设置这个几个参数。这几个参数的原理具体可以见文章:PostgreSQL数据库WAL日志空间大小以及不 阅读全文

posted @ 2024-04-28 13:01 太白金星有点烦 阅读(497) 评论(0) 推荐(0)

24.影响wal日志大小的因素
摘要:影响WAL大小的因素:其他情况下,会有以下因素影响WAL大小。 WAL异常增长,或WAL一直膨胀且超过max_wal_size,执行检查点后,WAL使用量未见降低或WAL日志不会被删除重用,需要排查以下因素。 独立于max_wal_size之外,wal_keep_size(MB)+ 1 个最近的 W 阅读全文

posted @ 2024-04-28 12:58 太白金星有点烦 阅读(103) 评论(0) 推荐(0)

23.pg_wal浅析01
摘要:1.PG_WAL? WAL是一套保证数据完整性的标准。简要地说,WAL中心概念是数据文件(这里涉及到表和索引)修改必须在这些动作被记录之后,即 描述这些修改操作的日志记录被刷到永久存储中。如果我们遵循这个过程,我们不需要在每次事务提交时刷数据页到磁盘,因我我们知道一旦发生崩溃,我们可以使用日志回复数 阅读全文

posted @ 2024-04-27 08:43 太白金星有点烦 阅读(249) 评论(0) 推荐(0)

22.Postgresql的checkpoint功能
摘要:PostgreSQL中的checkpoint是数据库管理系统(DBMS)中的一项重要机制,用于确保数据的一致性、可恢复性和性能管理。以下是关于PostgreSQL checkpoint的详细解释: checkpoint的定义与作用 定义: Checkpoint是一个在WAL(Write-Ahead 阅读全文

posted @ 2024-04-22 16:18 太白金星有点烦 阅读(484) 评论(0) 推荐(0)

21.full page write(全页写)
摘要:全页写: 在数据库发生一次 checkpoint 检查点后,需要往数据库的一个数据块里面插入数据,数据库在修改前需要把这个数据块从磁盘读到内存中数据缓冲区 (shared buffer pool) 里,然后再内存中进行数据块的修改插入。当我们执行 insert 语句时,对数据块进行插入数据 A,内存 阅读全文

posted @ 2024-04-22 15:55 太白金星有点烦 阅读(182) 评论(0) 推荐(0)

20.PG的锁
摘要:PostgreSQL数据库中有两类锁:表级锁和行级锁。当要查询、插入、更新、删除表中 的数据时,首先会获得表上的锁,然后再获得行上的锁 1.表级锁模式 表级锁冲突矩阵 “N”表示这两种锁冲突,也就是说,同一用户不能同时持有这两种锁,“ Y”表示两种锁可以兼容 阅读全文

posted @ 2024-01-28 22:15 太白金星有点烦 阅读(84) 评论(0) 推荐(0)

19.PG的autovacuum
摘要:autovacuum时启动postgresql时自动启动的后台实用程序进程之一 参数: autovacuum = on (默认开启) track_counts = on(默认开启) 作用: 1)需要vacumm来移除死元组 2)防止死元组膨胀 3) 更新表的统计信息进行分析,以便提供优化器使用 4) 阅读全文

posted @ 2024-01-22 22:29 太白金星有点烦 阅读(95) 评论(0) 推荐(0)

18.PG的vacuum
摘要:通常块中被删除的行是逻辑上删除,物理上还保留在块中,如果长时间不清理,会造成垃圾空间膨胀,而清理的工作一般是由AutoVacuum后台进程来完成 vacuum处理对数据库中的指定表或所有表执行一下任务: 移除死元组: 1) 删除死元组并对每个页面的活元组进行碎片管理. 2) 删除指向死元组的索引元组 阅读全文

posted @ 2024-01-21 21:44 太白金星有点烦 阅读(115) 评论(0) 推荐(0)

17.PG索引核心
摘要:关于pg索引,上文提到了创建,删除等一些基础的操作,这里说说核心的东西 1.PG索引的视图和表pg_indexes和pg_index 1) pg_indexes postgres=# \d pg_indexes View "pg_catalog.pg_indexes" Column | Type | 阅读全文

posted @ 2024-01-10 18:54 太白金星有点烦 阅读(247) 评论(0) 推荐(0)

16.PG的索引基础
摘要:索引类似于书籍的目录,方便对表中的记录快速查找或者排序,但是建索引会有以下代价: 增减数据库的存储空间 在插入和更新数据时,所以也会被更新 索引的分类 BTree:PG默认的索引类型,适合等值和范围查询 Hash:只能处理简单的等职查询 Gist:不是单独一种索引类型,而是一种架构,可以在这种架构上 阅读全文

posted @ 2024-01-10 18:18 太白金星有点烦 阅读(234) 评论(0) 推荐(0)

15.修改pg数据库的配置
摘要:设置pg数据库的参数分为全局和和会话级别: 会话级别可以直接使用set 参数 to value 全局的需要使用alter database 数据库名 set 参数 to value postgres=# set geqo to off; #这个是会话级别 SET postgres=# show ge 阅读全文

posted @ 2024-01-05 12:07 太白金星有点烦 阅读(283) 评论(0) 推荐(0)

14.PG逻辑复制搭建
摘要:1.准备两台服务器: 172.16.191.140 发布者 172.16.191.139 订阅者 2.在这两台服务器都安装了pg数据库 3.分别在这三台服务器上pg_hba_conf配置文件新增 host all all 172.16.191.0/0 md5 host replication all 阅读全文

posted @ 2024-01-04 11:05 太白金星有点烦 阅读(165) 评论(0) 推荐(0)

13.PG之逻辑复制
摘要:1.逻辑复制介绍 PostgreSQL10版本中增加了一个新特性,即逻辑复制(Logical Replication)。PostgreSQL 9的流复制是基于WAL日志的物理复制,其原理是主库不间断地发送WAL日志流到备库,备库接收主库发送的WAL日志流后应用WAL;而逻辑复制是基于逻辑解析(Log 阅读全文

posted @ 2024-01-02 11:21 太白金星有点烦 阅读(1418) 评论(0) 推荐(1)

12.PG主备搭建(物理复制)
摘要:1.环境 主库:172.16.191.133(pg16) 备库:172.16.191.136(pg16) 2.主库配置 要使用流复制,需要允许主库接受流复制的连接,这就需要在pg_hba.conf中做如下配置: host replication all 0/0 md5 修改配置参数文件postgre 阅读全文

posted @ 2024-01-01 22:02 太白金星有点烦 阅读(359) 评论(0) 推荐(0)

11.PG表之pg_class和pg_stats
摘要:1. pg_class表 postgres=# \d pg_class Table "pg_catalog.pg_class" Column | Type | Collation | Nullable | Default + + + + oid | oid | | not null | 行标识符号 阅读全文

posted @ 2023-12-24 16:04 太白金星有点烦 阅读(383) 评论(0) 推荐(1)

10.PG的统计信息
摘要:1.PG的统计信息 数据的统计信息反映的是数据的分布情况,PG执行SQL语句会经过解析的过程和查询优化过程。 解析过程:解析器将sql语句分解成数据结构并传递给后续步骤 查询优化过程:查询优化器发现执行sql语句的最佳方案,并生产执行计划。 查询优化器sql决定sql语句如何执行依赖于数据库的统计信 阅读全文

posted @ 2023-12-24 15:47 太白金星有点烦 阅读(264) 评论(0) 推荐(0)

9.PG表的磁盘碎片清理
摘要:1.磁盘碎片 在PG中删除行时,这些行为只是被标记为 'dead' , 并不是真正从物理存储上进行删除,因为空间也没有被释放回收。 在PG中,除非进行自动的清理(vacuum)或者手工的清理,否则数据块所占用的物理空间是不会释放,在物理存储空间被回收之前,会导致存储空间中存在很多空洞。 大量的更新操 阅读全文

posted @ 2023-12-24 14:32 太白金星有点烦 阅读(605) 评论(0) 推荐(0)

8.PG的日志文件
摘要:Postgresql的日志分为运行日志、预写日志、事务日志和服务器日志。 1)运行日志 运行日志,在默认情况下是不开启的,通过主要的参数文件postgresql.conf的配置可以看到相关的参数设置。运行日志一般用来记录数据库服务器端与数据库的状态,如各种错误信息、定位慢日志、数据库的启动、关闭信息 阅读全文

posted @ 2023-12-24 00:29 太白金星有点烦 阅读(376) 评论(0) 推荐(0)

导航