Чрезвычайно медленная вставка производительности OpenQuery на SQL Server на MySQL связанный сервер - PullRequest
2 голосов
/ 27 апреля 2011

Использование SQL Server Management Studio для копирования всего содержимого таблицы из SQL Server в идентичную таблицу на компьютере MySQL. БД MySQL подключена к Management Studio как связанный сервер с использованием драйвера MySQL ODBC 5.1. Использование простого оператора прекрасно работает, но выполняется крайне медленно.

INSERT INTO openquery(MYSQL, 'select * from Table1')
SELECT * from MSSQL..Table2

У меня есть таблица с 450 000 записей, и для ее передачи требуется чуть более 5 часов. Это нормально? У меня нет опыта подключения серверов MySQL.

1 Ответ

3 голосов
/ 09 мая 2011

Сколько нужно времени, чтобы просто запустить «SELECT * from MSSQL..Table2», если вы запускаете его из Management Studio?

Существует несколько причин, по которым ваш запрос может быть медленным:

  • Всякий раз, когда вы делаете массивную массовую копию, вы обычно не делаете все это за один раз, потому что большие транзакции вставки / обновления / удаления очень дороги, так как БД должна быть готова к развертыванию-был в любое время, пока транзакция не завершится.Лучше копировать партиями (скажем, 1000 записей за один раз).Хороший инструмент для создания этой массовой копии - это SSIS (который поставляется с SQL Server), который может выполнить эту группировку за вас.

  • Вы должны явно указать порядок сортировки в таблице, в которой вы находитесь.копирование из, особенно если вы копируете в таблицу, которая будет иметь кластерный индекс.Вы должны убедиться, что вы вставляете в порядке сортировки кластеризованного индекса (т.е. кластеризованный индекс обычно представляет собой int / bigint, поэтому убедитесь, что записи вставляются в порядке 1,2,3,4, а не в 100,5,27,3 и т. Д.).)

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