目录
查看查询文件使用信息
数据库管理方案gp_toolkit包含显示数据库工作文件信息的视图。 如果没有足够的内存让查询完全在内存中执行,数据库会在磁盘上创建工作文件。这些 信息可以用来故障排查和查询调优。这些视图中的信息也可以被用来为数据库配置参数gp_workfile_limit_per_query和gp_workfile_limit_per_segment 指定值。
在模式gp_toolkit中有下面这些视图:
-
gp_workfile_entries视图为当前在实例上创建了工作文件的每个操作符都包含一行
-
gp_workfile_usage_per_query视图为当前在实例上创建了工作 文件的每个查询都包含一行
-
gp_workfile_usage_per_segment视图为每个实例都包含一行。 每一行显示了当前在该实例上用于工作文件的总磁盘空间
查看数据库日志文件
数据库中的每一个数据库实例都运行着一个有着自己的服务器日志文件。日常的日志文件被创建在Master和每个实例的数据目录中的 pg_log目录下。服务器日志文件被写成一种逗号分隔值(CSV)格式。一些日志项并不会所有的域都有值。例如,只有与一个查询工作者进程相关的日志项才会有slice_id值。可以用查询的会话标识符(gp_session_id) 和命令标识符 (gp_command_count)来确定一个特定查询的相关日志项。数据库服务器日志格式:
域名称
|
数据类型
|
描述
| |
1 |
event_time
|
timestamp with time zone
|
该日志项被写入到日志中的时间
|
2 |
user_name
|
varchar(100)
|
数据库用户名
|
3 |
database_name
|
varchar(100)
|
数据库名
|
4 |
process_id
|
varchar(10)
|
系统进程ID
|
5 |
thread_id
|
varchar(50)
|
线程号
|
6 |
remote_host
|
varchar(100)
|
客户端机器的主机名/地 址
|
7 |
remote_port
|
varchar(10)
|
实例或者Master的端口号
|
8 |
session_start_time
|
timestamp with time zone
|
会话连接被打开的时间
|
9 |
transaction_id
|
int
|
顶层事务ID。这个ID是任何子事务的父亲
|
10 |
gp_session_id
|
text
|
会话标识符号
|
11 |
gp_command_count
|
text
|
会话中的命令号
|
12 |
gp_segment
|
text
|
内容标识符
|
13 |
slice_id
|
text
|
切片ID
|
14 |
distr_tranx_id
|
text
|
分布式事务ID
|
15 |
local_tranx_id
|
text
|
本地事务ID
|
16 |
sub_tranx_id
|
text
|
子事务ID
|
17 |
event_severity
|
varchar(10)
|
LOG、ERROR、FATAL、PANIC、DEBUG1、DEBUG2
|
18 |
sql_state_code
|
varchar(10)
|
与日志消息相关的SQL状态代码
|
19 |
event_message
|
text
|
日志或者错误消息文本
|
20 |
event_detail
|
text
|
错误或者警告消息相关的详细消息文本
|
21 |
event_hint
|
text
|
错误或者警告消息相关的提示消息文本
|
22 |
internal_query
|
text
|
内部生成的查询文本
|
23 |
internal_query_pos
|
int
|
内部生成的查询文本的指针式索引
|
24 |
event_context
|
text
|
消息产生的上下文
|
25 |
debug_query_string
|
text
|
完整的用户提供的查询字符串
|
26 |
error_cursor_pos
|
int
|
该查询字符串中的指针式索引
|
27 |
func_name
|
text
|
消息产生的函数
|
28 |
file_name
|
text
|
消息的内部代码文件
|
29 |
file_line
|
int
|
消息的内部代码文件的行号
|
30 |
stack_trace
|
text
|
这个消息相关的堆栈跟踪
|
搜索服务器日志文件
数据库提供一个名为gplogfilter的工具,它可以在一个数据库日志文件中搜索匹配指定条件的项。默认情况下,这个工具在默认日志位置搜索数据库的Master日志。 例如,要显示Master日志文件的最后三行:
$ gplogfilter -n 3
要同时搜索所有实例的日志文件,可以通过gpssh工具来运行gplogfilter。例如,要显示每个实例日志文件的最后三行:
$ gpssh -f seg_host_file
=> source /home/mppadmin/mpp/mpp_path.sh
=> gplogfilter -n 3 /gpdata/gp*/pg_log/gpdb*.log
使用gp_toolkit
使用数据库的管理方案gp_toolkit来查询系统目录、日志文件和操作系统环境以得到系统状态信息。 gp_toolkit方案包含一些可以用SQL命令访问的视图。gp_toolkit方案对所有数据库用户都可以访问。一些对象要求超级用户权限。用与下面类似的命令把gp_toolkit方案增加到用户的方案搜索路径中:
=> ALTER ROLE myrole SET search_path TO myschema,gp_toolkit;