В моем приложении Java, доступном для Cassandra, он может вставлять 500 rows
в секунду, но обновлять только 50 rows
в секунду (фактически обновленные строки не существовали).Вставка в 10 раз быстрее, чем обновление в Кассандре. Это нормально?
Обновление сто полей происходит так же быстро, как обновление одного поля.
Я просто использую CQL statements
в приложении Java.
В этой ситуации нормально? Как я могу улучшить свое приложение?
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' };
Другой сценарий:
Я использовал то же самое приложение для доступа к другому Кассандры кластера. Результат был другим. UPDATE было так же быстро, как INSERT. Но это только INSERT/UPDATE 5 строк в секунду. Этот кластер cassandra - это DataStax Enterprise, работающий на GCE (я использовал DataStax Enterprise по умолчанию в Google Cloud Launcher) Так что я думаю, что, вероятно, некоторые конфигурации являются причинами. Но я не знаю, кто они.
Не могли бы вы также разместить схему своего стола? – markc