暂无图片
暂无图片
暂无图片
Postgresql
2024-01-21 20:41:18 3195
简介:Postgresql相关的技术文档
Postgresql物理目录结构
pgclog/包含事务提交状态的数据。pgsnapshots/存放export的快照,函数pgexportsnapshot创建的快照存放于此目录。可以查询pgdatabase表获取数据库的oid,数据库对应的目录为$PGDATA/base/oid.
江湖小虾米
2024-01-24
360 浏览
Postgresql之toast
如果一行太长一个页存不下时,pg使用了一个特殊的机制称作TOAST。一般情况下,一个数据页最少要存放4行数据,因此一行如果超过了4分之1的页大小,大约2000字节,就必须使用toast机制处理行,可以使用表级别的存储参数toasttupletarget修改toast的阈值。如果经过上面的处理行还不满足要求,按照external和extended策略处理剩余的属性到toast表。如果还是不满足要求,尝试使用main策略压缩属性,保持属性留在原页。
江湖小虾米
2024-01-23
427 浏览
Postgresql快照和行可见性
每个页中相同的行可能有多个版本,每个事务只能看到其中的一个版本,为保证隔离性,每个事务都有自己的快照版本。rr隔离级别下,快照开始于事务的第一个语句,直到事务结束。行版本的可见性由tuple头上的xmin和xmax字段决定。在一个快照中tuple是否可见具体包括xmin被设置,xmax未被设置,或者说事务提交时间是在快照创建之前。事务的开始可以通过xid确定,但是事务的结束时间没有地方记录,因此无法跟踪。只有事务的当前状态可以通过共享内存中的信息获取,ProcArray包含所有活动的会话和和它们的事务信息。所有小于此ID的事务要么是commit的,要么是abort的。xmax快照的上边界,代表最近提交的事务ID1。所有大于此ID的事务要么是在运行的,要么是不存在的。
江湖小虾米
2024-01-22
265 浏览
Postgresql逻辑结构之表空间(三)
表空间是物理上存储数据的地方,在操作系统表现上就是一个目录。一个数据库的对象可以存放于多个表空间,一个表空间也可以存放多个数据库的对象。每个数据库都有一个表空间,如果未明确指定,默认为pgdefault,对应于操作系统上的PGDATA/base目录。pgglobal表空间用于存放系统目录中全局对象,全局对象不属于任何一个数据库,属于整个集群,例如pgdatabase,对应操作系统上的global目录。
江湖小虾米
2024-01-21
126 浏览
Postgresql逻辑结构之默认数据库(二)
在安装完pg,初始化完成后,默认会创建三个数据库,template0、template1、postgres。template0模板数据库,用于从逻辑备份中恢复或创建不同编码的数据库,任何时候都不应该修改此数据库内容。如果想让自建的数据库默认有某个对象,可以在此数据库中创建对象,自建数据库就会继承创建的对象。postgres默认的管理数据库,数据字典存放于此数据库中。
江湖小虾米
2024-01-21
393 浏览
Postgresql逻辑结构之database和schema(一)
在逻辑上一个实例或集群由多个database组成,一个数据库包含多个schema,一个schema包含很多数据对象,如表、索引、视图等。database之间是隔离的,即一个数据库对象不能访问另外一个数据库中的对象。要访问其他数据库中的对象需要使用插件如DBLINK。
江湖小虾米
2024-01-21
874 浏览
Postgresql逻辑结构之schema和表(四)
schame是位于database之下容器,用来组织数据库对象,如表、视图、索引等,表、视图等必须位于某一个schema下。database之间是无法互相访问,但同一个database下的不同schame的对象是可以互相访问。每一个数据库中都存在一个名称为public的schema,public用来存放在创建对象时未明确指定schema的对象,public的属主为postgres。变量的值是schema的列表,"user"表示与用户同名的schame,public为publicschema。pg在查找对象时就是按照searchpath中定义的schema顺序查找的。现在列表中的第一个schema即与用户同名的schame中查找对象是否存在,如果未找到继续查找第二个schema,找到即停止搜索。postgres|Superuser,Createrole,CreateDB,Replication,BypassRLS|{}
 江湖小虾米 
2024-01-21
239 浏览
Postgresql逻辑结构之数据页(五)
数据页是pg中最小的IO单元,默认大小为8K。数据页小只能在编译安装的时候通过参数–withblocksize指定,一但编译完成后无法修改。每个数据页都有一个编号,编号从0开始。一个数据页由pag
 江湖小虾米 
2024-01-21
162 浏览
Postgresql中的数据行tuple
infomask提供一组定义版本属性的信息位。ctid行版本在其表中的物理位置,由块号和相对位置的元组组成。注意尽管ctid可以被用来非常快速地定位行版本,但是一个行的ctid会在被更新或者被VACUUMFULL移动时改变。因此,ctid不能作为一个长期行标识符。应使用主键来标识逻辑行。tableoid|xmin|xmax|cmin|xmax|ctid|id|s.24603|784|0|0|0|(0,1)|1|alice.创建一个示例表和pageinspect扩展,pageinspect可以分析页内部结构。ctid|state|xmin|xmax|xmincommitted|xminaborted|xmaxcommitted|xmaxaborted
 江湖小虾米 
2024-01-21
349 浏览
专栏作者
暂无图片
近期活动
墨天轮数据库沙龙(行业洞察系列)-轨交核心领域应用实践
05/08 19:30 1人报名
搜索服务统一治理(跨引擎多个集群监控管理、流量管控、服务编排)【Workshop 第一期 -北京站】
05/15 13:30 0人报名
数据库服务团队技术分享第十四期-日常运维中的技术决策(安全生产系列)
05/15 20:00 0人报名