Односторонняя репликация SQL Server 2005
-
09-06-2019 - |
Вопрос
В бизнесе, в котором я работаю, мы обсуждаем методы снижения нагрузки на чтение в нашей основной базе данных.
Один из предложенных вариантов - это оперативная односторонняя репликация из нашей основной базы данных в подчиненную базу данных.Затем приложения будут считывать данные из подчиненной базы данных и записывать непосредственно в основную базу данных.Итак...
- Приложение Считывает данные с ведомого устройства
- Приложение записывает данные на основной
- Основное Подчиненное устройство Автоматически обновляет
Каковы основные плюсы и минусы этого метода?
Решение
Несколько минусов:
- 2 точки отказа
- Логика приложения должна будет учитывать задержку между записью чего-либо и последующим чтением этого, поскольку это не будет доступно немедленно из базы данных-получателя
Стратегия, которую я использовал, заключается в ежевечерней отправке ключевых данных отчетов во вторичную базу данных, по пути отменяя их нормализацию, чтобы в этой базе данных могли выполняться сложные запросы вместо блокировки таблиц и кражи ресурсов с OLTP-сервера.Я не использую какие-либо официальные средства хранения данных или репликации, скорее я определяю проблемные запросы, которые подходят без актуальных данных, и создаю структуры данных на вторичном сервере специально для этих запросов.
В подходе "копируй все" определенно есть плюсы:
- Вы можете запустить любой специальный запрос на вторичном сервере, поскольку он содержит все ваши данные
- Если ваш основной сервер умрет, вы можете быстро перенастроить вторичный, чтобы взять управление на себя
Другие советы
Мы используем односторонние репликации, но не из одного и того же приложения.Наши приложения выполняют чтение-запись в основную базу данных, данные синхронизируются с базой данных replca, и инструменты отчетности используют эту реплику.
Мы не хотим, чтобы наше приложение считывало данные из другой базы данных, поэтому в этом сценарии я бы предложил использовать группы файлов и секционирование в основной базе данных.Использование файловых групп (особенно на разных дисках) и секционирование файлов и индексов может значительно повысить производительность.