У меня есть два сервера SQL 2005, один OLTP [назовем его SQLA] и один, используемый для отчетности [SQLB], чтобы уменьшить нагрузку на SQLA, когда люди запускают сумасшедшие запросы. Наша основная база данных реплицируется из SQLA в SQLB с репликацией транзакций.
Природа запросов, которые мы запускаем в SQLB, очевидно, сильно различается, и поэтому наши требования к индексам тоже разные.
Есть ли проблемы с созданием дополнительных индексов в SQLB, учитывая, что база данных реплицируется из SQLA?
Мое главное беспокойство заключается в том, что я могу увидеть снижение производительности SQLA, поскольку данные реплицируются в SQLB и обновляются дополнительные индексы - мое непонимание агента чтения журнала является проблемой здесь, извиняюсь, если это действительно базовый вопрос.
Будет,
Я понимаю, почему у вас возникло такое беспокойство, но вам не о чем беспокоиться. В этом случае нагрузка на SQLA не должна измениться. Агент чтения журнала работает на третьей машине, верно? У вас есть SQLA (издатель), (распространитель) работает агент чтения журнала и (подписчик) SQLB, получающий обновления. SQLA по-прежнему будет записывать те же самые журналы транзакций, распространитель по-прежнему будет отправлять в SQLB те же операции вставки, обновления и удаления. Работа по фактическому добавлению его в различные индексы будет прямо ложиться на SQLB.
Вот хорошая диаграмма процесса: http://i.msdn.microsoft.com/dynimg/IC19107.gif
Единственное, на что вы должны обратить внимание, это то, что SQLB не отстает из-за того, что у него слишком много индексов для своевременного выполнения вставок / обновлений / удалений, что приводит к их накоплению в базе данных распространения.