名词解释
应用场景
推荐的腾讯云产品
产品介绍链接
PostgreSQL是最像Oracle的开源数据库,我们可以拿Oracle来比较学习它的体系结构,比较容易理解。PostgreSQL的主要结构如下:
OID 是 PostgreSQL 内部用于标识数据库对象(数据库,表**,视图,**存储过程等等)的标识符,用4个字节的无符号整数表示。它是PostgreSQL大部分系统表的主键。
由于系统表中OID全部都是原User OID与新User OID对不上,如果将系统表对应的OID全部更新为新的User OID工作量比较大,所以选择根据原User OID 重建pg_authid表
PG中的表由一个relfilenode值,即磁盘上表的文件名(除了外表和分区表)。通常情况下可以在Pg_class表找到这个值,然而也会查考一些表的relfilenode为0.本文介绍这些表relfilenode的内部处理流程。
脚本准备 创建表的脚本 CREATE DATABASE sampledb OWNER perrynzhou; GRANT ALL PRIVILEGES ON DATABASE sampledb TO perrynzhou; 数据登录脚本 psql -h 127.0.0.1 -d sampledb sampledb=# CREATE TABLE stu_xx_01(NAME TEXT NOT NULL,AGE INT NOT NULL); 表创建分析 表创建过程概述 服务进程接受SQ
PostgreSQL从小白到专家,是从入门逐渐能力提升的一个系列教程,内容包括对PG基础的认知、包括安装使用、包括角色权限、包括维护管理、、等内容,希望对热爱PG、学习PG的同学们有帮助,欢迎持续关注CUUG PG技术大讲堂。
本文主要介绍pg_dump、pg_dumpall、copy、pg_basebackup的使用。
对于表的DDL时间,可以进入对应的数据库中,然后查询视图pg_stat_operations、pg_stat_last_shoperation、pg_stat_operations、pg_stat_partition_operations 都可以。
问题 [postgres@pg03 ~]$ psql -h 192.168.1.3 -U postgres -d tdb psql: FATAL: cache lookup failed for access method 403 使用客户端新建连接访问数据库时出现报错,无法建立连接,而访问其他数据库正常。 根本原因 postgresql后端服务进程在初始化阶段加载系统字典表时,由于系统字典表pg_am损坏导致加载失败,初始化失败报错退出。 诊断步骤 PG后端服务进程在被fork出来之后会进行如下函数
环境信息 PostgreSQL 11.5 问题 客户反馈临时表创建耗时较长,平均耗时在5ms以上,相对于之前测试阶段的创建时间有明显变慢。 根本原因 postgresql在创建表时,会预估当前表是否存在超长记录的可能,如果使用了text,varchar(555)等超大字端,会在创建表同时创建toast表及toast索引表,同时多字段会写入系统表记录,这将增大创建表的开销。 诊断步骤 psql postgres=# select count(*) from pg_class; count -------
openGauss/MogDB数据库里bytea二进制类型受segment size编译参数限制,默认不能超过1GB,如果字段存储数据超过1GB可以使用lo(Large Object)扩展类型。
利用数据多活同步mc.public.test_repl到postgres.public.test_repl的数据。
本文描述问题及解决方法同样适用于 腾讯云 云数据仓库 PostgreSQL(CDWPG)。
墨墨导读:本文介绍了Oracle和PostgreSQL控制文件基本内容,对如何重建PostgreSQL控制文件进行了详细描述并进行了恢复测试。
PostgreSQL数据库的进程可以分为三类:后台进程、后端进程或叫服务器进程、客户端进程或用户进程。
我其实是想郑重其事的回答以下在上个礼拜分享会分享后,一个人最后对我的一个问题,问题是, PG 和 MYSQL 到底那个是 NO.1 ,当时我的语气不是很好,因为我觉得很无聊,在此表示道歉,但观点我是不变的。
在postgresql11之前,为表增加一个包含非空默认值的字段,将会导致表重写,为每一行添加该字段,并填充默认值。如果该表在增加字段前非常大,那么将会非常耗时。
如果阅读过手册一定听过postgresql cluster的概念,第一次听到这个概念可能都会有一些困惑。cluster在安装数据库时,由initdb工具生成,initdb后产生的pgdata文件夹可以理解为cluster的物理存储结构。数据库启动、停止时pg_ctl -D参数指定的文件夹即cluster文件夹,所以一个PG Server可以运行在一个PG Cluster上。
腾讯云 云数据仓库 PostgreSQL(Cloud Data Warehouse PostgreSQL)(以下我们简称CDWPG)为企业提供简单、快速、经济高效的 PB 级云端数据仓库解决方案。云数据仓库兼容 Greenplum 开源数据仓库,是一种基于 MPP(大规模并行处理)架构的数仓服务。借助于该产品,可以使用丰富的 PostgreSQL 开源生态工具,实现对云数据仓库中海量数据的即席查询分析、ETL 处理及可视化探索;还可以借助云端数据无缝集成特性,轻松分析位于 COS、TencentDB、ES 等数据引擎上的 PB 级数据。
在数据库中对象与对象之间存在一定的依赖关系,例如继承表之间的依赖,视图与基表的依赖,主外键的依赖,序列的依赖等等。
开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, Oceanbase, Sql Server等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共1720人左右 1 + 2 + 3 + 4+5) 另欢迎 OpenGauss GAUSSDB的技术人员加入
一般实现数据库的并发会采用三种方式,分别是多版本并发控制(MVCC),严格两阶段锁(S2PL),乐观并发控制(OCC).在MVCC中,每个更新操作都会创建新的一个数据版本,并保留旧版本。当事务读取数据对象时候,系统会根据一定的策略选择一个数据版本读取,这样读写都不会互相干扰。基于S2PL的数据库系统在写操作发生时会阻塞相应对象上的读操作,因为写入者获得了操作对象的互斥锁。PostgreSQL采用了基于MVCC的变体,叫做快照隔离级别(SI) 目前Oracle数据使用undo来实现快照隔离级别。当新数据写入
PostgreSQL天然集群,多个集群可以组成集簇,有点类似军队的连、团、旅这样的组织规则。对于我们日常学习使用的单节点则是单个集簇单个集群,自己就是集群。
不同的数据库表空间有不同的定义: 在 postgres 中,表空间 允许在文件系统中定义数据库对象存储的位置,实质上就是指定了一个目录。 与数据库的关系 在 postgres 中,一个表空间可以让多个数据库使用,而一个数据库也可以使用多个表空间,属于“多对多”的关系; 在 oracle 中,一个表空间只属于一个数据库,而一个数据库可以使用多个表空间,属于“一对多”的关系。
《Postgresql 内幕探索》读书笔记 - 第一章:集簇、表空间、元组 引言 个人建议本章节自己搭建一个Postgresql数据库边实战边阅读更容易理解。 思维导图 图片比较大,这里贴出xmind
将文件分成小于2KB大小的hex在上传,在9.6版本中切割必须等于2KB才能上传成功。先创建一个OID作为写入对象,然后通过0,1,2,3……分片上传,最后倒入/tmp目录下并删除OID,命令执行:
好长时间不进行研究了,最近被突发的问题想到了INDEX 的问题,随机想到数据和INDEX 存储在一起会怎样,我们将索引和数据进行分离后,会不会对数据库的性能有优化的可能。
墨墨导读:最近被问到PG在线扩容的问题,本文整理了整个过程,之前写过一篇文章,供大家参考:《PosgreSQL三种表空间使用方式》https://www.modb.pro/db/14119。
我目前了解的PG插件大约有两种,一种是利用hook,另一种是建立C函数,然后在数据库中进行关联。PG本身就是最好的老师,大家有兴趣可以看一下contrib目录下的插件。 下面将对两种方式进行介绍: 1、利用hook建立插件,hook是PG中可以对PG运行机制进行修改的一种方式,大家可以看一下我之前对PG hook的介绍: a.在contrib目录下建立brother目录,建立brother.c文件和Makefile文件。具体内容见下: brother.c
PostgreSQL 可以说是目前功能最强大、特性最丰富和结构最复杂的开源数据库管理系统,其中有些特性甚至连商业数据库都不具备。这个起源于加州大学伯克利分校的数据库,现已成为一项国际开发项目,并且拥有广泛的用户群,尤其是在海外,目前国内使用者也越来越多。
本文主要针对下面问题详述PG的共享内存:PG中需要给共享内存分配多少内存?为什么?
ref: https://zhuanlan.zhihu.com/p/665042157 系列
近期同事在讨论如何在PostgreSQL中一张大表,添加一个带有not null属性的,且具有缺省值的字段,并且要求在秒级完成。 因为此,有了以下的实验记录: 首先我们是在PostgreSQL 10下做的实验: postgres=# select version(); version ---------------
基本介绍 什么是PostgreSQL? PosgreSQL是一个 开源、对象关系的数据库系统。目前可以运行在Linux/Unix/Windows平台。支持ACID,内置INTEGER/NUMBERIC/BOOLEAN/CHAR/VARCHAR/DATE/INTERVAL/TIMESTAMP/binary larget objects等数据结构 PostgreSQL有些限制? 图片 PostgreSQL有哪些核心功能? MVCC PITR 时间点恢复 独立表空间和异步复制 Nested 事务和online
参考: http://postgres.cn/docs/12/catalog-pg-class.html http://postgres.cn/docs/12/catalog-pg-description.html http://postgres.cn/docs/12/sql-comment.html
ACID中的C即一致性在PG内部使用MVCC机制来保证。MVCC多版本并发控制为数据加上时间戳,读写需要额外的根据自身时间戳与数据时间戳对比,按照既定的规则可以知道这条数据对当前的SQL是否可见。MVCC避免了传统的锁方法,将锁竞争最小化来获得更高的性能。
博客 PostgreSQL的Page分析记录 有过对page的 大体介绍,可以参看之前的blog,下面主要通过插件 pageinspect 向大家进行介绍。 在此之前需要了解的名词: page,物理文件的单位,默认大小为8K。 tuple,PG中物理行。 xid,事务号,执行操作时的顺序id。 pageinspect里边有三个函数是本文用到的,他们分别是: a.get_raw
注意,这个不能获取到schema和database的归属情况,只能获取到表和序列的objectowner的情况
在PG里面查看表结构,不如mysql那样show create table xx 这样方便。
1、aclmask遍历acl信息中,第二轮查到了{ai_grantee = 16385, ai_grantor = 16384, ai_privs = 2}
本期是通过PYTHON 来对逻辑复制中的配置参数,publication 定义, 打印不适合进行逻辑复制的表,打印没有在使用的复制槽,另外包含当前发布端和接收端两边的LSN对比。
前面一节说到,在 Postgres 的 VFD 机制之上,我们可以避开打开文件数量的系统限制,通过 VFD 可以进行打开、读写、关闭、删除文件等操作,简单来说就是 VFD 为我们提供了一个抽象,屏蔽了操作系统文件描述符的接口,后续我们对文件的 open、close,以及 CRUD 操作都在 VFD 的基础之上。
B-tree索引适合用于存储排序的数据。对于这种数据类型需要定义大于、大于等于、小于、小于等于操作符。
PG 最近的使用中,发现这个数据库确确实实是一个无底洞,东西太多了,但学习一样东西都是通过主干和分支的方式来学习,后续的学习其实有的时候是靠自觉和运气。
领取专属 10元无门槛券
手把手带您无忧上云