1.trace 日志
trace日志主要用于分析性能。
- gcluster 层:记录 SQL 分布式执行计划。
- gnode层:记录sql下发到当前节点的执行情况
gbase> SET GLOBAL gbase_sql_trace=1; |
l gbase_sql_trace_level 有 1、2、3 级,表示 trace 日志记录信息的详细程度,第 3 级是最详细的日志内容。 日志文件为.trc 后缀名的文件;
l trace 日志是根据当前 session 连接生成的 trc 日志,故 session 断开会产生新的 trc 日志。由于日志内容较大,不方便分析,每次执行 sql 语句之前建议清空以前的 trc 日志文件,方法为使用 rm -rf *.trc 删除之前的 trace日志;
l GCluster 层的 trace 记录 SQL 的分布式执行计划。可查看SQL 语句的计划步骤是3步还是2步,找出执行时间间隔最大的步骤,然后分析是否能应用优化方法进行优化提高性能;
l GNode 层的 trace 日志记录 SQL 语句的完整执行过程。因为一条 SQL 语句经 GCluster 层解析分解执行计划后,会产生很多条 SQL 语句下发到 GNode 层,所以在 到 GNode 的日志目录下会产生多个.trc 日志文件,建议查看执行节点的到 GNode 层的字节数最大的那个.trc 文件即可;
l 一条 SQL 语句的通用的完整执行流程一般如下所述:
smart scan -> scan -> join -> aggregation -> sort -> materialization -> send result,包含聚集和排序操作的时候通常无需单独的物化步骤,物化在聚集和排序过程中已经完成。如果是包含嵌套子查询的复杂 SQL,嵌套子查询从内至外递归执行,每一层的执行顺序与上述过程基本相同;
排查性能问题时,就是查看上面步骤具体是哪个步骤耗时长,定位后再分析 I/O 因素、 buffer 大小对性能影响等信息,看如何优化能提高性能。
2.system日志
system日志,也称错误日志,默认开启,记录数据库服务启动、停止等重要操作,并可记录数据库服务宕机等异常情况的程序堆栈,可辅助开发人员查错。
2.1 日志文件存储路径
$GCLUSTER_BASE/log/gcluster/system.log
$GBASE_BASE/log/gbase/system.log
2.2 日志内容说明
l 日志文件名称可通过设置log_error参数修改。默认为$GCLUSTER_BASE/log/gcluster/system.log;
l 当有服务崩溃时,system 日志会记录下崩溃时的程序调用堆栈,出现此类情况可将 system.log 发回公司,由相关开发人员排查,这时 log 中记录的内容类似于 core 文件的作用,可用于分析产生错误的原因,至少可以获知程序崩溃的代码点;
l 运行过程中出现crash时,system.log中记录了宕机的堆栈信息,core文件中记录了宕机的详细的堆栈信息,查看详细的堆栈信息,方法如下:
- 集群管理节点层面:在每台集群节点机器的$GBASE_BASE/config路径下,找到配置文件gbase_8a_gcluster.cnf,将文件中的core-file参数去掉参数前的注释符号“#”;
- 集群数据节点层面:在每台集群节点机器的$GBASE_BASE/config路径下,找到配置文件gbase_8a_gbase.cnf,将文件中的core-file参数去掉参数前的注释符号“#”。完成上述步骤后,运行gcluster_service all restart命令,重新启动集群服务,使上述配置文件的设置生效。
3.express日志
express日志记录express引擎内部执行过程中的一些重要信息,包括异常等,用于查错。
l express 详细日志内容,可以在 gcluster 配置文件中设置gcluster_log_level =7,也可以通过set [global] gcluster_log_level=7的方式设置,设置完成后完整的执行计划可输出到 express.log 文件中。设置配置文件后,需要重启集群服务,使上述配置文件的设置生效;
l 缺省情况下只有执行过程中出现的警告和错误才会输出到 express.log 文件。
4.gcware日志
GCWare相关的日志记录在$GCWARE_BASE/log和$GCWARE_BASE/liblog路径下,主要包括初始化以及消息回调等相关日志信息。




