发现Cassandra java应用程序发出的所有查询的好方法是什么?

发现Cassandra java应用程序发出的所有查询的好方法是什么?,cassandra,Cassandra,对于SQL db,我可以打开驱动程序上的日志来查看所做的查询。。。如果我有权访问数据库服务器,也可以在服务器端记录它们 卡桑德拉是如何做到这一点的?您可以使用 QueryLogger为客户端提供了记录驱动程序执行的查询的能力,特别是它允许客户端跟踪慢速查询,即完成时间超过配置阈值(毫秒)的查询 QueryLogger示例代码 try (Cluster cluster = Cluster.builder().addContactPoints("127.0.0.1").withCredentials

对于SQL db,我可以打开驱动程序上的日志来查看所做的查询。。。如果我有权访问数据库服务器,也可以在服务器端记录它们

卡桑德拉是如何做到这一点的?

您可以使用

QueryLogger为客户端提供了记录驱动程序执行的查询的能力,特别是它允许客户端跟踪慢速查询,即完成时间超过配置阈值(毫秒)的查询

QueryLogger示例代码

try (Cluster cluster = Cluster.builder().addContactPoints("127.0.0.1").withCredentials("username", "password").build(); Session session = cluster.connect("test")) {
    QueryLogger queryLogger = QueryLogger.builder()
            .withConstantThreshold(500)
            .build();
    cluster.register(queryLogger);
    for (Row row : session.execute("select userid, firstname from users limit 10")) {
        System.out.println(row);
    }
}
此处withConstantThreshold(500)表示耗时超过1000毫秒的查询将被视为慢速查询

使用以毫秒为单位的常数阈值跟踪慢速查询的QueryLogger。此实现是默认实现,应优先于仍处于测试状态的QueryLogger.DynamicThresholdQueryLogger

您需要将记录器级别设置为DEBUG turn Query Logging enable