随笔分类 - PostgreSQL基础
摘要:1. 背景很多初学者会对WAL日志占用多少空间比较疑惑,听网上的一些文章说是由max_wal_size来控制的,但发现很多时候WAL日志空间会超过这个设置的值,不知道为什么? 同时有时会发现WAL日志不清理了,占用空间在不停的增长,然后不知道为什么?看一些网上的文章,发现情况不是网上说的那种情况。中
阅读全文
摘要:pg wget https://ftp.postgresql.org/pub/source/v14.4/postgresql-14.4.tar.gz --no-check-certificateyum install -y gcc xml2 readlinedev* zlib perldev* py
阅读全文
摘要:# SELECT pg_relation_size(20306, 'main') AS main, pg_relation_size(20306, 'fsm') AS fsm, pg_relation_size(20306, 'vm') AS vm, pg_relation_size(20306,
阅读全文
摘要:查看表膨胀 TOP5SELECT current_database() AS db, schemaname, tablename, reltuples::bigint AS tups, relpages::bigint AS pages, otta, ROUND(CASE WHEN otta=0 O
阅读全文
摘要:PostgreSQL 最大的问题就是vacuum,只要PG的实现多版本和UNDO的方式不改变,那么这个话题就会一直继续,到永远。 前面四期讲了autovacuum 的触发条件,源代码,怎么调整参数,优化,今天最后一章,的说说怎么进行监控,并且评定你的autovacuum 的工作是合格的。下面的内容主
阅读全文
摘要:ostgresql 权限详解角色前言PostgreSQL使用角色的概念管理数据库访问权限。根据角色的设置方式,可以将角色视为数据库用户或数据库用户组。角色可以拥有数据库对象(例如,表和函数),并可以将对这些对象的权限分配给其他角色,以控制谁有权访问哪些对象。此外,还可以将角色的成员资格授予另一个角色
阅读全文
摘要:mysql与pg的主键说明 mysql 插入顺序与插入随机测试案例 B+Tree 原理 id顺序的方式插入 id随机的方式插入 Postgresql 堆组织表 CTID Pg的元组及索引原理 Pg与mysql与oracel 问题 mysql 插入顺序与插入随机测试案例 创建了两张表 一张表是按顺序来
阅读全文
摘要:SQL优化主要从三个角度进行:(1)扫描方式;(2)连接方式;(3)连接顺序。 如果解决好这三方面的问题,那么这条SQL的执行效率就基本上是靠谱的。看懂SQL的执行计划的关键也是要首先了解这三方面的基本概念,只有搞清楚了这些基本概念,才能够更好的看懂SQL的执行计划,下面我们分别来学习这些预备知识。
阅读全文
摘要:--格式化保存到 change.sql 脚本 \pset footer \pset t \o change.sql --用户名、nspname、relkind 根据实际需求自行选择 select 'alter table ' || '"' || nsp.nspname || '"' || '.' |
阅读全文
摘要:unrecognized configuration parameter "wal_keep_segments" select name,setting,unit from pg_settings where name like '%wal_keep%';
阅读全文
摘要:根据之前月报的分析,PostgreSQL数据库为了定时清理因为MVCC 引入的垃圾数据,实现了自动清理机制。其中涉及到了两种辅助进程: autovacuum launcher autovacuum worker 其中,autovacuum launcher 主要负责调度autovacuum work
阅读全文
摘要:根据之前月报的分析,PostgreSQL中的MVCC机制(详见月报)同时存储新旧版本的元组,对于经常更新的表来说,会造成表膨胀的情况。为了解决这个问题,PostgreSQL 引入了VACUUM和ANALYZE命令,并且引入了AutoVacuum自动清理。 在PostgreSQL中,AutoVacuu
阅读全文
摘要:背景 最近处理了几起线上实例表膨胀的问题。表膨胀是指表的数据和索引所占文件系统的空间,在有效数据量并未发生大的变化的情况下,不断增大。PG使用过程中需要特别关注这方面,我们来给大家解析一下表膨胀的原因。 表膨胀的直接触发因素是表上的大量更新,如全表的update操作、大量的insert+delete
阅读全文
摘要:postgresql 权限详解角色前言PostgreSQL使用角色的概念管理数据库访问权限。根据角色的设置方式,可以将角色视为数据库用户或数据库用户组。角色可以拥有数据库对象(例如,表和函数),并可以将对这些对象的权限分配给其他角色,以控制谁有权访问哪些对象。此外,还可以将角色的成员资格授予另一个角
阅读全文
摘要:1.全局设置修改配置配置文件 postgres.conf ,一般位置pgsql的data目录下,单位是毫秒,如下设置的是10,000毫秒,相当于10秒钟,即:当运行时间超过10秒钟后会以日志的格式记录下来: log_min_duration_statement=100001然后加载配置: postg
阅读全文
摘要:日志分类 PostgreSQL有3种日志,分别是: 日志目录作用可读性默认状态 pg_log 数据库运行日志 内容可读 默认关闭,需要设置参数启动 pg_xlog WAL 日志,即重做日志 内容一般不具有可读性 强制开启 pg_clog 事务提交日志,记录的是事务的元数据 内容一般不具有可读性 强制
阅读全文
摘要:一、整体架构图 1、共享内存区 A、shared_buffers 共享缓冲区 它表示数据缓冲区中数据块的个数,每个数据块的大小是8KB。 数据缓冲区位于数据库的共享内存中,它越大越好,不能小于128KB。 这个参数只有在启动数据库时,才能被设置。 默认值是128MB。 推荐值:1/4 主机物理内存。
阅读全文
摘要:PG 相关系统日志参数 最近值班的时候遇到pg的日志问题,顺带梳理一下 pg的系统日志参数。 默认情况下,很过日志参数是缺省值,需要查看详细日志信息,必须对相关参数进行修改。 logging_collector = on/off 是否将日志重定向至文件中,默认是off, 修改该参数之后后,需要重启D
阅读全文
摘要:执行计划存储 如果同样的SQL要执行很多遍,且每次都是同样的执行计划、每次都发生硬解析,则会消耗大量时间。类似于Oracle存放执行计划的library cache,PG也有一个类似的概念——plan_cache。但实际上,PG提供的是预备语言(preparedstatement),它要求应用给这个
阅读全文
摘要:今天在做的一个项目,由于数据量很大,直接连接npgsql,没有用框架,然后发现数据库连接超额奔溃了,用语句查询了一下: select * from pg_stat_activity; 查询正在运行的连接 select max_conn-now_conn as resi_conn from (sele
阅读全文