Вставить выступление с Кассандрой - PullRequest
0 голосов
/ 10 мая 2011

извините за мой английский заранее.

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

Для одной нити эта операция заняла около 3 минут. Но я бы хотел сделать ту же операцию с 2 миллионами строк и хорошо провести время. Затем я попытался с помощью 2 потоков вставить 2 миллиона строк, ожидая аналогичного результата в течение 3-4 минут. НО я получаю результат, как 7 минут ... вдвое больше первого результата. Как я проверяю на разных форумах, многопоточность рекомендуется для повышения производительности. Вот почему я задаю этот вопрос: полезно ли использовать многопоточность для вставки данных в локальный узел (клиент и сервер находятся на одном компьютере), только в одном семействе столбцов?

Некоторые данные: - Я использую Pycassa - Я разделил реперторий commitlog и репертуар данных на разных дисках - Я использую пакетную вставку для каждой темы - Уровень согласованности: ОДИН - Коэффициент репликатора: 1

Ответы [ 4 ]

0 голосов
/ 13 декабря 2011

Удвоенное время удвоилось, потому что вы вставили вдвое больше данных. Возможно ли, что вы связаны I / O?

0 голосов
/ 11 мая 2011

Попробуйте запустить несколько клиентов в нескольких процессах, а НЕ в потоках.

Затем поэкспериментируйте с различными размерами вставки.

1M вставок за 3 минуты - это около 5500 вставок в секунду, что довольно хорошо для одного локального клиента.На многоядерном компьютере вы сможете получить эту сумму в несколько раз при условии, что вы используете несколько клиентов, возможно, вставляя небольшие партии строк или отдельные строки.

0 голосов
/ 21 мая 2011

Вы можете рассмотреть Redis.Его пропускная способность для одного узла должна быть выше.Однако он отличается от Cassandra, поэтому выбор подходящего варианта зависит от вашего варианта использования.

0 голосов
/ 10 мая 2011

Это возможно вы нажимаете на python GIL, но более вероятно, что вы делаете что-то не так.

Например, если поместить 2M строк в один пакет, это будет делать неправильно

...