Каков наиболее эффективный способ ежедневно обновлять sh таблицу на SQL сервере, имеющем 15M записей из Oracle? - PullRequest
0 голосов
/ 17 апреля 2020

Я использую LinkedServer в SQL 2012 и обновляю таблицу с Oracle 9G, используя описанную ниже процедуру на ежедневной основе. Текущие записи в таблице - 15M, и она увеличивается каждый день на 2-3К новых записей, а старые записи также удаляются и обновляются случайным образом. Требуется 7-8 часов, чтобы выполнить эту работу за одну ночь. Учитывая, что таблица уже оптимизирована на уровне индекса на стороне Oracle, что может быть наиболее эффективным способом сделать это? Мой текущий процесс ниже:

Truncate table SQLTable
Select * into SQLTable from openquery (LinkedServerName,'Select * from OracleTable')

1 Ответ

0 голосов
/ 17 апреля 2020

Нет смысла урезать 15M строк только для изменений 3000-8000 строк.

Я бы рассмотрел использование инструмента ETL, например https://sourceforge.net/projects/pentaho/. Вы можете начать с бесплатной версии сообщества.

Этот инструмент предоставляет инструмент Spoon, который в основном предоставляет графический интерфейс для создания рабочего процесса. С помощью инструмента «Панорамирование» вы можете выполнить созданный вами файл с помощью инструмента «Ложка». В основном создайте командный файл с помощью команды Pan и предоставьте файл .ktr в качестве аргумента. Теперь этот пакетный файл можно запланировать с помощью windows диспетчера задач или Unix CRON Job.

С этим вы можете создать рабочий процесс, который может искать изменения и только вставлять или обновлять изменения.

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