2013-09-04 2 views
3

В настоящее время я переписываю сценарий push-данных, который извлекает данные из базы данных MSSQL на другом сервере и затем вставляет данные в базу данных MySQL. Этот процесс запускается в ночное время и обрабатывается через PHP.INSERT ... ON DUPLICATE KEY UPDATE vs TRUNCATE/INSERT

Оригинальный сценарий TRUNCATE s таблицы и повторные вставки всех данных в ночное время. Некоторые из таблиц имеют первичные уникальные ключи, которые поступают из базы данных MSSQL. В некоторых таблицах нет.

Я рассматриваю возможность добавления общих первичных ключей к таблицам MySQL, которые в настоящее время не имеют их, поэтому я могу сделать INSERT ... ON DUPLICATE KEY UPDATE вместо опорожнения таблиц и повторной установки данных каждую ночь. Первичные ключи будут использоваться только по этой причине.

Будет ли процесс более быстрым/менее ресурсоемким, если бы я сделал INSERT ... ON DUPLICATE KEY UPDATE по сравнению с TRUNCATE, а затем INSERT как скрипт в настоящее время? Стоит ли хлопотать о создании общих первичных ключей на таблицах, которые в настоящее время не имеют их только для того, чтобы сделать INSERT ... ON DUPLICATE KEY UPDATE? Я ищу наилучшую производительность из этого скрипта.

ответ

0

Трудно дать общий ответ, не зная специфики ваших данных. Я хотел бы знать размер таблиц в строках, и если вы используете Innodb. Однако, если таблицы небольшие < 1000 строк и/или не использовать Innodb, я бы просто оставил как есть. Однако, если у вас большие таблицы, я видел резкие улучшения в скорости, используя метод INSERT..ON DUPLICATE.

Хорошим процессом может быть переход на один или два больших стола и измерение скорости. Если стоит, то продолжайте с остальными.

Смежные вопросы