SQL面试题更新 2026-08-05

在 Oracle 数据库中,为了进行 SQL 调优,如何利用 SQL Trace 和 TKPROF 这两个工具?请说明它们的配合使用方式和主要作用。

性能优化技术原理问题排查

考察说明

考查对 Oracle 性能调优常见工具 SQL Trace 与 TKPROF 的使用流程和作用机制的理解。

回答思路

  1. 【回答框架 1】SQL Trace 是 Oracle 提供的一种会话级跟踪工具,用于记录会话中执行的 SQL 语句的详细执行统计信息,如解析次数、执行次数、磁盘读取、CPU 时间、物理读等。开启方式包括 ALTER SESSION SET SQL_TRACE = TRUE 或使用 DBMS_SESSION.SQL_TRACE,也可以使用 DBMS_MONITOR 或系统级参数进行控制。
  2. 【回答框架 2】TKPROF 是 Oracle 提供的格式化工具,用于将原始 trace 文件转换为可读的报告。基本用法为 tkprof trace_file.trc output_file.txt,可附加排序、聚合等选项,如 SYS=NO 排除系统递归调用,SORT=PRSELT 等按不同指标排序。
  3. 【回答框架 3】调优流程通常为:先开启目标会话或应用的 SQL Trace,执行或重现性能问题 SQL,生成 trace 文件;然后使用 TKPROF 格式化 trace 文件,生成报告;分析报告中的执行计划、等待事件、资源消耗等,识别高消耗 SQL、全表扫描、索引未用等问题,进而调整 SQL 或索引等。
  4. 【回答框架 4】TKPROF 报告的核心字段包括 COUNT、CPU、ELAPSED、DISK、QUERY、CURRENT、ROWS 等,用于评估每条 SQL 的总体资源消耗,COUNT 代表执行次数,CPU 和 ELAPSED 代表时间开销,DISK 代表物理读次数,ROWS 代表返回行数,通过这些指标可快速定位热点 SQL。
  5. 【回答框架 5】实践中需注意:SQL Trace 会带来额外性能开销,生产环境应谨慎开启,通常只针对特定会话或模块,并结合 DBMS_MONITOR 的追踪控制;trace 文件位置可通过 USER_DUMP_DEST 或 V$DIAG_INFO 查询,文件格式可能因版本而异,TKPROF 的选项也需根据需求选择,例如排除内部递归调用(SYS=NO)以获得更清晰的用户语句。
  6. 【关键点 1】SQL Trace 用于记录会话内 SQL 的执行统计信息,TKPROF 用于格式化 trace 文件生成可读报告。
  7. 【关键点 2】调优流程:开启会话跟踪-重现问题-生成 trace-使用 TKPROF 格式化-分析报告定位瓶颈。
  8. 【关键点 3】TKPROF 报告中的 COUNT、CPU、ELAPSED、DISK、ROWS 等字段用于评估 SQL 资源消耗。
  9. 【关键点 4】常见调优目标包括高 CPU/Elapsed 的 SQL、高物理读(DISK)的 SQL、执行行数异常(ROWS)的 SQL,优化手段为调整 SQL 或索引。
  10. 【关键点 5】生产环境开启 SQL Trace 需评估开销,并遵循安全与性能管理规范,常用 DBMS_MONITOR 进行有界跟踪。
  11. 【易错点 1】将 SQL Trace 误认为数据库全局开启,导致生产环境开销过大;应仅针对必要会话使用。
  12. 【易错点 2】忽略 TKPROF 中的 SYS=YES 默认包含系统递归调用,导致统计包含内部 SQL,影响分析准确性。
  13. 【易错点 3】未使用 SORT 选项,报告未按关键资源排序,难以快速定位高消耗 SQL;应使用 SORT=PRSELT 等按需排序。