Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Оптимизировать скрипт синхронизации таблиц  [new]
JMLabs
Member

Откуда:
Сообщений: 66
Помогите пожалуйста решить такую задачу. Есть 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]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизировать скрипт синхронизации таблиц  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 33644
Блог
естественно не будет работать, т.к. вы джойните таблицы на разных серверах,

есть много вариантов решения - от допиливания источника, чтобы там было логирование изменений, до покупки специализированного ПО, которое читает лог и транслирует изменения,

подозреваю, что в вашем случае доступно такое - тащить последние N месяцев во времянку и потом джойнить, а скажем по выходным тащить всю таблицу в ту же времянку и джойнить ее
12 июн 18, 21:36    [21486809]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизировать скрипт синхронизации таблиц  [new]
KRS544
Member

Откуда:
Сообщений: 497
Еще наверняка и через Linked Server?
Дешевле наверняка будет целиком закачивать каждый раз.
Попросите добавить на продакш поле Timestamp
(что не поможет отслеживать удаленные записи, но у вас и так этого нет)
12 июн 18, 21:41    [21486823]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизировать скрипт синхронизации таблиц  [new]
JMLabs
Member

Откуда:
Сообщений: 66
Да, второй сервер прилинкован. Поле даты есть, я понимаю идею - взять в сравнение только последнюю неделю например, но что делать если вдруг не отработает скрипт, получится дырка в данных
12 июн 18, 22:43    [21486987]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизировать скрипт синхронизации таблиц  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31355
JMLabs
Поле даты есть, я понимаю идею - взять в сравнение только последнюю неделю например
Не последнюю неделю, а с того момента, до которого в последний раз вставились данные. Запоминая этот момент при работе скрипта.
Тогда логически скрипт будет работать так же, как ваш, но быстрее.
12 июн 18, 23:04    [21487016]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить