如何解决Cassandra 查询日志记录:数据大小
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;
解决方法
这很复杂。首先,您需要定义“有效载荷大小”的含义。
如果您想要语句中编码值的大小,IOW,请求序列化到线路后的大小,那么您可以查看 Java 驱动程序的 Statement.computeSizeInBytes 方法。但请注意,这是驱动程序 4.x,但您似乎使用的是驱动程序 3.x。
如果您想在写入磁盘后获得突变的总大小,那就更棘手了。 Cassandra 确实有一个名为 org.apache.cassandra.db.IMutation.dataSize()
的内部实用程序;但是很难在协调器节点之外重现此算法。 DataStax Bulk Loader 有一个实用程序会尽力做到这一点:DataSizes。随意在您自己的代码中重用该逻辑。
最后,您必须修改查询记录代码以将数据大小附加到记录的消息中。默认情况下,驱动程序不会这样做。
,无法使用 QueryLogger
返回结果/有效负载大小。
我已经联系了 DataStax 的驱动程序开发人员,并会让他们回复可能的解决方案,或者我会更新我的答案。干杯!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。