Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
JMLabs Member Откуда: Сообщений: 69 |
Помогите пожалуйста решить такую задачу. Есть 2 сервера БД, один - продакшн, другой для подготовки отчетов и аналитики. Нужно время от времени синхронизировать данные одной из таблиц из БД продакшн в БД аналитики. К сожалению репликацию сделать не могу, т.к. БД продакшн (publisher) закрыта извне. Для решения задачи у меня написан скрипт который "смотрит" каких записей нет в таблице аналитической БД по сравнению с БД продакшн и инсертит их. Суть скрипта такая:INSERT INTO receiver SELECT * FROM source LEFT JOIN receiver ON receiver.id = source.id WHERE receiver.id IS NULL Однако с постом числа строк в синхронизируемых таблицах это скрипт все медленнее и медленнее работает. На таблице в полмиллиона строк вообще умирает. Какие могут быть идеи для оптимизации синхронизации? |
12 июн 18, 20:53 [21486731] Ответить | Цитировать Сообщить модератору |
Критик Member Откуда: Москва / Калуга Сообщений: 34759 Блог |
естественно не будет работать, т.к. вы джойните таблицы на разных серверах, есть много вариантов решения - от допиливания источника, чтобы там было логирование изменений, до покупки специализированного ПО, которое читает лог и транслирует изменения, подозреваю, что в вашем случае доступно такое - тащить последние N месяцев во времянку и потом джойнить, а скажем по выходным тащить всю таблицу в ту же времянку и джойнить ее |
12 июн 18, 21:36 [21486809] Ответить | Цитировать Сообщить модератору |
KRS544 Member Откуда: Сообщений: 497 |
Еще наверняка и через Linked Server? Дешевле наверняка будет целиком закачивать каждый раз. Попросите добавить на продакш поле Timestamp (что не поможет отслеживать удаленные записи, но у вас и так этого нет) |
12 июн 18, 21:41 [21486823] Ответить | Цитировать Сообщить модератору |
JMLabs Member Откуда: Сообщений: 69 |
Да, второй сервер прилинкован. Поле даты есть, я понимаю идею - взять в сравнение только последнюю неделю например, но что делать если вдруг не отработает скрипт, получится дырка в данных |
12 июн 18, 22:43 [21486987] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31783 |
Тогда логически скрипт будет работать так же, как ваш, но быстрее. |
||
12 июн 18, 23:04 [21487016] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |