Я смотрю на реализацию CF в Cassandra, которая имеет очень длинные строки (от сотен тысяч до миллионов столбцов в строке).
Используя полностью фиктивные данные, я вставил 2 миллиона столбцов водин ряд (равномерно распределенный).Если я выполняю операцию среза, чтобы получить 20 столбцов, то я замечаю значительное снижение производительности по мере того, как вы выполняете операцию среза дальше по строке.
В большинстве столбцов я, кажется, могу обслуживатьувеличение среза приводит к 10-40 мс, но по мере приближения к концу строки производительность достигает предела, время отклика постепенно увеличивается с 43 мс на отметке 1 800 000 до 214 мс на 1 900 000 и на 435 мс на 1 999 900!(Все срезы имеют одинаковую ширину.)
Я затрудняюсь объяснить, почему происходит такое значительное снижение производительности, когда вы добираетесь до конца строки.Может ли кто-нибудь дать какие-то указания относительно того, что Кассандра делает внутренне, чтобы сделать такую задержку?Кэширование строк отключено, и в значительной степени все является установкой Cassandra 1.0 по умолчанию.
Предполагается, что она способна поддерживать до 2 миллиардов столбцов в строке, но при такой скорости увеличения производительности это будет означать, что она может 'в практических ситуациях его можно использовать для очень длинных строк.
Большое спасибо.
Предостережение, я выполняю 10 параллельных запросов одновременно, поэтому они немного медленнеев любом случае, чем я ожидал, но это справедливый тест для всех запросов, и даже просто выполняя их все последовательно, наблюдается странное снижение между 1 800 000 и 1 900 000 записью.
Я также заметил, ЧРЕЗВЫЧАЙНО плохопроизводительность при выполнении обратных слайсов только для одного элемента при 200 000 столбцов в строке: query.setRange (end, start, false, 1);