Создание индексов для таблиц, заполненных из репликации транзакций - SQL 2005

У меня есть два сервера SQL 2005, один OLTP [назовем его SQLA] и один используемый для создания отчетов [SQLB], чтобы уменьшить нагрузку на SQLA, когда люди выполняют сумасшедшие запросы. Наша основная база данных реплицируется из SQLA в SQLB с репликацией транзакций.

Природа запросов, которые мы выполняем на SQLB, очевидно, очень различна, и поэтому наши требования к индексу тоже разные.

Есть ли проблемы с созданием большего количества индексов на SQLB, учитывая, что база данных реплицируется из SQLA?

Моя главная проблема заключается в том, что я могу увидеть снижение производительности SQLA, поскольку данные реплицируются в SQLB, а дополнительные индексы обновляются - моя проблема с агентом чтения журнала - это проблема, извиняюсь, если это действительно базовый вопрос.

1 ответ

Решение

Будет,

Я понимаю, почему у вас возникла эта проблема, но вам не нужно беспокоиться об этом. В этом случае нагрузка на SQLA не должна меняться. Агент чтения журнала работает на третьем компьютере правильно? У вас работает SQLA (издатель), (распространитель) - агент чтения журналов, а SQLB (подписчик) получает обновления. SQLA будет по-прежнему записывать точно такие же журналы транзакций, распространитель будет по-прежнему отправлять в SQLB точно такие же вставки, обновления, удаления. Фактическое добавление его в различные индексы будет полностью зависеть от SQLB.

Вот хорошая схема процесса: http://i.msdn.microsoft.com/dynimg/IC19107.gif

Единственное, на что вам следует обратить внимание - это то, что SQLB не отстает, имея слишком много индексов для своевременного выполнения вставок / обновлений / удалений, что приводит к их накоплению в базе данных распространителя.

Другие вопросы по тегам