Моя Cassandra таблица имеет следующие схемыCassandra Чтение/Получить Производительность
CREATE TABLE cachetable1 (
id text,
lsn text,
lst timestamp,
PRIMARY KEY ((id))
) WITH
bloom_filter_fp_chance=0.010000 AND
caching='{"keys":"ALL", "rows_per_partition":"ALL"}' AND
comment='' AND
dclocal_read_repair_chance=0.100000 AND
gc_grace_seconds=864000 AND
read_repair_chance=0.000000 AND
default_time_to_live=0 AND
speculative_retry='99.0PERCENTILE' AND
memtable_flush_period_in_ms=0 AND
compaction={'class': 'SizeTieredCompactionStrategy'} AND
compression={'sstable_compression': 'LZ4Compressor'};
Над таблицей содержит 221 миллионов строк (ок. 16 ГБ) данных. CassandraDaemon работает с 4-гигабайтным пространством кучи, и я сконфигурировал 4 ГБ памяти для кеша строк. Я пытаюсь запустить запросы на выборку из моего кода Java, как этот
for(int i = 0; i < 1000; i ++)
{
int id = random.nextInt(20000000 - 0) + 0;
for(j = id; j <= id + 100; j++)
{
ls.add(j+"");
}
Statement s = QueryBuilder.select("lst","lsn").from("ks1" , "cachetable1").where(QueryBuilder.in("id",ls.toArray()));
s.setFetchSize(100);
ResultSet rs=sess.execute(s);
List<Row> lsr=rs.all();
for(Row rw:lsr)
{
//System.out.println(rw.toString());
count++;
}
ls.clear();
}
В коде выше, я пытаюсь принести 0,1 миллиона записей. Но производительность чтения/получения очень плохая. Для получения 0,1 миллиона строк требуется 400-500 секунд. Есть ли лучший способ читать/получать записи из Cassandra через Java? Требуется ли какая-либо настройка, кроме размера кеша строки и размера кучи Cassandra?
Я уже пробовал то, что вы предлагаете. Я изменил свой код как: для (int c = 0; c
Тогда следующий подход к попытке (то есть, где вы, вероятно, увидите самый большой баг для вашего доллара), является моим вторым предложением, и посмотрите, есть ли способ смоделировать таблицу запросов для этих идентификаторов. Я полагаю, вы могли бы также попытаться «СЧИТАТЬ» ваши id-запросы и отправить их в Cassandra вместе, но «BATCH» также не известен как исполнитель. – Aaron