我有一台卡桑德拉debug.log。它有很多不会被任何应用程序触发的SELECT *查询。应用程序请求SELECT查询中的特定字段,而且这些查询似乎有一个LIMIT 5000子句,我非常确定在任何应用程序中都没有这个子句。这些查询是由cassandra内部触发的吗?调试日志中充满了这样的查询。该应用程序使用gocql驱动程序连接到cassandra。
<SELECT * FROM table_name WHERE id = 0 LIMIT 5000>, was slow 45 times: avg/min/max 4969/4925/4996 msec - slow timeout 500 msec/cross-node
DEBUG [ScheduledTasks:1] 2021-01-14 18:02:33,271 MonitoringTask.java:152 - 160 operations timed out in the last 5004 msecs:
<SELECT * FROM table_name WHERE id = abcd LIMIT 5000>, total time 7038 msec, timeout 5000 msec/cross-node
<SELECT * FROM table_name WHERE id = efgh LIMIT 5000>, total time 5793 msec, timeout 5000 msec/cross-node
<SELECT * FROM table_name WHERE id = hijk LIMIT 5000>, total time 5289 msec, timeout 5000 msec/cross-node
<SELECT * FROM table_name WHERE id = lmnop LIMIT 5000>, total time 5826 msec, timeout 5000 msec/cross-node
<SELECT * FROM table_name WHERE id = qrst LIMIT 5000>, total time 6006 msec, timeout 5000 msec/cross-node
<SELECT * FROM table_name WHERE id = uvwx LIMIT 5000>, total time 5905 msec, timeout 5000 msec/cross-node
<SELECT * FROM table_name WHERE id = yzabc LIMIT 5000>, total time 5217 msec, timeout 5000 msec/cross-node
.
..
....
.....
... (110 were dropped)发布于 2021-01-15 10:22:50
所有这些查询都来自您的应用程序。它们不是由Cassandra完成的。
来自MonitoringTask的这些消息由Cassandra 3.10+中一个称为慢查询日志记录(CASSANDRA-12403)的功能记录下来。我之前已经在这篇文章中解释过了-- https://community.datastax.com/questions/7835/。
慢查询日志记录将耗时超过slow_query_log_timeout_in_ms (默认为500ms)的查询聚合为5秒一组的“窗口”。作为聚合的一部分,列不会在日志中枚举,而是用星号(*)替换,因此可以轻松地对它们进行分组。
此外,驱动程序还启用了分页。如果您的应用程序未设置页面大小,则驱动程序的默认页面大小为5000 (LIMIT 5000)。这是您发布的慢查询消息中记录的限制。干杯!
https://stackoverflow.com/questions/65719803
复制相似问题