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

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - SQL 的用法 » 监控和提高数据库性能 » 提高数据库性能 » 其它诊断工具和技术

 

请求记录

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

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

注意

请求记录功能提供的所有功能和数据也可使用诊断跟踪来获得。诊断跟踪还可提供其它的功能和数据。请参见使用诊断跟踪进行高级应用程序分析

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

小心

请求日志可能包含敏感信息,这是因为请求日志中包含了含有口令的 SQL 语句(如 GRANT CONNECT、CREATE DATABASE 和 CREATE EXTERNAL LOGIN 语句)的完整文本。如果考虑到安全性,您就应当限制对请求日志文件的访问。

当启动数据库服务器时,您可以使用 -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 的全局临时表中。此过程还可将语句组合在一起,并提供调用次数、执行时间,等等。请参见sa_get_request_times 系统过程sa_get_request_profile 系统过程

过滤请求日志

使用 sa_server_option 系统过程,可以对输出到请求日志的内容进行过滤,以便只包括来自特定连接或特定数据库的请求。在监控具有多个活动连接或多个数据库的数据库服务器时,这有助于减小日志的大小。请参见sa_server_option 系统过程

♦  根据连接过滤
♦  根据数据库过滤
♦  重置过滤
将主机变量输出到请求日志

主机变量值可以输出到请求日志。

♦  包括主机变量值

请求日志分析过程 sa_get_request_times 可识别日志中的主机变量,并将它们添加到全局临时表 satmp_request_hostvar 中。