使用psql连接PostgreSQL的基本操作问答

举报
黄生 发表于 2024/12/22 22:53:04 2024/12/22
【摘要】 1. 连接PostgreSQL数据库:o 我提供了使用psql命令行工具连接数据库的方法。psql --version; (切换到postgres用户)psql -d 数据库名(可不指定) -U 用户名; psql -h 主机地址 -p 端口号 -d 数据库名 -U 用户名o 你提到不知道数据库名,我指导你如何使用psql列出所有数据库。\l or \listo 你询问了如何连接到特定数据库...

1. 连接PostgreSQL数据库

o 我提供了使用psql命令行工具连接数据库的方法。psql --version; (切换到postgres用户)psql -d 数据库名(可不指定) -U 用户名; psql -h 主机地址 -p 端口号 -d 数据库名 -U 用户名

o 你提到不知道数据库名,我指导你如何使用psql列出所有数据库。\l or \list

o 你询问了如何连接到特定数据库(如dwd)并列出该数据库中的表。

o 我提供了相应的psql命令。\c dwd postgres; \dt; \dt *hr*

o 你想知道如何查看dwd_xxx_df表中的前3条数据。... limit 3

2. 查看表的relfilenode

o 你想知道如何查看dwd_xxx_df表的relfilenode文件名。以及dwd库的OID.

o SELECT relname, relfilenode FROM pg_class WHERE relname = 'dwd_xxx_df';

o 除了relfilenode文件,还额外有2个文件:文件名通常是relfilenode值(一个数字)加上_fsm(用于存储表的空闲空间映射)和_vm(用于存储可见性映射)后缀。

o SELECT oid, datname FROM pg_database WHERE datname = 'dwd';

3. 查看表文件的内容

o 你找到了dwd_xxx_df表的relfilenode,并询问如何查看文件的内容。

o 你提到hexdump的ASCII字符模式不能正常显示中文,询问是否有改进的方法。瞎回答。

4. 创建表的副本

o 我提供了使用CREATE TABLE AS SELECT和SELECT INTO两种方法来创建表的副本。

在$PGDATA/base/目录下,base和pg_wal这2个目录占用存储空间较大,请解释一下他们的用处

在PostgreSQL的文件系统布局中,$PGDATA是PostgreSQL数据目录的顶级目录,其中包含了数据库的所有文件。在这个目录下,basepg_wal是两个非常重要的子目录,它们的作用如下:

1. base目录

o base目录包含了PostgreSQL数据库集群的所有数据库文件。每个数据库在base目录下都有一个与其OID(对象标识符)相对应的子目录。例如,数据库dwd的文件可能位于base/12345这样的目录下,其中12345是该数据库的OID。

o 在每个数据库的子目录中,包含了该数据库的所有表空间文件。对于系统默认的表空间,表文件通常以relfilenode(一个数字)命名,其中relfilenode是表的唯一标识符。

o 除了表文件,base目录还包含了索引文件、TOAST数据(用于存储大型字段溢出的数据)、自由空间映射(FSM)和可见性映射(VM)文件等。

o base目录的大小取决于存储的数据量和索引的数量,因此它是数据库存储空间占用的主要部分。

2. pg_wal目录

o pg_wal目录包含了WAL(Write-Ahead Logging)文件,这些文件是PostgreSQL的事务日志。WAL文件用于数据恢复和复制,确保事务的持久性和一致性。

o PostgreSQL在事务提交时会先将变更写入WAL文件,然后再写入数据文件,这是为了在发生故障时能够恢复未完成的事务。

o WAL文件对于数据库的可靠性和容错性至关重要,它们允许数据库在发生崩溃后恢复到最后一次一致的状态。

o pg_wal目录的大小取决于你的WAL保留策略和数据库的写入负载。高写入负载的数据库会产生更多的WAL文件,因此pg_wal目录可能会占用较大的存储空间。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。