2014-08-01 6 views
6

В чем разница между кешем строк и кешем раздела? мне нужно будет использовать оба для хорошей перспективы Перспективы.Разница между кэшированием строк Cassandra и кешированием ключа раздела

Я уже прочитал основное определение с сайта dataStax

Перегородка кэш ключей является кэш индекса раздела для Кассандры таблицы. Использование кеша ключей вместо того, чтобы полагаться на кеш-память ОС, обеспечивает экономию времени и памяти процессора. Однако включение только кеша ключа приводит к активности диска (или кэш-памяти ОС) для фактического чтения запрошенных строк данных .

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

Может кто-нибудь уточнить область использования. нужно обе реализовать оба. ?

ответ

6

TL; DR: Вы хотите использовать Key Cache и, скорее всего, NOT хотите кеш строк.

Ключ кэш помогает C * знать, где именно начинается раздел в SStables. Это означает, что C * не должен ничего читать, чтобы определить подходящее место для поиска в файле, чтобы начать чтение строки. Это полезно практически для всех случаев использования, поскольку ускоряет чтение, значительно уменьшая необходимость в IOP в пути чтения.

Row Cache имеет гораздо более ограниченный прецедент. Кэш строк вытаскивает целые разделы в память. Если какая-либо часть этого раздела была изменена, весь кеш для этой строки недействителен. Для больших разделов это означает, что кеш может часто кэшироваться и аннулировать большие куски памяти. Поскольку вам действительно нужны в основном статические разделы, чтобы это было полезно, для большинства случаев использования рекомендуется не использовать Row Cache.

+0

HI @RussS благодарит за ответ. В моем случае использования. У меня широкие ряды. и эти ряды часто обновляются. Мой приоритет - латентность, а также пропускная способность. по вашему определению я понимаю, что всякий раз, когда строка обновляется, вся строка будет перезагружена. Поэтому мой вопрос в том, что если я масштабирую вертикально свою память. это поможет мне с кешем Row достичь лучшей латентности. – Sarkar

+0

Это, скорее всего, не поможет, но у вас будет тест, чтобы быть уверенным. Я бы чувствовал себя очень комфортно, делая ставку против кеша строки для использования, например, вашего. Для тяжелых обновлений попробуйте выровненную стратегию уплотнения. – RussS

+0

Я получил вашу точку зрения и, безусловно, пошел на тест бенчмаркинга. Думаю, прочитав «обновляющую строку» в своем заявлении, вы понимаете добавление нового столбца, а не обновление столбца. – Sarkar

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