
postgresql basic
文章平均质量分 62
数据库人生
专注于数据库
PostgreSQL;Oracle 11G OCA、OCP;OceanBase V2 OBCA、OBCP
展开
-
postgresql 数据库中批量创建索引
【代码】postgresql 数据库中批量创建索引。原创 2024-08-30 16:33:16 · 265 阅读 · 1 评论 -
zero_damaged_pages 隐含参数,处理磁盘页损坏(先占位)
os: centos 7.6db: postgresql 12版本# cat /etc/centos-releaseCentOS Linux release 7.6.1810 (Core) # # yum list installed |grep -i postgrepostgresql12.x86_64 12.7-1PGDG.rhel7 @pgdg12 postgresql12-contrib.x86_64原创 2023-11-17 12:16:08 · 471 阅读 · 0 评论 -
postgresql 15 的 postgresql-15.service 文件
【代码】postgresql 15 的 postgresql-15.service 文件。原创 2023-07-26 09:54:39 · 341 阅读 · 0 评论 -
postgresql 14 的 postgresql-14.service 文件
【代码】postgresql 14 的 postgresql-14.service 文件。原创 2023-07-26 09:32:15 · 258 阅读 · 0 评论 -
Postgresql14对逻辑复制中大事物的增强
逻辑复制转载 2023-01-10 19:52:56 · 210 阅读 · 0 评论 -
PG中MVCC的实现原理
postgresql 的 mvcc转载 2022-11-01 20:56:07 · 715 阅读 · 0 评论 -
一次近乎完美的PostgreSQL版本大升级实践
作者 | Jose Finotto译者 | 马可薇策划 | 万佳2020 年 5 月,我们与 OnGres 合作,对 GitLab 上的 Postgres 集群进行版本大更新,从 9.6 版本升级到 11 版本。升级全部在维护窗口内运行,没有丝毫差错;更新中所有涉及的内容、计划、测试,以及全流程自动化,全部进行拆包,只为实现一次近乎完美的 PostgreSQL 升级。本次版本更新,我们面临的 最大难题在于如何利用一个规划完善的 pg_upgrade,方便且高效地对整体项目进行重要版本升级。为此,我们转载 2022-02-25 11:04:43 · 2149 阅读 · 0 评论 -
Oracle、MySQL、PG是如何处理数据库“半页写”的问题的?
数据库“断页”是个很有意思的话题,目前任何数据库应该都绕不过去。我们知道数据库的块大小一般是8k、16k、32k,而操作系统块大小是4k,那么在数据库刷内存中的数据页到磁盘上的时候,就有可能中途遭遇类似操作系统异常断电而导致数据页部分写的情况,进而造成数据块损坏,数据块损坏对于某些数据库是致命的,可能导致数据库无法启动。既然对于断页问题数据库都可能遇到,那么再来看看主流数据库是如何避免发生断页的。先看看mysql,innodb的page size一般是16k,innodb的数据行发生变更时,将buffer转载 2022-02-25 10:51:41 · 424 阅读 · 0 评论 -
PostgreSQL的MVCC vs InnoDB的MVCC
任何一个数据库最主要功能之一是可扩展。如果不删除彼此,则尽可能较少锁竞争从而达到这个目的。由于read、write、update、delete是数据库中最主要且频繁进行的操作,所以并发执行这些操作时不被阻塞则显得非常重要。为了达到这种目的,大部分数据库使用多版本并发控制(Multi-Version Concurrency Control)这种并发模型。这种模型能够将竞争减少到最低限度。MVCC是什么Multi Version Concurrency Control ( MVCC)是这样的一种算法:通过.转载 2022-02-25 10:30:50 · 261 阅读 · 0 评论 -
POSTGRESQL 的被攻击点 与 反击
如同没有十全十美的人,一个产品哪里有十全十美的,不怕有缺点,就怕没认知。那么如果从“处女座” 挑剔的角度来看POSTGRESQL 那么到底怎么能从“鸡蛋里面”挑挑骨头,让PG 下不来台。攻击—问题1 :多版本控制方式垃圾众所周知,postgresql 的MVCC多版本控制以及事务回滚段,并非用 ORACLE ,MYSQL的集中式的方式来进行解决,而是通过在每个表中的每行通过保存多个行版本来解决,导致一个表会存储很多行版本的数据,最终导致表膨胀。同时一个update 相当于 insert ,delete操转载 2022-02-25 10:13:32 · 479 阅读 · 0 评论 -
PostgreSQL 实现定时任务的四种方法
文章转载自公众号:SQL编程思想数据库定时任务可以用于实现定期的备份、统计信息采集、数据汇总、数据清理与优化等。PostgreSQL 没有提供类似 Oracle、MySQL 以及 Microsoft SQL Sever 的内置任务调度功能,因此本文给大家介绍一下 PostgreSQL 数据库中实现定时任务的 4 种方法。方法一:操作系统定时任务Linux 定时任务(crontab)或者 Windows 任务计划程序(Task Scheduler)为我们提供了一个实现定时任务传统的方法。以 cronta转载 2022-01-26 14:24:39 · 16509 阅读 · 1 评论 -
pg_stat_database 视图 tup_returned、tup_fetched 的含义
os: centos 7.6.1810db: postgresql 10版本# cat /etc/centos-releaseCentOS Linux release 7.6.1810 (Core) # # yum list installed|grep -i postgrepostgresql10.x86_64 10.18-1PGDG.rhel7 @pgdg10 postgresql10-contrib.x86_64原创 2021-09-23 14:52:13 · 912 阅读 · 0 评论 -
硬核-深度剖析PostgreSQL数据库“冻结炸弹”原理机制
冻结(FREEZE),相信熟悉pg的人都对这个词不陌生,因为冻结过程对数据库的资源消耗极大,影响业务的正常运行,所以也被称为“冻结炸弹”。网上关于冻结的文章也比较多,本文就系统性的介绍一下冻结过程的原理以及如何预防。事务号回卷问题先介绍下事务号回卷的问题,这也是为什么需要冻结的根本原因。我们知道,postgresql数据库使用32位事务号,最大容纳42亿左右的事务号,事务号是循环使用的,当事务号耗尽后又会从3开始循环使用。事务环被分为两个半圆,当前事务号过去的21亿事务属于过去的事务号,当前事务号往前的转载 2021-08-16 19:02:32 · 1427 阅读 · 0 评论 -
PostgreSQL事务ID回卷
1. 事务id回卷在postgresql中,由于没有像oracle、mysql那样的undo来实现多版本并发控制,而是当执行dml操作时在表上创建新行,并在每行中用额外的列(xmin,xmax)来记录事务号(xmin为insert或回滚时的事务号、xmax为update或delete的事务号,注意xmin还会记录回滚时的事务号),以此实现多版本并发控制,当然基于此也会导致postgresql中一个比较常见的问题——表膨胀。当前事务只能看到比表上xmin事务号小的记录,txid(事务id)的最大值为32位转载 2021-08-16 18:52:49 · 2434 阅读 · 0 评论 -
ERROR: found xmin ...... from before relfrozenxid .... ( vacuum bug导致 age 无法降低 )
os: centos 7.6db: postgresql 10.3数据库的日志里记录了一个 ERROR 日志关键信息如下"ERROR",XX001, "found xmin 2365372973 from before relfrozenxid 548",,,,,"automatic vacuum of table ""template1.pg_catalog.pg_authid"""发现出现在一批特定的版本里https://git.postgresql.org/gitweb/?p=post原创 2021-08-11 19:27:50 · 1125 阅读 · 0 评论 -
postgresql 编译选项 --with-uuid=e2fs、--with-uuid=ossp 的理解
postgresql 的 rpm 包使用的是 ‘–with-uuid=e2fs’postgresql 源码 configure 的帮助选项有 uuid 的几个选项,有啥区别?# ./configure --help --with-uuid=LIB build contrib/uuid-ossp using LIB (bsd,e2fs,ossp) --with-ossp-uuid obsolete spelling of --with-uuid=ossp# y原创 2021-07-08 15:31:46 · 1149 阅读 · 0 评论 -
3年部署3000套PG实例的架构设计与踩坑经验
https://mp.weixin.qq.com/s/fvAd5PdeDHCyC1mUXNKXhA陈华军老师的博文,欢迎点击上面的原文地址。作者介绍陈华军 十年以上数据库相关工作经验。PostgreSQL中文社区核心组成员,主要负责PostgreSQL中文手册翻译项目的维护。PostgreSQL作为一款许可开放,功能齐备的开源关系数据库,在当前提倡自主可控的大背景下,正受到越来越多企业的重视。苏宁从2017年开始引入PostgreSQL,到2019年双11前3年间已上线3000多PostgreSQL转载 2021-06-29 20:14:22 · 790 阅读 · 0 评论 -
pg_hba.conf 中 md5 和 scram-sha-256 的区别
db: postgresql 11auth-method指定当一个连接匹配这个记录时,要使用的认证方法。下面对可能的选择做了概述,详见第 20.3 节。trust无条件地允许连接。这种方法允许任何可以与PostgreSQL数据库服务器连接的用户以他们期望的任意PostgreSQL数据库用户身份登入,而不需要口令或者其他任何认证。详见第 20.4 节。reject无条件地拒绝连接。这有助于从一个组中“过滤出”特定主机,例如一个reject行可以阻塞一个特定的主机连接,而后面一行允许一个特定网络中的原创 2021-06-29 19:50:43 · 4747 阅读 · 0 评论 -
systemctl start postgresql-10 第一次启动报错
版本# cat /etc/centos-releaseCentOS Linux release 7.6.1810 (Core)# yum list installed |grep -i postgresqlpostgresql10.x86_64 10.17-1PGDG.rhel7 @pgdg10 postgresql10-contrib.x86_64 10.17-1PGDG.rhel7原创 2021-06-22 10:01:16 · 2705 阅读 · 0 评论 -
PostgreSQL与MySQL 分析对比
概述在几个流行的数据库中,我首先接触到的是MySQL,随着工作发展,接触到越来越多的是PostgreSQL数据库。这两个十分流行的开源数据库。在这之后,我就会经常和一些朋友进行讨论:MySQL和PostgreSQL两者之间到底有什么异同点呢?今天我就来说一说ACID的遵从性(ACID Compliance )对比PostgreSQL:完全遵从ACID,确保满足所有ACID的需求MySQL:只有InnoDB等少量存储引擎遵从ACID原子性(Atomic)Atomic是指事务包含的所有操作要么转载 2021-04-12 11:49:55 · 550 阅读 · 0 评论 -
PostgreSQL进程结构
http://www.pgsql.tech/article_101_100000991、简介本文简单的介绍了 PostgreSQL 的主要进程类型与功能。2、PostgreSQL进程分为主进程与辅助进程。2.1、主进程:PostMaster进程是整个数据库实例的总控进程,负责启动关闭该数据实例。2.2、辅助进程:SysLogger(系统日志)进程BgWriter(后台写)进程WALWrite(预写式日志)进程PgArch(归档)进程AutoVacuum(系统自动清理)进程Pgstat转载 2021-04-12 11:32:08 · 778 阅读 · 0 评论 -
空闲postgres进程为什么占用大量内存?
我试图找出为什么〜30个空闲的postgres进程在正常使用后占用这么多的进程特定的内存.我使用Postgres 9.3.1和CentOS版本6.3(Final).使用top,我可以看到很多postgres连接使用高达300mb(平均〜200mb)的非共享(RES – SHR)内存:PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 3534 postgres 20 0 2330m 1.4g 1.1g S 0.0转载 2021-02-22 23:12:48 · 3819 阅读 · 0 评论 -
postgresql 数据库的事务隔离级别
db: postgresql 12在PostgreSQL中,你可以请求四种标准事务隔离级别中的任意一种,但是内部只实现了三种不同的隔离级别,即 PostgreSQL 的读未提交模式的行为和读已提交相同。这是因为把标准隔离级别映射到 PostgreSQL 的多版本并发控制架构的唯一合理的方法。该表格也显示 PostgreSQL 的可重复读实现不允许幻读。而 SQL 标准允许更严格的行为:四种隔离级别只定义了哪种现像不能发生,但是没有定义哪种现像必须发生。可用的隔离级别的行为在下面的小节中详细描述。参考转载 2020-11-04 14:12:18 · 1004 阅读 · 1 评论 -
数据库事务隔离级别 不可重复读与幻读的区别
精炼解释:不可重复读的重点是修改:同样的条件, 你读取过的数据, 再次读取出来发现值不一样了幻读的重点在于新增或者删除同样的条件, 第1次和第2次读出来的记录数不一样当然, 从总的结果来看, 似乎两者都表现为两次读取的结果不一致.但如果你从控制的角度来看, 两者的区别就比较大对于前者, 只需要锁住满足条件的记录对于后者, 要锁住满足条件及其相近的记录详细说明:“不可重复读” 是指在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据。那么,在第一个事务中的两转载 2020-11-04 13:54:52 · 517 阅读 · 0 评论 -
vacuum 什么情况下归还磁盘可用空间?
归还磁盘空间 通常,管理员会感到惊讶,使用 vacuum 没有减少磁盘空间的使用。只有一种情况 vacuum 实际可以减少表的大小。如果表的最后一个数据页是空的,完全没有行(数据),那么 vacuum 可以对这个表添加独占锁,执行特定的磁盘释放进程。它会从末尾开始反向扫描,将发现的空闲空间返回给操作系统,直到它发现非空的数据页。原创 2020-10-28 09:01:41 · 597 阅读 · 0 评论 -
postgresql 13 数据库 sequence 的 maxvalue 最大值是多少?
os: 7.8.2003db: postgresql 13.0版本# cat /etc/centos-releaseCentOS Linux release 7.8.2003 (Core)# su - postgresLast login: Thu Oct 15 09:59:33 CST 2020 on pts/1ppostgres@nodepg13-> psql -c "select version();"原创 2020-10-15 15:21:40 · 3624 阅读 · 0 评论 -
postgresql 13 数据库启动时的一些进程
os: centos 7.8db: postgresql 13.0版本# cat /etc/centos-releaseCentOS Linux release 7.8.2003 (Core)# su - postgresLast login: Tue Oct 13 15:32:19 CST 2020 on pts/0$ $ $ psql -c "select version();" vers原创 2020-10-14 09:24:03 · 758 阅读 · 0 评论 -
postgresql 11.1 源码 /src/tutorial/syscat.source
------------------------------------------------------------------------------- syscat.sql--- sample queries to the system catalogs------ Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group-- Portions Copyright (c) 1994, Regents原创 2020-10-10 11:26:16 · 333 阅读 · 0 评论 -
postgresql 数据库 sequence 的 cache 1、 cache 100、 cache 1000、cache 10000 的对比
os: centos 7.8.2003db: postgresql 13.0版本# cat /etc/centos-releaseCentOS Linux release 7.8.2003 (Core)# # su - postgres$ psql -c "select version();" version原创 2020-10-09 11:08:20 · 1839 阅读 · 1 评论 -
postgresql 13 的 postgresql-13.service 文件
os: centos 7.4db: postgresql 13.0# cat /usr/lib/systemd/system/postgresql-13.service# It's not recommended to modify this file in-place, because it will be# overwritten during package upgrades. It is recommended to use systemd# "dropin" feature; i.原创 2020-09-25 09:41:22 · 1196 阅读 · 0 评论 -
PostgreSQL 俄罗斯发行版 Postgres Pro 的特性
https://blog.youkuaiyun.com/weixin_34235135/article/details/90368136?utm_medium=distribute.pc_relevant.none-task-blog-OPENSEARCH-2.add_param_isCf&depth_1-utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-2.add_param_isCf转载 2020-09-23 21:03:14 · 670 阅读 · 0 评论 -
database “template0“ is not currently accepting connections
template0 数据库默认是不允许登录的,做 vacuumdb 减少 age 时报错。postgres=# select datfrozenxid,datname,age(datfrozenxid),txid_current() from pg_database; datfrozenxid | datname | age | txid_current --------------+--------------------+--------+--------------原创 2020-09-09 10:04:40 · 2270 阅读 · 0 评论 -
hexdump -C
os: centos 7.4.1708db: postgresql 10.11版本# cat /etc/centos-releaseCentOS Linux release 7.4.1708 (Core) # # # yum list installed |grep -i postgresqlpostgresql11.x86_64 11.8-1PGDG.rhel7 @pgdg11 postgresql11-contrib原创 2020-06-16 19:22:58 · 849 阅读 · 0 评论 -
postgresql 数据库的单用户模式(single mode)
os: centos 7.4db: postgresql 10.10版本# cat /etc/centos-releaseCentOS Linux release 7.4.1708 (Core) # # su - postgresLast login: Sat Oct 26 22:55:25 CST 2019 on pts/0$$ psql -c "select version(...原创 2020-03-18 17:01:08 · 2982 阅读 · 0 评论 -
数据库连接池的大小
<<技术经理:求求你,别再乱改数据库连接池的大小了!>>转载 2020-01-07 22:44:00 · 203 阅读 · 0 评论 -
pg_hba.conf
pg_hba.conf 的默认内容如下:# TYPE DATABASE USER ADDRESS METHOD# "local" is for Unix domain socket connections onlylocal all all ...原创 2019-10-21 11:16:33 · 418 阅读 · 0 评论 -
一个简单sql,记住高级的,可惜忘记了初级的
需求是找出每个部门薪水最高的三个职员。dep 部门 emp 人员 sal 薪水基本处理方式with tmp_t0 as ( select '开发部' as dep,'张一' as emp, 1000::int8 as sal union all select '开发部' as dep,'张二' as emp, 2000::int8 as sal union all se...原创 2018-08-01 14:36:38 · 161 阅读 · 0 评论 -
postgresql 的回归测试初探
os: centos 7.4 postgresql: 10.4Regression Tests 回归测试,是一个用于验证PostgreSQL在你的系统上是否按照开发人员设想的那样运行的测试套件。看来这个回归测试时必须的开始回归测试在 make world 执行完之后,make install-world 执行前,运行 make check 进行回归测试。 如果是已经安装好的p...原创 2018-07-26 11:12:42 · 1025 阅读 · 0 评论 -
POSTGRESQL 11 BETA 1 RELEASED!
参考 https://www.postgresql.org/about/news/1855/转载 2018-06-06 15:56:11 · 513 阅读 · 0 评论 -
postgresql 10.x 的命令 pg_test_fsync
pg_test_fsync 是测试 wal_sync_method设置哪个值最快,还可以在发生认定的 I/O 问题时提供诊断信息。 pg_test_fsync为 wal_sync_method报告以微秒计的平均文件同步操作时间, 也能被用来提示用于优化commit_delay值的方法。# lsb_release -aLSB Version: :base-4.0-amd64:bas...原创 2018-04-13 11:39:16 · 1055 阅读 · 0 评论