Fork me on GitHub

分类 postgres 中的文章

数据库优化思考-性能优化

为什么要优化 首先了解一个概念,什么是·熵增· 物理定义:熵增过程是一个自发的由有序向无序发展的过程(Bortz, 1986; Roth, 1993) 在一个孤立的系统里,如果没有外力做工,其总混乱度(即熵)会不断增大,直至系统彻底变得无序 从系统软件的角度: 从应用系统上线那一刻开始,随着用户量的增加、业务功能的持续……

阅读全文

数据库优化思考 - 模块调优

开始乱说 主要是结合postgres数据库自身特点,根据具体的业务场景,作出相应调整,使其更加合理。 数据库作为一个整体对外提供服务,单是其内部是由不同的功能模块组成,相互协调来共同完成任务。 各个功能模块完成不同的功能,每个模块的特点也不同,在调整的时候至少需要理解各个模块实现的基本……

阅读全文

误操作闪回

原理 利用mvcc原理,数据在删除或更新时只是标记为删除。当没有发生过gc时历史数据仍然存在。只是对当前事务不可见。 通过修改当前事务号为误操作前的事务号就可以看到历史数据。 例如 T1 (添加数据) T2 - T8(其他操作) T9(删除了T1加入的数据)T10… (其他操作)。 自需要将……

阅读全文

数据库优化思考 - 结构设计

DB 与 APP 的不同 有无状态 无状态应用,每个实例提供的服务都是等价、对等的。APP 应用为无状态应用,DB应用为有状态应用。 数据库正是因为有状态,所以维护起来更有挑战。 APP 在面对大量高并发请求时可以无所顾及的增加实例,加机器进行扩容。处理能里也会将得到线性提升。简单粗暴又有效。 DB 面对同样的压……

阅读全文

创建只读用户

创建只读用户readonly 1.创建一个用户名为readonly密码为ropass的用户 CREATE USER readonly WITH ENCRYPTED PASSWORD 'ropass'; 2.用户只读事务 alter user readonly set default_transaction_read_only=on; 3.把所有库的语言的USAGE权限给到readonly GRANT USAGE ON SCHEMA public to readonly; 4.授予select权限(这句要进入具体数据库操作在哪个db环境执行就授予那个db的……

阅读全文

checkpoint 检查点

作用 一般checkpoint会将某个时间点之前的脏数据全部刷新到磁盘,以实现数据的一致性与完整性。其主要目的是为了缩短崩溃恢复时间。 数据库靠谱的原因 一条DML 写入过程 在写入数据的时,当事务提交后修改信息顺序同步写入wal。shared buffer中信息并不是马上落盘。异步同步磁盘……

阅读全文

逻辑复制

逻辑复制 Postgres 10 版本开始, 在内核层面支持基于REDO流的逻辑复制。 控制粒度为表级别 物理复制相同都是基于wal 可指定多个上游数据源 下游数据可读可写 可用于数据汇总,无停服数据迁移,大版本升级等。 基本概念 发布者(publication), 上游数据 订阅者 (subscrition), 下游数据 复……

阅读全文

PG主从切换 pg_rewind

pg_rewind requires that the target server either has the wal_log_hints option enabled in postgresql.conf or data checksums enabled when the cluster was initialized with initdb. Neither of these are currently on by default. full_page_writes must also be set to on, but is enabled by default. wal_log_hints 使用场景 在数据库主从结构中,从变成主易。但是由主变为从却需要一番周折。 如果是数据量少时重新使用pg_backup拉一份从即可,但是如果数据量大时,这个过程非常的耗时耗能。对线上业务也会有影……

阅读全文

PG高可用Patroni

环境 操作系统 Centos 7 patroni 版本 2.0.2 postgres 版本 13 实现目标 高可用方案对比 patroni 结构分析 patroni 搭建新集群 patroni 接管现有集群 patroni 管理pg配置 手动swithover 自动failover 维护模式 弹性扩容,缩容 对外提供统一服务 RestFULLAPI 备份恢复 监控 日志 升级 高可用方案对比 pg的高可用方案都是基于流复制来实现 PAF pacemaker + corosyns repmgr repmgr 手动流复制管……

阅读全文

pg_pathman 分区表

介绍 分区表的诉求在现实的生成中的意义不必多说,pg以前的实现方式多采用触发器,rules实现。数据量上来时性能明显不尽如意。 虽然pg10 ,11 版本在分区表的特性上不断发力。但是性能啥还是不够给力。 pg_pathman 分区表功能在目前的pg版本10.6 中优势还是非常明显的。 在期待pg自身分区表特性的……

阅读全文