Проблема масштабирования вставки MySQL - PullRequest
0 голосов
/ 22 мая 2018
INSERT INTO required_data (
keyword_id, search_engine_id, date, " . $periodType . "
) VALUES (
:keyword_id, :search_engine_id, :date, TRUE
) ON DUPLICATE KEY UPDATE " . $periodType . " = TRUE, received = FALSE

Этот конкретный запрос в настоящее время вставляет около 2,6-2,8 миллиона строк в обычный день, он отлично справляется.В этих случаях задача проверяет и выполняет это ежечасно.Но у нас также есть еженедельный и ежемесячный набор вкладышей.Это еще один очень большой кусок данных, который нужно вставить в тех случаях, когда у нас возникают проблемы из-за того, как долго они заканчивают работу.

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

1 Ответ

0 голосов
/ 22 мая 2018

Если вы можете объединить данные в файл импорта, вы можете использовать команду MySQL LOAD DATA INFILE.Это примерно так же быстро, как и получится.

https://dev.mysql.com/doc/refman/8.0/en/load-data.html

edit

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

Например, если вы суммируете данные журнала, вы можете легко обрабатывать 100 с ГБ в день.на маломощном оборудовании на любом из нескольких скомпилированных языков, которые непосредственно выполняют файловый ввод / вывод.

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