Почему моя база данных Cassandra так медленно считывает данные? Я хотел бы прочитать 100 000 строк менее чем за 10 секунд

У меня есть таблица статей «cassandra» с 400 000 строк с

primary key (source,created_at desc) 

Когда я запрашиваю наши данные, используя:

 select * from articles where source = 'abc' and created_at <= '2016-01-01 00:00:00' 

загрузка 110 000 строк занимает 8 минут.

Это очень медленно, и я не знаю, где ошибка.

Я хотел бы загрузить 100 000 строк менее чем за 10 секунд. Не уверен, что это возможно?

Вот еще несколько деталей:

  • У меня 3 узла, replication factor =2, stragegy=SimpleStrategy , 4CPU, 32G RAM
  • Я использую Cassandra-driver-3.0.0. Я не уверен, что это происходит из python или Cassandra, поскольку мы также используем python.

Вот моя схема CQL:

 CREATE TABLE crawler.articles ( source text, created_at timestamp, id text, category text, channel text, last_crawled timestamp, text text, thumbnail text, title text, url text, PRIMARY KEY (source, created_at, id) ) WITH CLUSTERING ORDER BY (created_at DESC, id ASC) AND bloom_filter_fp_chance = 0.01 AND caching = '{"keys":"ALL", "rows_per_partition":"ALL"}' AND comment = '' AND compaction = {'sstable_size_in_mb': '160', 'enabled': 'true', 'unchecked_tombstone_compaction': 'false', 'tombstone_compaction_interval': '86400', 'tombstone_threshold': '0.2', 'class': 'org.apache.cassandra.db.compaction.LeveledCompactionStrategy'} AND compression = {'sstable_compression': 'org.apache.cassandra.io.compress.LZ4Compressor'} AND dclocal_read_repair_chance = 0.1 AND default_time_to_live = 604800 AND gc_grace_seconds = 864000 AND max_index_interval = 2048 AND memtable_flush_period_in_ms = 0 AND min_index_interval = 128 AND read_repair_chance = 0.0 AND speculative_retry = '99.0PERCENTILE'; CREATE INDEX articles_id_idx ON crawler.articles (id); CREATE INDEX articles_url_idx ON crawler.articles (url); 

Спасибо за ваши ответы!

Очень сложно сказать точную проблему, не зная точную конфигурацию.

Но вы можете проверить следующее:

 Monitor Cassandra for memory consumption and stage throughput. Set your Memtable thresholds low. Access Cassandra concurrently. Don't store all your data in a single row. Check for time-outs. What is the size of javaHeap?