2016-11-03 74 views
2

Datastax的cassandra的java驱动提供了Accessor。请参考heredatastax cassandra java驱动程序的Accessor使用分页吗?

参考他们的例子,他们是否分批进行分页和抓取记录,或者是否存在查询超时的风险?

@Accessor 
public interface UserAccessor { 
    @Query("SELECT * FROM user") 
    Result<User> getAll(); 
} 

当我说分页,做自己内部做类似下面

Statement stmt = new SimpleStatement("SELECT * FROM user"); 
stmt.setFetchSize(24); 
ResultSet rs = session.execute(stmt); 

回答

5

是有幕后使用的提取大小的东西。驱动程序将根据需要为您自动寻找页面。

您可能需要通过@QueryParameters设置获取大小。此时的默认值为5k,请参见DEFAULT_FETCH_SIZE

+0

感谢杰夫。任何想法如果不通过@QueryParameters配置任何东西,幕后默认的获取大小是多少? –

+1

用当前的默认值和指向代码的链接更新了答案。 –

+0

@VinodJayachandran在接受之前还有什么需要从答案中得到的吗? –

1

下面是我如何使用FETCHSIZE在@QueryParameters注释一个访问中的例子:

@Accessor 
public interface UserAccessor {  

    @Query("SELECT * FROM users") 
    @QueryParameters(fetchSize = 1000) 
    Result<User> getAllUsers(); 
} 
相关问题