《PostgreSQL数据库内核分析》之PostgreSQL系统概述(一)
【摘要】 PostgreSQL主目录及用途 Bootstrap用于支持Bootstrap运行模式,该模式主要用来创建初始的模板数据库Main主程序模块,负责将控制权转到Postmaster进程或Postgres进程Postmaster监听用户请求的守护进程,并控制Postgres进程的启动和终止LibpqC/C++的库函数,处理与客户端间的通信,几乎所有的模块都依赖它TcopPostgres服务器进...
1.1简介及发展历程
1.2PG的特性
1.开放特性:丰富的数据类型;允许用户定义基于正规SQL类型的新类型
2.可编程性:拥有大量的编程接口供用户开发使用
3.可定制性:广泛的编程语言支持来实现函数功能
4.索引手段:自定义索引方法,内置B-tree索引、Hash表索引、GiST索引、GIN索引
5.多种身份认证方式:使用数据库用户/角色、操作系统、PAM、Kerberos等方式,根据主机配置文件(pg_hba.conf)中的设置执行对应的身份认证
1.3PostgreSQL主目录及用途
Bootstrap
|
用于支持Bootstrap运行模式,该模式主要用来创建初始的模板数据库 |
Main | 主程序模块,负责将控制权转到Postmaster进程或Postgres进程 |
Postmaster | 监听用户请求的守护进程,并控制Postgres进程的启动和终止 |
Libpq | C/C++的库函数,处理与客户端间的通信,几乎所有的模块都依赖它 |
Tcop | Postgres服务器进程的主要处理部分,调用Parser、Optimizer、Executor和Commands中的函数来执行客户端来执行客户端提交的查询 |
Parser | 编译器,将SQL查询转化为内部查询树 |
Optimizer | 优化器,根据查询树创建最优的查询路径和查询计划 |
Executor | 执行器,执行来自Optimizer的查询计划 |
Commands | 执行非计划查询的SQL命令,如创建表命令等 |
Catalog | 系统表操作,包含用于操作系统表的专用函数 |
Storage | 管理各种类型的存储系统(如磁盘、闪存等) |
Access | 提供各种存取方法,支持堆、索引等对数据的存取 |
Nodes | 定义系统内部所用到的节点、链表等结构,以及处理这些结构的函数 |
Utils | 各种支持函数,如错误报告、各种初始化操作等 |
Regex | 正则表达式库及相关函数,用来支持正规表达式处理 |
Rewrite | 查询重写,根据规则系统对查询进行重写 |
Initdb | 初始化数据库集簇 |
TSearch | 全文检索 |
Psql | 数据库交互工具 |
Port | 平台兼容性处理相关的函数 |
1.4PostgreSQL模块调用关系
1.5PostgreSQL数据库常用命令
命令名
|
常用参数 | 功能介绍 |
initdb | -D 数据集簇位置 -E 新建数据库默认编码 -X 事务日志位置 |
创建一个用于存储数据库的PostgreSQL数据目录,并创建预定义的模板数据库template0和template1,生成共享目录表catalog;此程序通常只在安装PostgreSQL时运行一次。如 initdb -D ../data |
createuser | -c 执行用户的最大连接数 -d 新用户可以创建数据库 -l 新用户具有登录权限 -U 连接的用户名(不是要创建的用户) |
创建一个新的PostgreSQL的用户(和SQL语句;CREATE USER相同),如createuser -d -l -U postgres pguser |
dropuser | -U 连接数据库的用户名 | 删除用户,如dropuser pguser |
createdb | -E 数据库的编码 -l 数据库locale是指 -O 数据库所有者 |
创建一个新的PostgreSQL的数据库(如SQL语句CREATE DATABASE相同),如createdb test |
dropdb | -i 删除之前提示确认操作 -U 连接数据库的用户名 |
删除数据库,如dropdb test |
pg_dump | -f 备份文件名称 -F 备份文件格式,custom、tar、plain text -Z 压缩登记 -a 只备份数据,不含模式 -b 备份包含大对象 -C 包含创建数据库命令 |
将PostgreSQL数据库导出到一个备份文件,如pg_dump text > /home/pgsql/backup/1/bak |
pd_dumall | -f 备份文件名称 --lock-awit-timeout 有表锁时若超时间则备份失败 |
将所有得PostgreSQL数据库导出到一个备份文件 |
pg_restore | -d 连接数据库名称 -f 备份文件名称 -F 备份文件格式(c,t) -a 只恢复数据,忽略模式 -C 创建目标数据库 -l 恢复有名称的索引 |
从一个由pg_dump或pg_dumpall程序导出的备份文件中恢复PostgreSQL数据库,如pg_restore-d test/home/postgre/backup/1.bak |
vacuumdb | -a 清理所有数据库 -d 清理指定名称数据库 |
清理和分析一个PostgreSQL数据库,它是客户端程序psql程序下SQL语句VACUUM的shell脚本封装,二者功能完全相同 |
pg_ctl | 启动、停止、重启PostgreSQL服务,如pg_ctl -D ../data start,pg_ctl -D ../data stop, pg_ctl -D ../data restart | |
posgtres | PostgreSQL单用户模式的数据库服务 | |
postmaster | PosgtreSQL多用户模式的数据库服务 | |
psql | -c 执行单个命令并退出 -d 连接的数据库名字 -f 从文件中执行命令 -l 将文件中的命令当成一个任务执行 -h 数据库所在主机IP -p 数据库监听端口 -U 连接数据库用户名称 -w 不需要密码 -W 强制使用密码 |
一个基于命令行的PostgreSQL交互式客户端程序,例如:psql -h 192.168.0.12 -怕6666 -Upostgres test |
1.6psql常用元命令
元命令
|
功能说明 |
\\? | 查看所有可能使用的元命令和说明信息 |
\o | 将查询结果保存到文件或输出到shell命令 |
\l | 列出所有数据库的名名称、所有者、编码等信息 |
\q | 退出 |
\c | 连接到某个数据库 |
\dt | 列出所有表 |
\d | 显示出数据库对象的模式 |
\di | 列出所有索引 |
\i | 执行文件中的命令 |
(sql); | 执行标准的SQL语句,如:create table (userID varchar(25),name varchar(25)); |
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)