概述
PG Collector 可以安全地在生产环境中运行,并且不会创建任何数据库对象来生成输出。
借助 PG Collector,管理员可以深入了解数据库的各个方面,例如:
• 数据库大小
• 配置参数
• 已安装的扩展
• 清理与统计
• 未使用的索引和无效的索引
• 用户和角色信息
• Toast 表映射
• 数据库模式
• 碎片化(膨胀)
• 表空间信息
• 内存设置
• 表和索引的大小和信息
• 事务 ID
• 复制槽
• public 模式信息
• 未记录日志的表
要了解更多内容,请查看样例报告。
版本控制策略
从 PostgreSQL 13 开始,PG Collector 会为每个 PostgreSQL 主版本提供一个专用脚本。
每个 PG Collector 主版本都有自己的分支,主分支将用于支持 PostgreSQL 12 和更早版本的 PG Collector。
图片
如何下载 PG Collector?
从 pg-collector 发布中,选择与您的 PostgreSQL 主版本匹配的 PG Collector 版本。
图片
图片
如何查看 PG Collector 版本?
• 从 PG Collector 报告头部版面
图片
• 从 PG Collector 脚本头部注释
图片
PG Collector 报告头部版面
图片
PG Collector 样例报告
pg_collector v2.9
pg_collector v2.7
PG Collector 样例报告
PG Collector 输出
报告名称
PG Collector 脚本将使用以下命名约定生成 HTML 文件:pg_colletcor_[DB Name]-[timestamp].html。
[DB Name]:是连接到的数据库名称。
Example : pg_collector_testdb-2020-10-10_030920.html
报告位置
PG Collector 脚本将在 /tmp 目录下生成 HTML 文件。
如何运行 PG Collector 脚本?
1. 您需要 psql 才能连接到 postgresql 数据库,并运行 pg_collector.sql 脚本。
2. 在笔记本电脑或要从中访问数据库的主机中,下载 pg_collector.sql。
3. 使用 psql 登录数据库。
psql -h [hostname or RDS endpoint] -p [Port] -d [Database name ] -U [user name]
4. 运行 pg_collector.sql 脚本
\i pg_collector.sql
\q
或在 psql 中使用 -f 选项
psql -h [hostname or RDS endpoint] -p [Port] -d [Database name ] -U [user name] -f pg_collector.sql
示例:
$ psql -h localhost -p 5432 -d testdb -U mohamed
testdb=> \i pg_collector.sql
Output format is html.
Default footer is off.
testdb=> \q
$ ls -lhrt /tmp/pg_colletcor_*
-rw-r--r-- 1 mohamed mohamed 569K Oct 7 21:51 /tmp/pg_colletcor_testdb-2019-10-07_215146.html
5. 使用任何 Internet 浏览器打开报告。
备注
1. 如果您没有安装 pg_stat_statements 扩展,则在执行pg_colletcor.sql脚本时会看到以下错误。
postgres=> \i pg_collector.sql
Output format is html.
Default footer is off.
psql:pg_collector.sql:481: ERROR: relation "pg_stat_statements" does not exist
LINE 10: from pg_stat_statements
^
psql:pg_collector.sql:495: ERROR: relation "pg_stat_statements" does not exist
LINE 10: from pg_stat_statements
^
psql:pg_collector.sql:509: ERROR: relation "pg_stat_statements" does not exist
LINE 10: from pg_stat_statements
^
psql:pg_collector.sql:523: ERROR: relation "pg_stat_statements" does not exist
LINE 10: from pg_stat_statements
^
postgres=> \q
2. 如果数据库有数以万计的表,某些查询可能需要更长的时间。可以使用 statement_timeout,中止任何耗时超过指定毫秒数的语句。请查看以下示例。
postgres=> set statement_timeout=30000;
SET
postgres=> \i pg_collector.sql
Output format is html.
Report name and location: /tmp/pg_collector_postgres-2021-07-22_194944.html
psql:pg_collector.sql:1442: ERROR: canceling statement due to statement timeou