《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)