You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PreparedStatement与QueryBuilder追踪Cassandra查询?

为Cassandra PreparedStatement开启查询追踪的解决方案

Cassandra的查询追踪(Query Tracing)可通过两种方式实现,以下是针对你的场景的具体方案:

方法一:执行绑定语句时临时开启追踪

针对单次查询开启追踪,是最常用的调试方式,不会影响其他查询性能。代码示例如下:

// 绑定参数到PreparedStatement
BoundStatement boundStatement = preparedStatement.bind(/* 传入对应Marks参数的值 */);
// 开启当前查询的追踪
boundStatement.setTracing(true);

// 执行查询
ResultSet resultSet = session.execute(boundStatement);

// 获取并打印追踪详情
QueryTrace trace = resultSet.getExecutionInfo().getQueryTrace();
System.out.println("追踪ID: " + trace.getTraceId());
System.out.println("查询启动时间: " + trace.getStartedAt());
// 遍历所有追踪事件,查看查询执行的全流程
for (QueryTrace.Event event : trace.getEvents()) {
    System.out.printf("[%s] %s: %s%n", event.getTimestamp(), event.getSource(), event.getDescription());
}

方法二:创建PreparedStatement时默认开启追踪

如果希望该PreparedStatement的所有执行都自动开启追踪,可以在创建阶段配置默认追踪:

// 用QueryBuilder构建查询语句
Select selectQuery = QueryBuilder.selectFrom(Student)
        .columns(SELECT_FIELDS)
        .whereColumn(Marks).isEqualTo(QueryBuilder.bindMarker(Marks));

// 创建PreparedStatement时启用默认追踪
PreparedStatement preparedStatement = session.prepare(selectQuery.toString())
        .withTracing(true);

注意事项

  • 查询追踪会产生额外性能开销,仅用于调试或问题排查,生产环境请勿全局开启。
  • Cassandra默认启用追踪功能,若集群关闭了该功能,可修改cassandra.yaml中的enable_query_tracing: true重新开启。
  • 追踪历史数据会存在集群的system_traces.sessions和system_traces.events表中,也可直接查询这两个表获取过往追踪记录。

内容的提问来源于stack exchange,提问作者enthusiast

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 13:52:35