Извлекаем ли мы снимок данных или обновленные данные, если данные обновляются в таблице базы данных?

#sql #ssis #sql-update #extract #upsert

#sql #ssis #sql-обновление #извлечь #upsert

Вопрос:

Добрый день, Команда,

Мы должны извлекать данные из таблиц базы данных SQL, которые обновляются (upsert) ежечасно, и обновление занимает около 15 минут. Мы должны извлечь все таблицы в течение 1 часа, чтобы получить те же данные, что и наша целевая таблица (которая использует эти исходные таблицы). 1 таблица слишком велика, и на ее извлечение уходит почти 5 часов.

Теперь мой вопрос: предположим, у меня есть таблица XYZ, для извлечения которой требуется 5 часов, и я начал извлекать данные в 12 часов дня, получаю ли я статические данные в 12 часов дня, даже если XYZ был обновлен снова в 1 час дня, 2 часа дня, 3 часа дня, 4 часа дня, 5 часов вечера или мы получаем обновление данные на 5 часов вечера.

Примечание: я использую SSIS

Прошу прощения, если это очень простой вопрос, я не очень хорошо знаком с ноу-хау SQL.

Комментарии:

1. Это зависит от уровня изоляции вашего запроса

2. Возможно, я ошибаюсь, но я считаю, что уровень изоляции по умолчанию для компонентов источника данных не указан

3. Вы ошибаетесь — уровень изоляции по умолчанию для пакета является сериализуемым, что является полярной противоположностью незафиксированному / хаосу 😉

4. @billinkc, я буду иметь это в виду в следующий раз, спасибо!

Ответ №1:

Источник данных сканирует таблицу, вы получите версию записи во время чтения.

Время чтения может быть в любое время в этом 5-часовом окне. Вы могли бы уменьшить влияние, добавив предложение order в исходный компонент, чтобы последние данные считывались и передавались последними. Это гарантирует, что данные, которые вы ожидаете получить, будут обновляться в течение этих 5 часов, чтобы получить наибольшее количество просмотров

Если upsert обновит запись, которая уже была скопирована в этом 5-часовом окне, вы пропустите обновление

В конечном счете вам нужно будет рассмотреть схему инкрементной загрузки, если вам нужно перехватить каждое отдельное повышение