源码版本:PostgreSQL 13.3 1. checkpoint 触发条件 参数 checkpoint_timeout 控制,默认 5 分钟,范围 30s ~ 1 day wal 日志间隔,当最新的 wal 日志与上次 checkpoint 时的 wal 日志的距离大于指定点时,触发。
1. 为什么需要 toast 技术 PostgreSQL 表数据的存储以页作为基本单位,默认情况下,一个页面 8kb 大小,pg 不允许一条记录跨多个页面,那么当一条记录的大小超过 8kb 时怎么处理?这就需要引入 toast 技术,英文全称为 The OverSized Attribute St
1. PostgreSQL HOT 技术 PG 对一条数据进行更新时,并不直接在原数据上直接更新,而是采用创建一条新记录的方式间接进行更新。由于数据的行号(ctid) 发生了变化,如果字段上有索引,这种更新机制就必须要对索引也同步进行更新。在索引数量较多的情况下,会严重影响更新效率。 基于以上问
对于 PG 的 full page write 和 MySQL 的 double write 机制一直有些困惑,如果没有这些机制,是不是在页断裂的情况下数据一定就有问题?如果应用 redo log 或者 wal 是幂等设计的,在刷脏页的过程中,无论怎么 crash,只要支持幂等,是否就无需担心页断裂
1. pg_rewind 功能描述 pg_rewind 是 PostgreSQL 提供的一个工具,在主库故障切换后,用于修复旧主的流复制。PG 主备切换后,流复制的时间线会发生变化,在异步复制场景下,旧主产生的 WAL 日志可能有部分未同步到备库,此时做故障切换,就会导致新的主库丢失一部分数据,而
Copyright © 2020-2023 www.mytecdb.com All Rights Reserved.
PostgreSQL 在很多场景下会启用并行执行计划,创建多个并行工作子进程,提升查询效率。 一个常用的并行表扫描的例子: 从下面的执行计划可以看出,Parallel Seq Scan 并行表扫描,并发工作进程数为 2,最上层的执行计划节点名称为 Gather。
Copyright © 2020-2023 www.mytecdb.com All Rights Reserved.
PostgreSQL psql 工具常用的快捷命令: \l 显示所有数据库 \c 切换当前数据库,相当于mysql的use命令 \d 显示数据库中有哪些表 \d tb_name 显示表tb_name的定义 \d+ 显示更详细的信息 \dt 只显示表 \di 只显示索引 \ds 只显示
pg_ctl 是 PostgreSQL数据库自带的实用工具,具有以下功能: 初始化PostgreSQL数据库实例 启动,停止,重启PostgreSQL数据库服务 查看PostgreSQL数据库服务的状态 让数据库重新读取配置文件 将备库提升为主库 给指定的进程发送信号 Usag
PostgreSQL使用 pg_dump 和 pg_dumpall 进行数据库的逻辑备份,pg_dumpall 是对整个数据库集群进行备份,pg_dump 可以选择一个数据库或者部分表进行备份。 pg_dump 将表结构及数据以SQL语句的形式导出到文件中,恢复数据时,将导出的文件作为输入,执行其
PostgreSQL支持的隔离级别: serializable repeatable read read committed read uncommitted PostgreSQL默认的隔离级别为read committed。 查看当前默认的隔离级别: postgres=# s
随着数据量的快速增长,可伸缩性已经成为数据库领域最热门的话题之一,可伸缩性分为垂直扩展和水平扩展。垂直扩展意味着给已经存在的节点增加更多的硬件资源,以提升单个节点存储和处理更多数据的能力,比如增加更多的CPU,磁盘空间和内存。几乎所有的DBMS引擎通过改进锁/互斥机制和并发性来提高其垂直扩展能力,以
一、PgBouncer简介 PgBouncer是为PostgreSQL数据库提供的一个轻量级连接池工具。PostgreSQL数据库是基于进程的架构,应用每次连接到PG,PG都会创建一个新的进程来为应用服务,服务完成之后,关闭连接,进程被销毁。频繁地创建、销毁进程开销很大,耗费资源。PgBounce
PostgreSQL 中的序列与 Oracle 类似,是一个独立的对象,而 MySQL 的序列是绑定在一张表的字段上的,自增长序列只能用于表的一个字段,且不能被其他表共用,相对来说,PostgreSQL 的序列更加灵活和通用。 本文示例在 PostgreSQL 11.5 上测试。 一、Postg
一、什么是咨询锁? PostgreSQL 支持创建咨询锁(advisory lock),该锁与数据库本身没有关系,其含义由应用来定义,咨询锁能够让 PostgreSQL 变成一个锁服务提供中心,为应用对一些非数据库资源并发访问提供控制。当然,也可以通过 select * from tb where
检测MySQL主从延迟,通常使用MySQL自带的Seconds_Behind_Master,但是这个状态变量反映的是秒级别的复制延迟,无法做到更精确的延迟检测。此外,服务器时间不同步也会导致这个状态变量不能真实反映主从间的复制延迟。下面介绍一个更理想的MySQL主从复制延迟检测工具pt-heartb
安装部署MySQL之后,就可以使用MySQL了。MySQL日常使用主要包括连接数据库,创建数据库,创建表,插入数据,修改数据,删除数据,查询数据等等,下面将介绍MySQL最基本的日常使用命令。 一、连接MySQL 通常使用mysql客户端命令连接到MySQL服务器,如下: mysql -h 1
MySQL实例中可以创建多个数据库,也称之为schema,下面将简单介绍MySQL创建、删除数据库的语法。 一、创建数据库: create database db1; 或者 create schema db2; 如果一个数据库已经存在,创建一个已经存在的数据库时会报错,可以使用if n
MySQL实例中可以创建多个数据库(schema),因此需要选择某一个数据库进行操作,比如建表等,下面将简单介绍如何使用mysql客户端查看当前数据库,切换数据库。 一、查看MySQL实例中有多少个数据库: show databases; 或者 show schemas; 二、选择某个