Распределение и настройка Sql Server для лучшей производительности - PullRequest
1 голос
/ 30 июня 2011

Я хочу спроектировать и внедрить корпоративное программное обеспечение с использованием Silverlight. Я использую базу данных sql server для этого. Многие используют run sql queireis на базе данных sql server. Как я могу настроить базу данных сервера SQL для лучшей производительности? Как я могу распространять базу данных сервера SQL для лучшей производительности? Как я могу распределить базу данных сервера SQL между несколькими серверами для лучшей производительности? и так, какие технологии я могу использовать на сервере SQL для лучшей производительности?

Ответы [ 2 ]

1 голос
/ 30 июня 2011

В дополнение к репликации вы можете использовать зеркалирование или доставку журналов для этого.Обратите внимание, что я говорю только о масштабировании операций чтения, а не записи.Таким образом, отчеты и т. Д. Можно запускать из копий базы данных, но записи должны идти в основную копию (если вы не используете репликацию слиянием, что меня пугает).Конечно, есть некоторые предостережения.

С зеркальным отображением базы данных вы можете использовать вторичное устройство в качестве источника отчетов только для чтения, сделав снимок.Здесь есть ограничения на количество баз данных, которые вы можете отразить, и, конечно, есть обслуживание для управления снимками.Распределение ресурсов здесь не совсем верно, но может быть полезно снять часть нагрузки.В следующей версии SQL Server (Denali) вы сможете установить дополнительные файлы только для чтения, чтобы избежать обслуживания моментальных снимков.

С доставка журналов вы можетепо существу сохраняйте устаревшую версию базы данных для отчетов и периодически заменяйте ее, восстанавливая в ней журналы.У вас гораздо больше гибкости по сравнению с репликацией или зеркалированием, поскольку вы можете определить задержку (например, каждые 6 часов или один раз в день вы обновляете копию), что также может служить «восстановлением после съемки»."в ногу" сценарий.Недостатком является то, что для восстановления новой копии базы данных вам нужно выгнать всех текущих пользователей, так как база данных должна находиться в однопользовательском режиме для восстановления.

Это всего лишь пара идейза помощь в расширении чтения, но в глубине души я согласен с @gbn - вы решаете проблему, которой у вас еще нет?Одно дело спроектировать для масштабируемости, но очень легко перешагнуть через эту линию и полностью перегрузить.

1 голос
/ 30 июня 2011

Ну, SQL Server на самом деле не имеет механизма балансировки нагрузки внутри и вне его. Однако он поддерживает конфигурацию активного / пассивного узла, а также репликацию.

Мы используем стратегию репликации в одном приложении, которое я поддерживаю. Вы можете прочитать больше об этом здесь: http://msdn.microsoft.com/en-us/library/ms151198.aspx

В нашей конфигурации мы в основном имеем транзакционную базу данных и базу данных отчетов. Мы копируем данные из нашей транзакционной БД в отчетную БД. Все отчеты создаются для этой базы данных отчетов, поэтому мы не замедляем работу над транзакционной базой данных из-за какого-то длительного отчета.

Обратите внимание, что репликация на самом деле не в реальном времени. Другими словами, на репликацию данных из транзакционной базы данных в отчетную БД уходит некоторое время, хотя и очень небольшое. Но репликация, безусловно, одна из стратегий, которую вы могли бы рассмотреть, если пытаетесь сбалансировать рабочую нагрузку.

Другие вещи, которые вы могли бы рассмотреть, - это разбиение больших таблиц для повышения производительности.

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

Кроме того, вы можете обратиться к этой ссылке для получения некоторой другой полезной информации и некоторых ссылок на технические документы, которые могут оказаться полезными: http://social.msdn.microsoft.com/Forums/en/sqldisasterrecovery/thread/05cf41b7-c558-44bf-86c6-12f5c2b2ffe2

...