Коллеги, доброго. Стоит задача - ежедневно выгружать таблицу клиентов на сайт. В таблице несколько сотен записей.
MSSQL - исходный север. MySQL - бд сайта.
Как поступил: прилинковал MySQL сервер с помощью MySQL ODBC, использую последнюю Unicode x64 версию так как mssql 2012 x64.
Формирую таблицу с нужными данными #site_tmp. затем:
Execute ('DELETE FROM `client_list_sync`')at site
INSERT INTO OPENQUERY(site, 'SELECT * FROM site_db.client_list_sync')
select *
from #site_tmp
на 100к записей уходит около часа.
плюс MySQL хостера иногда рвет соединение и передача рвется. А делать это нужно раз в сутки.
Есть идеи как ускорить это дело? За сутки данные сильно меняются и делать UPDATE вместо DELETE & INSERT большого выигрыша во времени не дадут.
1) сделать наподобие репликации через триггеры на site_db.client_list_sync
при insert|update делать через OPENQUERY DELETE + INSERT
при delete соответственно удалять. Это просто идея, так как я не знаю точно может ли MSSQL такое позволить.
2) выгрузка таблицы в файл, копирование её на сервер и загрузка данных через LOAD DATA
п.2 наверно, все равно придется реализовать, так как гарантировать целостность при подходе из п.1 нельзя.