PG数据库结构与oracle比较

server/2024/9/24 23:23:11/

1.数据库集簇逻辑结构

数据库集簇概念:一个大的数据库是由若干个小的数据库组成,实现数据的隔离存放,在概念上应该是与mysql一样的

在mysql中可以用show database列出数据库

PG中用\l

数据库对象存放在数据库中:

PG中的所有数据库对象都有各自的对象表示符oid在内部管理,包括视图,在oracle中的ocp考试中有一道题记得很清楚,说视图有没有自己的oid,答案是有的,视图虽然不占物理空间,依赖于基表,但它也有自己的对象号,在oracle中对象号也叫object_id 也就是oid。

值得注意的是,数据库本身也有一个oid:

2.数据库集簇物理结构

PG 中的数据存放在数据目录中,所有的数据与数据文件都放在这个目录下。

如:

base目录:存放数据实际的物理位置,目录名以数据命名,对应的是PG中各个数据库的oid:

如图,1目录对应的就是template1数据库,13593对应的是postgres数据库

在PG中一个表就对应一个数据文件,

比如:

插入一条数据

PG为插入的这条数据分配了8192。

可以看出,与oracle一样,PG在创建表的时候也不会为该表立即分配空间,只会在第一次插入数据的时候分配空间,这与oracle 11g之后的延迟段空间创建原理相同。

在oracle中,延迟段空间创建默认开启:

3.PG中的表空间

PG数据库的存放,也是基于表空间的存放,初始化数据库后,默认会创建两个表空间:

pg_defatult,pg_global。

pg_global 在$PGDATA/global目录下,用来存放系统表,如数据字典。

pg_defatult,在$PGDATA/base目录下,创建数据库的时候,如果不指定表空间,则会使用pg_default表空间

可以这么理解,PG中各个数据库都是以表空间的形式存放在磁盘中的,有了表空间,数据就可以存放在不同的位置,当然,一个表空间可以对应多个数据库,如pg_default表空间默认就存放了template0和template2两个数据库

4.创建表空间

在PG中,创建数据库和创建表的时候都可以指定表空间。

测试在家目录创建一个表空间:

可以看到家目录创建了一个表空间文件,在pg_tblspc中有一个软链接指向家目录的表空间文件。

创建表的时候也可以指定表空间,用哪个数据库创建的表,这个表属于哪个数据库,但是不属于这个数据库的表空间,这张表属于你自己指定的表空间,因此在管理的时候可能会比较混乱,但在某些情况下,想要把核心的表放到磁盘IO较好的磁盘上,可以使用创建表指定表空间这种方式。

可以看到,与oracle不同,PG中创建表空间指定一个目录,oracle创建表空间需要指定数据文件,oracle中表空间只是逻辑上的概念,在物理上都是以数据文件的形式存储,而PG中表空间是以物理的形式存储,我们创建一个表空间,在物理磁盘上就能找到该表空间指定的目录。


http://www.ppmy.cn/server/28740.html

相关文章

cve-2018-19518漏洞复现

一、靶场的启动 在相应的文件夹位置打开终端后进行如下操作 1.运行此靶场 sudo docker-compose up -d 2.查看启动环境 sudo docker ps 3.关闭此靶场环境 docker-compose down 二、漏洞内容简介 php imap扩展用户在php中执行邮件收发操作,其imap_open函数会调用rsh…

微信小程序常用的api

基础API: wx.request:用于发起网络请求,支持GET、POST等方式,是获取网络数据的主要手段。wx.showToast:显示消息提示框,通常用于向用户展示操作成功、失败或加载中等状态。wx.showModal:显示模态…

【问题分析】TaskDisplayArea被隐藏导致的黑屏以及无焦点窗口问题【Android 14】

1 问题描述 用户操作出的偶现的黑屏以及无焦点窗口问题。 直接原因是,TaskDisplayArea被添加了eLayerHidden标志位,导致所有App的窗口不可见,从而出现黑屏和无焦点窗口问题,相关log为: 这个log是MTK添加的&#xff0…

File contains parsing errors: file:///etc/yum.repos.d/nginx.repo报错解决,文件配置出现问题

执行yum指令出现以下错误: 解决方案:yum的配置文件出现问题, 先删除yum.repos.d目录下所有文件 rm -f /etc/yum.repos.d/* 然后重新下载阿里的资源 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.…

【Web前端】Javascript冒泡排序、选择排序、插入排序

一、冒泡排序 简单说一下冒泡排序过程,一个列表中有n个可排序元素,如果按升序(降序)排列,就需要进行n-1次循环完成排序(就像魔方拼好5个面自然就完全拼好了),每次循环按次两两比较&a…

【EXCEL自动化11】pandas提取指定数据(补充)

🔥学好办公自动化,帮你节省更多宝贵的时间 🔥这个专栏收录python办公自动化的实操案例,利用python实现高效的办公自动化 🔥实现excel,word,文件批处理等自动化操作 目录 一、批量提取多个文件的指定数据二、批量读取xlsx文件并另存三、批量替换文件夹中所有excel文件…

【PyTorch与深度学习】3、PyTorch张量的运算API(下)

课程地址 最近做实验发现自己还是基础框架上掌握得不好,于是开始重学一遍PyTorch框架,这个是课程笔记,这个课还是讲的简略,我半小时的课听了一个半小时。 1. PyTorch的数据类型 数据类型dtype参数遗留的构造函数32位浮点数torch…

vue 下载pdf

1、html <div class"down" click"down(dataurl)"><img src"~assets/images/reportsModule/下载.png" alt""><span style"padding-left: 5px;">立即下载</span></div> dataurl 是路径 2、met…