17. ClustrixDB 日志管理
ClustrixDB记录关于重要和有问题的查询的详细信息。这些日志有助于确定以下事项:
- 慢速查询
- 资源争用
- SQL错误
- 读取意外数量行的查询
- 模式变化
- 全局变量的修改
- 集群的改变
默认情况下,查询日志是启用的,日志存储在/data/clustrix/log/中。
每个节点将记录其运行的查询的信息,同时充当全局事务管理器(GTM)。为了评估集群范围内的问题,常常需要合并来自所有节点的日志。使用clx logdump来合并和评估日志。
管理查询日志
查询类型
query.log中的每个条目都被归类为这些类型之一。每个查询类型的特定日志记录由指定的全局变量或会话变量控制。
Query Type
|
Description
|
---|---|
SQLERR | 这些数据库错误包括语法错误、超时通知和权限问题。默认情况下,所有的SQLERR查询都将被记录下来(session_log_error_queries)。 |
SLOW | 查询执行时间超过了session_log_slow_threshold_ms指定的阈值。(慢SQL) |
DDL |
记录 CREATE, DROP, ALTER),SET GLOBAL or SESSION command. 默认所有DDL都被记录(session_log_ddl). |
BAD | 查询读取的行数超过返回预期结果所需的行数。这可能表示计划不好或缺少索引,默认关闭(session_log_bad_queries). |
ALTER CLUSTER | 通过ALTER cluster命令对集群所做的更改总是自动记录到query.log中。此日志记录不受全局变量控制。 |
全局变量和会话变量
用于控制查询日志记录的一些变量可能由会话指定,而一些变量仅在系统范围内可用。要设置与日志记录相关的任何变量的值,请使用以下语法:
SET [GLOBAL | SESSION] variable_name = desired_value;
这些变量控制查询和用户日志记录。这里显示的默认设置对于大多数安装来说都是可以接受的。
Name
|
Description
|
Default Value
|
Session Variable
|
---|---|---|---|
session_log_bad_queries | Log BAD queries to the query.log | false |
|
session_log_ddl | Log DDL statements to query.log | true | |
session_log_error_queries | Log ERROR statements to query.log | true | |
session_log_slow_queries | Log SLOW statements to query.log | true | |
session_log_slow_threshold_ms | Query duration threshold in milliseconds before logging this query | 10000 |
|
session_log_users | Log LOGIN/LOGOUT to user.log | false |
阅读query.log
组件
每个日志条目都以标识数据开始,并包含重要信息,以帮助解决集群中的问题。下面是日志条目的布局。
[timestamp] [hostname] clxnode INSTR [query type] [sid] [db] [user] [ac] [xid] [sql] [status] [time and breakdowns] [internal counters]
Label | Description |
---|---|
timestamp | 日期和时间,包括时区。时间同步在所有节点上是非常重要的。 |
hostname | 节点ID和记录条目的主机的名称。此节点充当此事务的GTM。 |
process name | ClustrixDB进程名(clxnode). |
INSTR | 这个固定的冗余出现在每行的查询类型之前。 |
query type | 定义日志的类型: SLOW, DDL, BAD, SQLERR, ALTER CLUSTER. |
SID | 会话ID:用于对给定会话的活动进行分组。 |
db | DB name |
user | 执行查询的用户。如果使用基于语句的复制,则在排除来自主服务器的语句故障时搜索复制帐户。 |
ac | 自动提交(Y / N)指标。这对于确定查询是否在用户定义的显式事务中使用非常有用。DDL使用内部生成的显式事务,并且始终为N。 |
xid | 事务ID。在排除锁定问题时,将会话链接到XID非常有用。 |
sql | 这是完整查询的文本。省略号表示文本被截断以适应4KB的限制。 |
status | 方括号中包含的查询结果。例如,这可能是受影响的行或错误消息。 |
time | 从接收、编译和处理查询到返回输出或发生错误所花费的总时间。这在分析慢速查询时特别有用。 |
对于执行时间超过一个ms的任何查询,运行时间将进一步细分。 | |
translate | Time spent in translate_dml(). |
prefetch | Time spent building the Sierra stub. |
plan | Time spent to plan and normalize the query. |
compile | Time spent in compiling Sierra. |
execute | Time spent in invocation. |
内部计数器`
|
|
---|---|
Label
|
Description
|
reads | The number of times the database reads from a container. This may differ from the number of rows_read. |
inserts | The number of times the database inserts into a container. This includes both the number of calls and the number of rows written. |
deletes | The number of times the database deletes from a container. This includes both the number of calls and the number of rows deleted. |
updates | The number of times the database updates a container. This includes both the number of calls and the number of rows updated. |
counts | Number of calls by the query execution engine to operators BARRIER_ADD and BARRIER_FETCHADD. |
rows_read |
Total number of rows read to get all needed data for the query, including reads from indices. Essentially, the total number of rows processed by the last query. This may differ from from the number of rows_output by the query. |
forwards | Number of rows forwarded to specific nodes. |
broadcasts | Number of rows that were broadcast to all nodes. |
rows_output | Total number of rows returned or output by the last query. This is usually the same as the number of rows returned from a query but may occasionally contain counts from internal processes. |
semaphore_matches | Number of calls by the query execution engine to operator SEM_ACQUIRE. |
fragment_executions | Number of query fragments executed for the query. |
cpu_runtime_ns | This represents the aggregate total CPU time spent by all nodes to run the query. |
cpu_waits | The number of times the query waited for another query to finish due to the Fair Scheduler. |
cpu_waittime_ns | The amount of time spent waiting for CPU due to the Fair Scheduler. |
barriers | Number of barriers created for the query. This is used to synchronize message communication between nodes. |
barrier_forwards | Number of barriers created to synchronize messaging for forwarded rows. |
barrier_flushes | Number of flush operations performed on barriers. |
bm_fixes | Number of attempted page fixes by the Buffer Manager. |
bm_loads | Number of pages loaded from disk by the Buffer Manager. |
bm_waittime_ns | Nanoseconds spent blocked on Buffer Manager page fixes. |
lockman_waits | Count of the number of times that the query had to wait for a lock to be released by another query. |
lockman_waittime_ms | The total time spent waiting for other queries to release locks on needed rows. |
trxstate_waits | Number of calls to trxstate_check that had to block. |
trxstate_waittime_ms | Milliseconds spent blocked in trxstate_check. |
wal_perm_waittime_ms | Milliseconds spent waiting because the WAL is more than 75% full. |
bm_perm_waittime_ms | Milliseconds spent waiting for the Buffer Manager to grant write permission for pages. |
sigmas | The number of sigma containers used by the query. |
sigma_fallbacks | The number of sigma containers that ran out of memory and had to fall back to disk. |
row_count | The total number of rows updated, inserted or deleted by the last query. |
found_rows | The number of rows affected by the last statement, but not necessarily output by that statement . A value of 0 or -1 means no rows were found. |
insert_id | Not currently being used, always displayed as 0. |
fanout | Y/N indicator that tells if fanout was used for this query. |
attempts | Number of attempts to automatically retry the query execution after it failed. |
17. ClustrixDB 日志管理的更多相关文章
- 第17周翻译:SQL Server中的事务日志管理的阶梯:第5级:在完全恢复模式下管理日志
来源:http://www.sqlservercentral.com/articles/Stairway+Series/73785/ 作者:Tony Davis, 2012/01/27 翻译:刘琼滨. ...
- Java 日志管理最佳实践
转:http://blog.jobbole.com/51155/ 日志记录是应用程序运行中必不可少的一部分.具有良好格式和完备信息的日志记录可以在程序出现问题时帮助开发人员迅速地定位错误的根源.对于开 ...
- Java日志管理方法(转载)
原文地址:http://www.cnblogs.com/leocook/p/log_java.html java开发中常见的几种日志管理方案有以下4种: 1. Commons-logging + lo ...
- android log4j日志管理的使用
以下为log4j1的日志管理,在android 6.0 一下能正常使用,时候更加高级的胃log4j2,持续跟新 android中的log4j日志文件使用需要两个包,我们不需要进行配置文件的配置,一切都 ...
- Docker日志管理--docker部署安装ELK (十一)--技术流ken
Docker logs 对于一个运行的容器,Docker 会将日志发送到 容器的 标准输出设备(STDOUT)和标准错误设备(STDERR),STDOUT 和 STDERR 实际上就是容器的控制台终端 ...
- 日志管理工具之logrotate
Logrotate配置和测试 logrotate软件是一个日志管理工具,用于非分隔日志,删除旧的日志文件,并创建新的日志文件,起到“转储作用”,可以为系统节省磁盘空间.logrotate是基于cron ...
- systemd的日志管理进程journald
使用Journalctl查看并操作Systemd日志 systemd拥有强大的处理与系统日志记录功能.在使用其它工具时,日志往往被分散在多套系统当中,由不同的守护进程负责处理. Journal的实现归 ...
- 2019你该掌握的开源日志管理平台ELK STACK
转载于https://www.vtlab.io/?p=217 在企业级开源日志管理平台ELK VS GRAYLOG一文中,我简单阐述了日志管理平台对技术人员的重要性,并把ELK Stack和Gra ...
- Springboot的日志管理&Springboot整合Junit测试&Springboot中AOP的使用
==============Springboot的日志管理============= springboot无需引入日志的包,springboot默认已经依赖了slf4j.logback.log4j等日 ...
随机推荐
- TCP中三次挥手四次握手
1.TCP连接 手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接.TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上. ...
- 【计算机视觉】【图像处理】【VS开发】【Qt开发】opencv之深拷贝及浅拷贝,IplImage装换为Mat
原文:opencv之深拷贝及浅拷贝,IplImage装换为Mat 一.(1) 浅拷贝: Mat B; B = image // 第一种方式 Mat C(image); // 第二种方式 这两种方式称 ...
- 【VS开发】Windows上的音频采集技术
前一段时间接到一个任务,需要采集到声卡的输出信号,以便与麦克风的输入信号进行混音. 之前一直没有研究过音频的相关技术,这次就顺便抽出一点时间去了解了一下Windows上采集音频的相关技术. 对于音频处 ...
- C++ string 详细用法
string不是STL的容器(知道这一点的时候我也很吃惊),但是它与STL容器有着很多相似的操作,不需要担心长度问题,还封装了多种多样的方法,十分好用. 用到的库 #include <strin ...
- Python 类的私有属性与私有方法
1.隐藏的使用场景 在Python类中,有些属性和方法只希望在对象的内部被使用,而不希望在外部被访问到, 2.定义方式, 在属性名或方法名前增加两个下划线,定义的就是私有属性或方法 #其实这仅仅这是一 ...
- sql server CDC报错:超出存储过程、函数、触发器的最大嵌套层数(最大层为32)
sys.sp_MScdc_capture_job RAISERROR(22801, 10, -1) --原本 go sys.sp_MScdc_capture_job; go --修改后 ...
- [转帖]虚拟内存探究 -- 第二篇:Python 字节
虚拟内存探究 -- 第二篇:Python 字节 http://blog.coderhuo.tech/2017/10/15/Virtual_Memory_python_bytes/ 是真看不懂哦 ...
- [codeforces1234F]Yet Another Substring Reverse
题目链接 大致题意为将某个子串进行翻转后,使得不包含相同字符的字符子串长度最长.只能翻转一次或零次. 设一个子串的状态为包含字符的二进制.如子串为$abacd$,则状态为$00000000000000 ...
- cs244a-Introduction to Computer Networking-Unit1
Unit 1 学习目标: how an application use the Internet The structure of the Internet:The 4 layer model The ...
- CSP-S全国模拟赛第三场 【nan死了】
mmt 居然第一步膜化乘除 都没看出来,没救了... 大概是贡献前缀和优化的做法 巨兔式讲解:大家都学会了么? 咱发现有大量的 (i/j , i%j ) 同时 对很多 c 产生了贡献,咱可以去优化这一 ...