我第一次使用Java尝试使用cassandra db。我有以下代码,其中与db(cluster.connect)的连接需要2-4秒。
我在localhost上有一个带有SSD磁盘的数据库。我只有一个cassandra节点。任何提示如何改善这一点?
public static void main(String[] args) {
Cluster cluster;
Session session;
long start = System.currentTimeMillis();
cluster = Cluster.builder().addContactPoint("10.90.1.15").withPort(9042).build();
session = cluster.connect("demo");
long connectiontime = System.currentTimeMillis();
System.out.println(connectiontime - start);
ResultSet results = session.execute("SELECT * FROM users");
long querytime = System.currentTimeMillis();
System.out.println(querytime - connectiontime);
for (Row row : results) {
System.out.format("%s %d\n", row.getString("firstname"), row.getInt("age"));
}
ResultSet results2 = session.execute("SELECT * FROM users");
long querytime2 = System.currentTimeMillis();
System.out.println(querytime2 - querytime);
for (Row row : results2) {
System.out.format("%s %d\n", row.getString("firstname"), row.getInt("age"));
}
cluster.close();
}
答案 0 :(得分:3)
请记住,Cassandra连接有点沉重,因为它们只需设置一次然后再使用很长一段时间。对于每个小操作,连接和断开连接都是不正确的。
话虽如此,2-4秒相当长。当我连接到远程群集时,大约需要750毫秒。
您可能会查看cassandra日志,看看它是否正在做一些奇怪的事情并等待某些事情超时。您可以尝试使用“localhost”而不是机器IP作为联系点,看看是否有任何区别。如果您查看日志,可以将日志级别提高到TRACE,您可能会看到它一直在哪里花费。