Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SAP Sybase SQL Anywhere 16.0 (中文) » SQL Anywhere 服务器 - SQL 用法 » 性能提高、诊断和监控 » 性能监控和诊断工具 » 其它诊断工具和技术

 

请求记录

请求记录会记录从应用程序接收的各个请求以及发送到应用程序的响应。请求记录在确定应用程序要求数据库服务器所执行的操作时用处最大。

在不清楚是数据库服务器还是客户端有故障时,要对特定应用程序进行性能分析,也最好先从请求记录开始。可以使用请求记录来确定问题的根源是否是向数据库服务器发出特定请求。

注意

请求记录功能提供的所有功能和数据也可使用诊断跟踪来获得。诊断跟踪还可提供其它的功能和数据。

所记录的信息包括时间戳、连接 ID 和请求类型等。对于查询,记录的信息还包括隔离级别、读取的行数和游标类型。对于 INSERT、UPDATE 和 DELETE 语句,记录的信息还包括受到影响的行数以及触发的触发器数。

注释

请求日志包含的具有敏感信息的所有语句均已进行模糊处理。只有具有解析错误的语句才会包含未进行模糊处理的敏感信息。

当启动数据库服务器时,您可以使用 -zr 服务器选项来启动请求记录。使用 -zo 服务器选项,您可以将输出重定向到一个请求日志文件,以便进一步分析。-zn 和 -zs 选项允许您指定要保存的请求日志文件数以及请求日志文件的最大大小。

有关这些选项的详细信息,请参见:

注意

这些服务器选项不会影响 Sybase Central 中的诊断跟踪。基于文件的请求记录与 Sybase Central 中的诊断跟踪功能毫无关系,后者使用数据库中属于 dbo 的诊断表来存储请求日志信息。

sa_get_request_times 系统过程读取请求日志,并用日志中的语句和它们的执行时间填充全局临时表 (satmp_request_time)。对于 INSERT/UPDATE/DELETE 语句,记录的时间是执行语句时的时间。对于查询,记录的时间是从 PREPARE 到 DROP(描述/打开/读取/关闭)所经过的总时间。这意味着您需要知道任何打开的游标。

分析 satmp_request_time 以找到可能需要改进的语句。开销低但经常执行的语句可能会出现性能问题。

您可以使用 sa_get_request_profile 调用 sa_get_request_times,并将 satmp_request_time 汇总到另一个名为 satmp_request_profile 的全局临时表中。此过程还可将语句组合在一起,并提供调用次数、执行时间,等等。

小心

如果使用 tracetime.pl Perl 脚本对日志进行分析,应将 max_client_statements_cached 选项设置为 0,以便在捕获请求日志时禁用客户端语句缓存。

 另请参见
 示例