2013-03-01 3 views
3

Пример файла конфигурации, предоставленного Cassandra 1.2.2, имеет row_cache_size_in_mb из 0, что полностью отключает кеширование строк. Учитывая, что кеширование строк has been touted as giving read performance gains, я был удивлен, не выделяет никакого кэша строк вообще, даже не несколько десятков МБ.Кэширование строк Cassandra не стоит

Действительно ли это так, что кеширование строк - это больше не стоит для большинства сценариев? Или это не стоило для большинства сценариев? Это только worthwhile as a replacement for memcached?

+0

Строка кэш может использовать много памяти: http://stackoverflow.com/q/7979696/545127 – Raedwald

ответ

3

Ряд кэширования может помочь при чтении многих чтений из относительно небольших семейств столбцов. Хотя в противном случае данные будут храниться в кеше файловой системы ОС, меньше процессор будет строить ответ от объектов кеша строк, чем из кэшированного SSTable. В некоторых тестах я сделал это на 30% быстрее чтения из кеша строк, хотя это будет зависеть от вашей модели данных.

Другим вариантом использования кэша строк является то, что вы предпочитаете преимущественно связывать семейство столбцов в кеше, а не полагаться на политику кэширования ОС.

Однако для неподъемных CFs кеш строк может снизить производительность. Вероятно, поэтому он отключен по умолчанию. Поэтому вы должны использовать только кеширование строк, когда получаете разумную скорость. Вы можете проверить это с вывода информации nodetool.

+1

«было 30% быстрее» не очень большое улучшение чего-то, что может быть очень голодная память. – Raedwald

3

Кэш строк теперь более полезен с 2.1, так как вам не нужно хранить весь раздел в памяти. Это выполняется с количеством строк для каждого раздела в определении таблицы. Он лучше всего подходит для запросов, в которых вы выбираете x самый последний и используете порядок кластеризации.

http://www.datastax.com/dev/blog/row-caching-in-cassandra-2-1

Смежные вопросы