目录
检查活动会话
pg_stat_activity 系统目录视图为每个服务器进程展示了一行,它显示数据库OID、数据库名、 进程ID、用户OID、用户名、当前查询、当前查询开始执行的时间、进程开始时间、客户端地址和端口号。 要获得大部分有关当前系统负载的信息,可以作为数据库超级用户查询这个视图。例如:
SELECT * FROM pg_stat_activity;
检查锁
pg_locks系统目录视图允许用户查看有关未解除的锁的信息。如果一个事务在一个对象上持有一个锁, 任何其他查询在能够继续之前都必须等待该锁被释放。在pg_locks中检查未授予的锁,以便帮助确定数据库客户端会话之间的竞争。 pg_locks 提供了数据库系统中所有锁的一个全局视图,而不只是那些与当前数据库相关的锁。 用户可以把它的relation列与pg_class.oid连接在一起以确定被锁住的关系(例如表), 但这只对当前数据库中的关系能正确地工作。用户可以把pid列 连接到pg_stat_activity.procpid以查看更多会话持有或者等待持有锁的信息。例如:
SELECT locktype, database, c.relname, l.relation,
l.transactionid, l.pid, l.mode, l.granted,
a.current_query
FROM pg_locks l, pg_class c, pg_stat_activity a
WHERE l.relation=c.oid AND l.pid=a.procpid
ORDER BY c.relname;
SELECT * FROM gp_toolkit.gp_resgroup_status;
SELECT * FROM gp_toolkit.gp_resqueue_status;
检查系统状态
用户可以使用ps、top、iostat、vmstat、 netstat之类之类的系统监控工具监控数据库阵列中主机上的数据库活动。 这些工具能够帮助确定当前运行在系统上的数据库进程以及资源占用最多(CPU、内存、磁盘I/O或者网络活动)的任务。查看这些统计信息以确定降低数据库性能的查 询, 它们会让系统超载并且消耗极多的资源。数据库的管理工具gpssh允许用户在多个主机上 同时运行这些系统监控命令。
用户可以创建并使用数据库的session_level_memory_consumption视图,它为在数据库上运行查询的会话提供有关当前内存利用和闲置时间的信息。
检修问题查询
如果一个查询执行得很糟糕,查看它的查询计划以帮助确定问题。 EXPLAIN命令展示一个给定查询的查询计划。当查询执行期间发生内存不足事件时,数据库内存核算框架会报告事件发生时运行的每一个查询的详细内存消耗。 这些信息被写入到数据库的实例日志中。