【PG体系结构】PG体系结构简单说明


##pg 结构
--逻辑结构
--数据库实例通常指数据库集簇(database cluster),单个实例管理数据库集合
--一个数据库集簇包含用户、数据库,可为每个数据库指定单独的用户,每个数据库下面包含schemas(命名空间),默认为public,每个schemas下面包含表、索引、视图、序列等。
--物理结构
--数据文件、参数文件、控制文件、数据库运行日志及预写日志
--可通过以下命令查看目录文件,具体作用可参考《Postgresql实战》98页
tree -L 1 -d /pgdata/10/data
--控制文件位置
[postgres@pgtest global]$ pwd
/pgdata/data/global
[postgres@pgtest global]$ ls -l pg_control 
-rw------- 1 postgres postgres 8192 Dec  7 04:56 pg_control
--数据文件布局
--oid,所有数据库对象都有各自的对象标识符(oid)进行内部管理,它们是无符号的4字节整数,例如
select oid,datname from pg_database;
select oid,relname,relkind from pg_class;
--表空间,最大的逻辑存储单位
--默认两个表空间,pg_global表空间,目录为global,保存系统表;pg_default表空间的物理文件位置在base目录,是template0和template1数据库的默认表空间,
--创建表空间需要先创建目录,表空间可以解决以后磁盘空不足问题、分配性能不同的磁盘上,提高数据库性能
mkdir -p /pgdata/10/mytblspc
create tablespace myspc location '/pgdata/10/mytblspc';
create table t(id int4) tablespace myspc;
--数据文件命名,对于表大小超出1g,pg会自动切分多个文件,oid.顺序号,真正管理表文件的是pg_class的relfilenode
--查看表的大小
select pg_size_pretty(pg_relation_size('tb1'::regclass));
--表文件内部结构
--pg中,保存在磁盘中的块称为Page,内存中的块称为Buffer,表和索引称为Relation,行称为Tuple。数据读写以Page为最小单位,Page默认8KB
##进程结构
--守护进程与服务进程
--postmaster进程主要职责
数据库的启停
监听客户端连接
为每个客户端连接fork单独的postgres服务进程
当服务进程出错时进行修复
管理数据文件
管理与数据库运行相关的辅助进程
--辅助进程
background writer:bgwriter进程,搜索共享缓冲池找到被修改的页,并将它们从共享缓冲池刷出
autovacuum launcher: 自动清理回收垃圾进程
WAL writer: 定期将WAL缓冲区上的WAL数据写入磁盘
statistics collector: 统计信息收集进程
logging collector: 日志进程,将消息或者错误信息写入日志
archiver:WAL归档进程
checkpointer:检查点进程
##内存结构
--本地内存主要给后端进程使用,主要三部分
work_mem: 当使用order by 或distinct会使用到
maintenance_work_mem: 维护操作,例如VACUUM REINDEX CREATE INDEX等操作
temp_buffers: 临时表相关操作使用
--共享内存,在服务器启动时分配,由所有后端进程共同使用
shared buffer pool :PostgreSQL将表和索引页面从持久存储装载到这里,并直接操作它们
WAL buffer: WAL文件持久化之前的缓冲区
CommitLog buffer:PostgreSQL 在Commit Log中保存事务的状态,并将这些状态保留在共享内存缓冲区中,在整个事务处理过程中使用

timg?image&quality=80&size=b9999_10000&sec=1546859853715&di=79a8e6393c79a412ab1483e056a05dda&imgtype=0&src=http%3A%2F%2Fattachbak.dataguru.cn%2Fattachments%2Fforum%2F201212%2F30%2F114405u7up2uqmfm7pc2qk.jpg

timg?image&quality=80&size=b9999_10000&sec=1546860071505&di=a17c9cce9d04c322a18c94f2c6165435&imgtype=jpg&src=http%3A%2F%2Fimg2.imgtn.bdimg.com%2Fit%2Fu%3D2066842537%2C93758486%26fm%3D214%26gp%3D0.jpg


database cluster--user、【database】--schema--table、index、view……

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29487349/viewspace-2374750/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29487349/viewspace-2374750/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Ubuntu中,可以使用如下快捷键选中多行代码: 1. 按住Shift键,同时使用方向键或者PageUp/PageDown键来选中多行代码; 2. 鼠标点击第一行代码的行号,然后按住Shift键,同时鼠标点击最后一行代码的行号,即可选中多行代码; 一旦选中了多行代码,可以使用Delete或者Backspace键来删除它们。 ### 回答2: 在Ubuntu中,您可以使用以下方法来选中多行代码并进行删除: 1. 使用鼠标: - 将鼠标光标放置在代码的起始行上。 - 按住鼠标左键,并向下拖动,直到选中所有要删除的代码行。 - 松开鼠标左键。 - 按下"Delete"键或"Backspace"键来删除选中的代码。 2. 使用键盘快捷键: - 将光标定位到要删除的代码起始行上。 - 按住"Shift"键,并按下"↓"键,直到所有要删除的代码行都被选中。 - 按下"Delete"键或"Backspace"键来删除选中的代码。 无论使用鼠标还是键盘快捷键,选中的代码行将会被高亮显示,可以用于删除、复制或粘贴操作。删除操作可以直接从文本编辑器中执行,例如文本编辑器Gedit或代码编辑器Visual Studio Code等。另外,如果您使用终端或命令行界面,也可以使用命令行编辑器如Vim或Emacs来删除选中的代码。 ### 回答3: 在Ubuntu中,您可以使用以下几种方法选中和删除多行代码: 1. 使用鼠标:将光标放在您想要删除的代码行的开头,并按住鼠标左键拖动光标到最后一行,然后按下“Delete”或“Backspace”键删除选中的代码。 2. 使用键盘快捷键:将光标放在您想要删除的代码行的开头,按住“Shift”键,然后使用方向键向下移动光标,直到选中所有需要删除的行。接着,按下“Delete”或“Backspace”键删除选中的代码。 3. 使用命令行:打开终端,在终端中输入以下命令: ``` sed -i '行号开始,行号结束d' 文件名 ``` 替换“行号开始”和“行号结束”为您要删除的代码行的行号范围。例如,要删除文件中的第2行到第5行,命令将是: ``` sed -i '2,5d' 文件名 ``` 无论您选择使用哪种方法,一旦选中了需要删除的多行代码,它们就会被彻底删除,并且无法恢复。因此,请确保在删除之前进行备份以防止数据丢失。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值