Datastax QueryLogger
(即 Cassandra query logging through spring configuration)输出关于查询时间的良好信息。
DEBUG c.d.driver.core.QueryLogger.NORMAL - [cluster1] [localhost/127.0.0.1:9042] 查询正常完成,耗时 100 毫秒:SELECT * FROM my_table;
除了查询速度之外,我还对有效载荷的大小感兴趣。有没有办法记录检索到的数据量?像这样吗?
<块引用>查询正常完成,耗时 100 毫秒:SELECT * FROM my_table returned 5MB;
答案 0 :(得分:1)
这很复杂。首先,您需要定义“有效载荷大小”的含义。
如果您想要语句中编码值的大小,IOW,请求序列化到线路后的大小,那么您可以查看 Java 驱动程序的 Statement.computeSizeInBytes 方法。但请注意,这是驱动程序 4.x,但您似乎使用的是驱动程序 3.x。
如果您想在写入磁盘后获得突变的总大小,那就更棘手了。 Cassandra 确实有一个名为 org.apache.cassandra.db.IMutation.dataSize()
的内部实用程序;但是很难在协调器节点之外重现此算法。 DataStax Bulk Loader 有一个实用程序会尽力做到这一点:DataSizes。随意在您自己的代码中重用该逻辑。
最后,您必须修改查询记录代码以将数据大小附加到记录的消息中。默认情况下,驱动程序不会这样做。
答案 1 :(得分:0)
无法使用 QueryLogger
返回结果/有效负载大小。
我已经联系了 DataStax 的驱动程序开发人员,并会让他们回复可能的解决方案,或者我会更新我的答案。干杯!