【发布时间】:2018-03-21 15:15:32
【问题描述】:
在我访问 Cassandra 的 Java 应用程序中,它可以每秒插入 500 rows,但每秒只能更新 50 rows(实际上更新的行并不存在)。
更新一百个字段与更新一个字段一样快。
我只是在 Java 应用程序中使用CQL statements。
这种情况正常吗?如何改进我的应用程序?
public void InsertSome(List<Data> data) {
String insertQuery = "INSERT INTO Data (E,D,A,S,C,......) values(?,?,?,?,?,.............); ";
if (prepared == null)
prepared = getSession().prepare(insertQuery);
count += data.size();
for (int i = 0; i < data.size(); i++) {
List<Object> objs = getFiledValues(data.get(i));
BoundStatement bs = prepared.bind(objs.toArray());
getSession().execute(bs);
}
}
public void UpdateOneField(Data data) {
String updateQuery = "UPDATE Data set C=? where E=? and D=? and A=? and S=?; ";
if (prepared == null)
prepared = getSession().prepare(updateQuery);
BoundStatement bs = prepared.bind(data.getC(), data.getE(),
data.getD(), data.getA(), data.getS());
getSession().execute(bs);
}
public void UpdateOne(Data data) {
String updateQuery = "UPDATE Data set C=?,U=?,F........where E=? and D=? and A=? and S=? and D=?; ";
if (prepared == null)
prepared = getSession().prepare(updateQuery);
......
BoundStatement bs = prepared.bind(objs2.toArray());
getSession().execute(bs);
}
架构:
Create Table Data (
E,
D,
A,
S,
D,
C,
U,
S,
...
PRIMARY KEY ((E
D),
A,
S)
) WITH compression = { 'sstable_compression' : 'DeflateCompressor', 'chunk_length_kb' : 64 }
AND compaction = { 'class' : 'LeveledCompactionStrategy' };
另一种情况:
我使用同一个应用程序来访问另一个 cassandra 集群。结果是不同的。 UPDATE 和 INSERT 一样快。但它每秒只能插入/更新 5 行。这个 cassandra 集群是在 GCE 上运行的 DataStax Enterprise(我在 Google Cloud Launcher 上使用了默认的 DataStax Enterprise) 所以我认为可能是某些配置是原因。但我不知道它们是什么。
【问题讨论】:
-
您也可以在这里发布您的表的架构吗?
标签: cassandra