Массовая вставка и обновление в MySQL Cluster - PullRequest
0 голосов
/ 25 октября 2018

В настоящее время мы используем MySQL кластер с Mybaits.Когда мы выполняем массовую вставку или обновление в конкретную таблицу, это заняло более 120 секунд, но ожидание составляет менее 30 секунд.

Для записей примера 10k. Сначала мы попытались обновить строки 10k за раз, это заняло более 180-240 минут.Таким образом, мы перешли к какому-то решению, разбивающему на партии, такие как 4k, 4k, 2k, это также заняло от 120 до 180 минут.Наконец, мы разбили записи на 2k, 2k, .... потребовалось от 90 до 120 секунд, но загрузка процессора возросла.

На этой таблице нет никаких отношений.

Любые решения для этих случаев, перейдем к nosql или оптимизации на уровне дБ.

1 Ответ

0 голосов
/ 29 октября 2018

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

Когда я вставляю 20k пакетных записей в таблицу кластеров, на моем ноутбуке это занимает около 0,18 секунды.Очевидно, зависит от схемы и объема данных.

Убедитесь, что вы не используете, например, автоматическую фиксацию после каждой записи.Также используйте

INSERT ... VALUES (), (), () ... типа пакетных вставок

вместо

INSERT ... VALUES () INSERT... VALUES ()

Вы также можете увеличить размер ndb-batch-size в зависимости от объема данных, вставляемых в одну транзакцию.

Подробная информация о вашей настройке, о том, как вы вставляете ее, есть ли BLOB-объекты и как выглядят схема и данные, поможет ответить более конкретно.

...