Использование базы данных Slave в качестве основной, пока Master обновляется? - PullRequest
0 голосов
/ 10 июля 2011

В настоящее время у меня есть проблема, когда на производительность моей базы данных влияют несколько миллионов строк запускаемых обновлений (это занимает более или менее 3 дня, поэтому мы обычно запускаем их в выходные)Сайт работает в режиме реального времени, это влияет на эффективность поиска.Трехсекундный запрос для извлечения 1,3 миллиона записей и просмотра их страниц иногда превышает значения тайм-аута по умолчанию на сервере sql.Это, очевидно, создает пользовательский опыт, которого никто не хочет (или не может себе позволить) случиться.

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

Ответы [ 2 ]

0 голосов
/ 10 июля 2011

Вопрос в том, какова природа вашего сайта ??Пользователи используют его только для «поиска» или он выполняет операции CRUD ??Если это только для «поиска» и генерации отчетов, то я согласен с @Aaron.Вы можете иметь некоторую базу данных только для целей отчетности, вы даже можете использовать Log Shipping для автоматического обновления вашей базы данных отчетов за очень короткий промежуток времени.

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

0 голосов
/ 10 июля 2011

Я не думаю, что репликация поможет вам здесь, это только ухудшит ситуацию в исходной системе, ИМХО.

Возможно ли сделать статическую копию данных для пользователей, выполняющих запросы во время обновления? Для отчетов о решениях, которые не должны быть самыми последними, я делал это в нескольких случаях, используя две схемы: одну, которая содержит статические версии таблиц для запросов, и другую, где работа выполняется ; когда работа сделана, переключитесь. Я немного подробнее расскажу об этой методологии: Каков наилучший способ обновления сводной таблицы под нагрузкой?

Возможно, другая мысль - сделать ваши обновления более эффективными, чтобы они не занимали 3 дня? Вы делаете это только в длинные выходные?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...