我正在尝试对 Cassandra 中的记录进行分页。我为此使用分页状态。 情况 1:当我在查询中设置 LIMIT 和获取大小时,它会返回分页状态,直到未达到限制。假设获取大小为 10,限制为 100,它将返回分页状态,直到未检索到 100 条记录,然后返回 null。如何进一步分页?
案例2:当我只设置获取大小并且没有限制时,我可以对所有记录进行分页。
我想了解如果我不设置限制,是否会对性能产生负面影响?
我尝试过有或没有LIMIT。
您描述的行为是正确/预期的:
无论您做什么,Cassandra 中的所有请求都会被分页(默认页面大小为 5000)。
LIMIT X
不会阻止对表进行完整扫描的请求。在 Cassandra 查询中,为了获得良好的性能,where
子句中始终需要分区键,否则您很容易遇到客户端超时(Cassandra 表可以毫无问题地容纳数十亿行)。
// BOTH are quite bad
select * from TABLE LIMIT 1;
select * from TABLE;
如果您将页面大小设置为
10
并限制为100
,客户端将进行寻呼,直到达到 100 个大总数,或者退出或不再记录。您驱动程序逐页获取。