Кассандра намного медленнее, чем Mysql для простых операций? - PullRequest
7 голосов
/ 13 января 2012

Я вижу много утверждений, таких как: «Кассандра очень быстро записывает», «Кассандра читает действительно медленнее, чем запись, но намного быстрее, чем Mysql»

В моей системе Windows7: я установил Mysql по умолчаниюконфигурации.Я установил PHP5 конфигурации по умолчанию.Я установил Casssandra конфигурации по умолчанию.

Выполнение простого теста записи в MySQL: «INSERT INTO wp_test (id, title) VALUES ('id01', 'test')" дает мне результат:0,0002 (s) Для 1000 вставок: 0,1106 (s)

Выполнение простого теста записи на Cassandra: $ column_faily-> insert ('id01', массив ('title' => 'test')) дает мнерезультат: 0,005 (s) Для 1000 вставок: 1,047 (s)

Для тестов на чтение я также получил, что Cassandra намного медленнее, чем mysql.

Так что вопрос, это звучит правильно, чтоу меня есть 5 мс на одну операцию записи на Кассадре?Или что-то не так и должно быть не менее 0,5 мс.

Ответы [ 4 ]

12 голосов
/ 13 января 2012

Когда люди говорят «Кассандра быстрее, чем MySQL», они имеют в виду, когда вы имеете дело с терабайтами данных и многими пользователями одновременно.Cassandra (и многие распределенные базы данных NoSQL) оптимизированы для сотен одновременных программ чтения и записи на многих узлах, в отличие от MySQL (и других реляционных БД), которые оптимизированы для быстрой действительно на одном узле, нокак правило, распадаются на части при попытке масштабировать их по нескольким узлам.Между прочим, существует компромисс между этим компромиссом: самый быстрый дисковый ввод-вывод - это простые старые плоские файлы UNIX, и многие финансовые приложения, чувствительные к задержке, используют их по этой причине.

Если вы создаетена следующем Facebook вы захотите что-то вроде Cassandra, потому что один блок MySQL никогда не выдержит наказания за тысячи одновременных операций чтения и записи, тогда как с Cassandra вы можете масштабировать до сотен узлов данных и легко справляться с этой загрузкой.См. увеличение или уменьшение .

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

2 голосов
/ 13 января 2012

Кассандра значительно выигрывает от распараллеливания и пакетирования. Попробуйте выполнить 1 миллион вставок в каждом из 100 потоков (каждый со своим соединением и партиями по 100) и посмотрите, какие из них быстрее.

Наконец, производительность вставки Cassandra должна быть относительно стабильной (поддерживая высокую пропускную способность в течение очень длительного времени). С MySQL вы обнаружите, что он довольно резко сокращается после того, как дерево btrees, используемое для индексов, увеличило объем памяти.

0 голосов
/ 07 июня 2019

Многие факторы пространства пользователя могут повлиять на производительность записи.Например:

  • Десятки настроек в каждой конфигурации сервера базы данных.
  • Структура и настройки таблицы.
  • Настройки соединения.
  • Настройки запроса.

Вы глотаете предупреждения или исключения?Предполагается, что образец MySQL по номиналу вызовет ошибку дублирующего ключа.Это может потерпеть неудачу, вообще ничего не делая.То, что Cassandra может делать в том же случае, мне не знакомо.

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

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

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

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

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

Если вы действительно хотите быструю вставку, добавьтефайл на рамдиске.

0 голосов
/ 13 января 2012

Вероятно, зрелость драйверов MySQL, особенно улучшенных драйверов MySQL в PHP 5.3, оказывает некоторое влияние на тесты.Также вполне возможно, что простота данных в вашем запросе влияет на результаты - возможно, на 100 вставках значений Cassandra становится быстрее.

Попробуйте тот же тест из командной строки и посмотрите, какие временные метки, а затемпопробуйте с переменным количеством значений.Вы не можете сделать ни одного теста и основывать свое решение на этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...