2013-08-12 1 views
0

У меня есть следующая структура таблицы:Кассандра имеет медленный (RPC тайм-аут) запрос на чтение с долго оператором

SELECT * FROM v WHERE uid = 0x5103be34e695ba3c31000000; 

uid      | cid  | v 
----------------------------+-----------+------- 
0x5103be34e695ba3c31000000 | 02j1Dy9G1 | True 
0x5103be34e695ba3c31000000 | 03szNx7G1 | False 
0x5103be34e695ba3c31000000 | 0SREjO9G1 | True 
0x5103be34e695ba3c31000000 | 0bQ4Qn9G1 | True 
0x5103be34e695ba3c31000000 | 0ojEVLWF1 | True 
0x5103be34e695ba3c31000000 | 1NiWfO9G1 | True 
0x5103be34e695ba3c31000000 | 1fSmhWGF1 | True 
0x5103be34e695ba3c31000000 | 1o0Ri3TF1 | True 

пользователя (UID) любит (True) или антипатии (False) содержание (CID)

«Является ли контент любимым пользователем?»

SELECT * FROM v WHERE uid = 0x5103be34e695ba3c31000000 AND cid IN ('Rqy9V79J',....more than 2000 cids...); 

rpc timeout 

Normal SELECT * FROM v WHERE uid = 0x5103be34e695ba3c31000000 works very fast. 

Как я могу ускорить запрос на чтение с помощью IN? Другая структура данных? Любые идеи?

+0

Вы можете оставить полную схему (создать таблицу заявление), включая любые индексы? – Richard

+0

Сколько экземпляров в вашем кластере? Если у вас более одного, задайте согласованность с local_quorum и посмотрите, есть ли у вас такая же проблема. – user1452132

ответ

1

Оператор IN со многими параметрами требует больше памяти для каждого потока.

Чтобы исправить это попытаться установить JVM_OPTS = «$ JVM_OPTS -Xss512k»