#sql #sql-server #etl
#sql #sql-server #etl
Вопрос:
Мой основной источник данных получает 50 миллионов записей в день. Мне нужна максимальная задержка просмотра записи около 5 минут.
Как у меня есть наилучший способ перенести данные из основного источника данных SQL Server в отчет об источнике данных SQL Server.
В это время я объединяю пользователей слиянием каждые 30 секунд. Но, похоже, это влияет на производительность основного источника данных.
Комментарии:
1. Может быть, репликация или синхронизация данных?
2. Репликация была бы очевидным выбором. Вы проводили какие-либо собственные исследования?
3. Я не использую синхронизацию данных, потому что метод работает с триггером. Я думаю, что это приводит к снижению производительности вставки в основной источник данных.
4. Я также ищу метод репликации, но получаю больше проблем с производительностью.
5. Репликация обычно эффективна, если она настроена правильно
Ответ №1:
Наиболее распространенный подход к минимизации нагрузки на ваш исходный сервер — выполнять периодические извлечения с использованием метки времени, то есть простого выбора … WHERE timestamp > previous-max-timestamp-extracted
.
Исходные таблицы должны предоставлять столбец, который позволяет фильтровать не извлеченные записи. Если это совершенно невозможно, вы можете извлечь, например, данные за последний час в промежуточные таблицы и дедуплицировать с ранее извлеченными записями.
Да, вы могли бы использовать CDC, но это часто сложнее и обычно добавляет некоторые ограничения.
Приветствую, Кристиан