首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Postgres 源码学习 2—Postgres 的 VFD 机制

    操作系统中的文件 数据库的本质其实就是用来存储数据的,所以免不了和文件系统、存储进行交互,万丈高楼平地起,存储一般是一个数据库的最底层,Postgres 在存储的文件管理方面也有很多的设计与抽象。...在操作系统层面,提供了一些文件操作相关的系统调用(fopen、fclose、fsync 等),我们作为上层使用者,可以直接通过 C 语言库进行调用即可(Postgres 使用 C 语言编写)。...Postgres 的 VFD 作用 Postgres 数据库在运行的过程当中,可能会打开非常多的文件,比如数据表对应的文件,元数据表文件,以及一些在 SQL 运行时打开的临时文件,例如排序、哈希表所需的文件...所以有非常大的概率超过单个进程打开文件数量的限制,为了解决这个问题,Postgres 设计了 VFD(虚拟文件描述符)机制,主要是将实际的操作系统文件描述符维护到一个 LRU 缓存中,通过切换打开的方式...通过这种方式,Postgres 可以打开远超过系统和进程限制的文件数量,是一个非常精妙的设计。

    16810

    Postgres 源码学习 3—Postgres 存储管理器

    前面一节说到,在 Postgres 的 VFD 机制之上,我们可以避开打开文件数量的系统限制,通过 VFD 可以进行打开、读写、关闭、删除文件等操作,简单来说就是 VFD 为我们提供了一个抽象,屏蔽了操作系统文件描述符的接口...在 Postgres 的数据目录中,表文件的存储格式为 base//。...所以在 Postgres 数据目录的 base 目录下,就会有对应的 Database 目录,目录名称就是 Oid: 我在当前数据库中有一个表,其名为 articles,我们可以通过 pg_class...Changing RELSEG_SIZE requires an initdb. */ #define RELSEG_SIZE 131072 存储管理器 在 Postgres 中,在对表文件管理和操作时...但是目前在操作系统层面,已经提供了文件系统的抽象,所以存储管理器其实已经没有存在的必要了,但是 Postgres 依然选择将其保留,主要是认为这层抽象并没有什么其他的影响。

    15510

    Postgres 分布式数据库

    其实还有另外一种分布式 Postgres-XC (目前已经迭代到 PostgreSQL-X2 ),Postgres-XC 数据库系统主要是基于水平可伸缩的share nothing 架构,支持全局事务...国内的代表作是鹅厂的 TBase 基于Postgres-XC 二次开发并且做了很大改进,在性能和功能上有比较大提升。...gtm_proxy 用于对coordinator节点提交的任务进行分组等操作。一个XC 集群中可以存多个gtm_proxy 节点。...,不必关心数据位于具体的节点;Postgres-XC 的share nothing集群架构方便了业务接入,降低了业务接入的门槛。...小结 总体感受下来 postgres-xc 的分布式架构没有使用基于raft/paxos协议管理分布式数据写入,dn节点使用主从方式,在性能上会有一些优势,不过具体多少还没完全测试,这个和机器规格,参数配置有关

    2.1K31

    Deepin 安装Postgres

    如果容器被删除,那么容器中 postgres 的数据也会一并被删除,所以我们要将数据保存到本机中,方便数据的备份与恢复。...su - postgres psql # 此时可以进入到数据库,此时会提醒我们使用 help 查看帮助命令 \l # 查看当前的所有数据库 \c postgres # 进入到 postgres 数据库中...,我们可以在主机中查看 /var/lib/docker/volumes/pgdata/_data 文件中的内容,我们对此目录內进行文件的操作在容器中是会同步更新的。...所以可以实现容器內数据库操作,删除容器数据保留。...删除持久化文件 对数据进行持久化后,我们可能已经备份了数据,想要删除到主机上的文件,可以执行下面的命令 在 docker 中 卷 volume 是一等公民,可以直接使用命令操作。

    2.6K20

    腾讯云 Postgres-XZ 的数据治理策略

    ,PostgreSQL数据库专家许中清做了腾讯云Postgres-XZ数据治理经验分享。...从微信支付在实际案例中,许中清介绍了腾讯云分布数据库DCDB for Postgres-XZ在数据治理过程中面临的数据倾斜、成本优化、数据迁移等能力,以及在解决这些问题的过程中Postgres-XZ的一系列优化和内核优化...一、简介 Postgres-XZ是腾讯自研的,基于MPP架构分布式关系型数据库集群,内部代号为PGXZ。...因为对于数据量小的商户,路由到一个DataNode可以避免对单个账户写操作时的分布式事务和读操作时的跨接点查询。...对于扩容来说,加节点操作很简单,但真正的难点和重点是,再保证高可用和数据一致性的基础上,不停机就能完成数据的迁移。

    3K00

    postgres分区表

    一、特性postgres分区表是数据层层面的, 相对于普通表在内部实现复杂,但是用户无感知.分区表是一种将大表拆分成多个小表的方式Hash 分区:根据特定列的哈希值将数据均匀分布到多个分区中。...这种方式适用于需要均匀分布数据的场景,能够避免某些分区过大而其他分区过小的情况。通常用于数值型或字符串型数据。List 分区:根据特定列的值将数据分到不同的分区中。...二、建表&分区语句背景是一个中间表的结果集太庞大, 但是数据是有租户隔离的, 因为基于List/Hash进行数据隔离测试Hash分区建表&分区CREATE TABLE temp ( id...temp FOR VALUES IN ('1925');-- 没有匹配到时候的默认分区CREATE TABLE temp_default PARTITION OF temp DEFAULT;三、插入数据

    6710

    Postgres容器使用

    下载postgres镜像 $ sudo docker pull postgres 启动postgres容器 $ sudo docker run --name mypostgres -e POSTGRES_PASSWORD...如果在启动容器的时候需要执行一些初始化操作,我们可以写一些脚本(比如:.sh或者.sql),然后放到scripts文件夹中,启动容器的时候使用-v参数挂载到容器中,容器启动的时候会自动执行这些脚本,比如...docker-entrypoint-initdb.d postgres 使用命令行连接到postgres数据库 启动一个容器并使用psql连接到容器 $ sudo docker run -it --rm...--link mypostgres postgres psql -h mypostgres -U postgres Password for user postgres: psql (16.4 (Debian...postgres=# \dt postgres=# select 1; 使用nodejs连接到postgres数据库 安装pg库 npm install pg 连接并查询postgres数据库 const

    10710
    领券