我正在开发一种使用 cassandra 作为数据库的新产品。现在安装在单个 ubuntu 13.10 开发笔记本电脑核心 i7 上。我有一个列族和一个查询。在 cqlsh 中执行的这个查询给出 33267 行。在我的 java 程序上执行,使用 datastax java driver 2.0,一些执行给出正确的行,其他的进入无限循环,一次又一次地重复相同的行:
while (!rs.isExhausted()) {
Row row = rs.one();
long hora = row.getDate(1).getTime();
String clave = row.getString(0);
List<Long> data = row.getList(2, Long.class);
ordenados.put(hora, new Object[]{clave, data.get(0) / 100000000.0, data.get(1)});
contador2 +=1;
if (Math.floor(contador2/1000.0) == contador2/1000.0) {
System.out.println("sitio "+ contador2+ " "+clave+ " "+hora);
}
}
在分析应用程序时,我看到新 I/O 工作线程之间的锁争用,98% 的时间花在 sun.nio.ch.EPollArrayWrapper.poll 方法上。有人遇到过这个问题并知道解决方案吗?有人可以直接链接到下载 cassandra-driver-core-2.0.0.src.jar 的链接,以便我可以使用源代码调试错误并报告给 datastax?这是一项令人兴奋的技术,但在我的职业生涯中,生产数据库第一次给我带来如此不可靠的行为。顺便说一句:原始查询有一个我删除的订单。使用 order by,我得到了这个异常:线程“main”com.datastax.driver.core.exceptions.InvalidQueryException 中的异常:无法使用 ORDER BY 和对分区键的 IN 限制分页查询;您必须删除 ORDER BY 或 IN 并对客户端进行排序,或禁用此查询的分页昨天处理类似查询和 cqlsh 时,添加的顺序没有问题。我只是谈论这个问题,因为也许两者都是相关的。问候