南大通用GBase 8a数据库trace 日志主要用于分析性能。
1、gcluster 层:记录 SQL 分布式执行计划。
2、gnode 层:记录 sql 下发到当前节点的执行情况
日志文件存储路径
开启 trace 日志后查询计划输入到GBASE_BASE/log/gbase 目录下以.trc 结尾的文件中。
日志内容说明
在 gcluster 配置文件中按照如下示例设置,开启 trace 日志,trace 日志默认是关闭的;
gbase> SET GLOBAL gbase_sql_trace=1;
gbase> SET GLOBAL gbase_sql_trace_level=3;
- gbase_sql_trace_level 有 1、2、3 级,表示 trace 日志记录信息的详细程度,第 3 级是最详细的日志内容。 日志文件为.trc 后缀名的文件;
- GCluster 层的 trace 记录 SQL 的分布式执行计划。可查看 SQL 语句的计划步骤是 3 步还是 2 步,找出执行时间间隔最大的步骤,然后分析是否能应用优化方法进行优化提高性能;
- GNode 层的 trace 日志记录 SQL 语句的完整执行过程。因为一条 SQL 语句经Cluster 层解析分解执行计划后,会产生很多条 SQL 语句下发到 GNode 层,所以在 到 GNode 的日志目录下会产生多个.trc 日志文件,建议 查看执行节点的到 GNode 层的字节数最大的那个.trc文件即可;
- 一条 SQL 语句的通用的完整执行流程一般如下所述:
smart scan -> scan -> join -> aggregation -> sort -> materialization -> send result,包含聚集和排序操作的时候通常无需单独的物化步骤,物化在聚集 和排序过程中已经完成。如果是包含嵌套子查询的复杂 SQL,嵌套子查询从内至外递归执行,每一层的执行顺序与上述过程基本相同; - 排查性能问题时,就是查看上面步骤具体是哪个步骤耗时长,定位后再分析 I/O 因素buffer大小对性能影响等信息,看如何优化能提高性能。