cassandra скачивает производительность чтения в определенных строках

Пытаясь выяснить, почему чтение кассандры занимает так много времени, я использовал трассировку и ограничил количество строк. Как ни странно, когда я запрашиваю 600 строк, я получаю результат примерно за 50 миллисекунд. Но 610 строк занимает почти 1 секунду!

cqlsh> select containerdefinitionid from containerdefinition limit 600;
... lots of output ...

Tracing session: 6b506cd0-83bc-11e3-96e8-e182571757d7

 activity                                                                                        | timestamp    | source        | source_elapsed
-------------------------------------------------------------------------------------------------+--------------+---------------+----------------
                                                                              execute_cql3_query | 15:25:02,878 | 130.4.147.116 |              0
                                                                               Parsing statement | 15:25:02,878 | 130.4.147.116 |             39
                                                                              Peparing statement | 15:25:02,878 | 130.4.147.116 |            101
                                                                   Determining replicas to query | 15:25:02,878 | 130.4.147.116 |            152
 Executing seq scan across 1 sstables for [min(-9223372036854775808), min(-9223372036854775808)] | 15:25:02,879 | 130.4.147.116 |           1021
                                                                Scanned 755 rows and matched 755 | 15:25:02,933 | 130.4.147.116 |          55169
                                                                                Request complete | 15:25:02,934 | 130.4.147.116 |          56300
cqlsh> select containerdefinitionid from containerdefinition limit 610;
... just about the same output and trace info, except...

                                                            Scanned 766 rows and matched 766 | 15:25:58,908 | 130.4.147.116 |         739141

Кажется, что в данных в этих конкретных строках нет ничего необычного: - значения аналогичны значениям до и после. - с помощью команды COPY я могу экспортировать всю таблицу и импортировать в другой кластер, и производительность в порядке. - эти строки являются первым примером, но, похоже, есть и другие места, где время запроса также скачкообразно меняется. Вся таблица состоит всего из ~ 3000 строк, но для перечисления всех первичных ключей требуется ~ 15 секунд.

Кажется, что в ХРАНЕНИИ данных есть что-то необычное: - снимок, скопированный в другой кластер и импортированный, дает те же результаты с теми же ограничениями - КОПИРОВАТЬ данные в CSV, а затем в другой кластер - нет, производительность отличная

Пробовали уплотнение, восстановление, переиндексирование, очистку и обновление. Нет эффекта.

Я понимаю, что могу «исправить», копируя данные туда и обратно, но я пытаюсь понять, что здесь происходит, чтобы этого не произошло в производственной среде на таблице, слишком большой для исправления с помощью COPY.

Таблица имеет 17 столбцов, 3 индекса, первичный ключ TEXT, два столбца LIST и два столбца TIMESTAMP; остальные - ТЕКСТ. Может воспроизвести проблему как с SimpleStrategy, так и с репликацией с учетом DC. Может воспроизводиться с 4 копиями данных на 4 серверах, 2 копиями на 2 серверах и 1 копией на 2 серверах (поэтому не имеет значения, выполняется ли запрос локально или задействует несколько серверов). Cassandra-1.2 с использованием cqlsh.

Любые идеи? Предложения?


person user634943    schedule 22.01.2014    source источник
comment
Получал ли этот стол интенсивный DELETE или UPDATE трафик за последние несколько дней? Возможно, у вас есть большое количество захороненных ячеек, сгруппированных в несколько больших горячих точек в таблице. Ознакомьтесь с datastax.com/dev/ blog / для получения более подробной информации.   -  person Daniel S.    schedule 14.02.2014


Ответы (1)


Есть ли шанс, что у вас включен кеш строк для определенного раздела? Кэш строк содержит все строки, к которым недавно осуществлялся доступ в памяти, что может обеспечить гораздо лучшую производительность.

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

Не могли бы вы сообщить мне, какие настройки вы сейчас используете для кеширования строк, ключевого кеша?

person Desert Ice    schedule 18.01.2015