【问题标题】:Cassandra Query execution time analysisCassandra Query执行时间分析
【发布时间】:2016-03-08 14:43:59
【问题描述】:

我是 Cassandra CQL 的新手,我想获取 Cassandra 查询的执行时间。我可以通过将当前时间存储在变量中,执行查询然后将当前时间存储在另一个变量中并通过取两个变量的差来计算实际执行时间来在 CQL shell 中执行此操作。谁能指导我。

【问题讨论】:

  • 您也可以通过驱动程序启用跟踪。取决于您要测量的内容。

标签: java cassandra query-performance cql cqlsh


【解决方案1】:

在 cqlsh 中,您最好的选择可能是使用跟踪(为简洁起见缩短了输出):

aploetz@cqlsh:stackoverflow> tracing on;
Now Tracing is enabled
aploetz@cqlsh:stackoverflow> SELECT * FROM sujata WHERE id=2;

 id | roll_number | age
----+-------------+-----
  2 |          10 |  26
  2 |          20 |  26

(2 rows)

Tracing session: 35072590-99fb-11e5-beaa-8b496c707234

 activity                                                                                        | timestamp                  | source    | source_elapsed
-------------------------------------------------------------------------------------------------+----------------------------+-----------+----------------
                                                                              Execute CQL3 query | 2015-12-03 14:19:51.027000 | 127.0.0.1 |              0
                                  Parsing SELECT * FROM sujata WHERE id=2; [SharedPool-Worker-1] | 2015-12-03 14:19:51.034000 | 127.0.0.1 |          12378
                                                       Preparing statement [SharedPool-Worker-1] | 2015-12-03 14:19:51.035000 | 127.0.0.1 |          13415
                                 Executing single-partition query on roles [SharedPool-Worker-2] | 2015-12-03 14:19:51.036000 | 127.0.0.1 |          14052
    .................................................
                                         Read 2 live and 0 tombstone cells [SharedPool-Worker-2] | 2015-12-03 14:19:51.054001 | 127.0.0.1 |          32768
                                                                                Request complete | 2015-12-03 14:19:51.063069 | 127.0.0.1 |          36069

编辑:

我可以将此跟踪日志报告存储到某个文件中吗...?

是的,你可以。如果我要从 Linux 命令行运行上述跟踪,并将其输出到一个文件,我将首先创建一个文件来保存我的 cqlsh 命令:

aploetz@dockingBay94:~/cql$ cat traceSujata.cql 

use stackoverflow;
tracing on;
SELECT * FROM sujata WHERE id=2;

然后,我将使用 cqlsh 上的 -f 标志从该文件运行命令,然后将输出重定向到另一个文本文件。

aploetz@dockingBay94:~/cql$ cqlsh -f traceSujata.cql > queryTrace_20151204.txt

现在您可以在闲暇时仔细阅读查询跟踪文件!

【讨论】:

  • Aaron,感谢您的回复...我在 cqlsh 中使用了跟踪。但是我的表有大约 50,000 条记录,因此跟踪日志报告很长并且已经过去了,这就是为什么我无法获取查询执行的开始时间但显示结束时间的原因。谁能告诉我如何访问跟踪报告的起点,或者我可以将此跟踪日志报告存储到某个文件...?我也欢迎任何其他解决我的问题的方法。谢谢
【解决方案2】:

选项 A

使用 datastax 开发中心,您可以直接访问请求使用的时间。

进入“查询跟踪”选项卡,就在“结果”旁边。

更多信息:http://docs.datastax.com/en/developer/devcenter/doc/devcenter/dcQueryTrace.html

选项 B

tracing on

更多信息:http://www.datastax.com/dev/blog/tracing-in-cassandra-1-2

Nb : 选项 A 使用选项 B

【讨论】:

  • 不错!我不知道你可以从 DevCenter 做到这一点。
【解决方案3】:

(1) 如果查询很小,只需使用like:

use nishi;
tracing on;
select * from family where name='nkantkumar';

(2) 如果查询语句很大,一次说1k,5k个select语句。

cd <CASSANDRA_HOME>/bin
cqlsh -f '/apps/nkantkumar/query.txt' > '/apps/nkantkumar/traceQuery.cql'

您的查询文件将如下所示:-

use nishi;

tracing on;

select * from family where name='nkantkumar';

select * from family where name='nkantkumar1';

select * from family where name='nkantkumar2';

【讨论】:

    【解决方案4】:

    我尝试使用其他答案建议的跟踪方法,但是关于我的查询性质的某些事情意味着跟踪需要很长时间才能返回。

    由于我只是一次性比较两个选项之间的查询性能,因此我编写了一个包含 SQL 命令的文件来执行命令,在执行查询之前和之后获取时间戳。然后,我将时间戳复制到 Microsoft Excel 中,并用它来计算以秒为单位的差异(在剥离 +0000 时区信息以便 Excel 可以理解之后)。

    timing.sql

    SELECT toTimestamp(now()) FROM system.local;
    SELECT * from TABLE_1;
    SELECT toTimestamp(now()) FROM system.local;
    SELECT * from TABLE_2;
    SELECT toTimestamp(now()) FROM system.local;
    

    执行timing.sql

    cqlsh example.com -u my_user --file=timing.sql
    

    当前时间输出

    SELECT toTimestamp(now()) FROM system.local;
    
     system.totimestamp(system.now())
    ----------------------------------
      2020-11-18 16:10:35.745000+0000
    

    Excel 日期差异

    =(C1-B1)*60*60*24
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 2012-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多