cassandra数据库-提取时间比Netflix Astyanax驱动程序长于datastax驱动程序

问题描述

我们正在从Netflix Astyanax迁移到Datastax驱动程序-详细信息如下

使用的驱动程序:
astyanax-cassandra(由Netflix提供);版本1.56.37
datastax-driver-core;版本3.3.2

Java版本:jdk 1.8
Servlet容器:Jetty 9.x
Cassandra版本:2.0.9

示例功能代码
从UUID列表中,它使用in子句过滤并从cassandra db中获取数据。

 public boolean isColumnIdExists(List<UUID> attrList) { 
        boolean IdExists = true;        
        try {
            
            Statement SEARCH_CQL = null;
             {              
                        // Build the statement with in clause using either of these 
                        QueryBuilder api or 
                        Prepared statment or
                        netflix api 
                        //

            } 
            final ResultSet resultSet = CassandraConnectUtil.getSession().execute(SEARCH_CQL);          
            
            for (Row row : asIterable(resultSet.iterator())) {              
                if (row.getTimestamp("deletedbytimestamp") == null) {                   
                    IdExists = true;
                    break;
                }
            }
        } catch (Exception ex) {
            throw new Exception("Exception",ex);
        }
        return IdExists;
    }

执行以上代码后,使用Netflix Astyanax驱动程序获取结果的响应时间大约需要25ms,而Datastax驱动程序则需要500ms左右的响应时间。 不同驱动程序的获取时间差异很大。 有没有一种方法可以改善上述datastax版本中的性能

解决方法

我们不知道getSession中发生了什么,但是是否有可能在第一次调用会话时连接会话?

确保您遵循best practices,在应用程序启动时初始化会话,并在应用程序的生存期内使用单个实例。