2015-03-11 2 views
0

У нас есть веб-приложение среднего размера (несколько экземпляров), запрашивающее одну базу данных SQL Server 2014.Рекомендации по архитектуре базы данных SQL Server

Небезопасная архитектура, отсутствие кластеризации/переключения на отказ, и в последнее время мы получаем несколько тупиков.

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

Я не администратор базы данных, поэтому вы можете найти здесь несколько советов.

В настоящее время мы имеем следующую архитектуру приложения:

  • Несколько чтения веб-серверов и запись в БД одного SQL Server
  • Несколько фоновых служб чтения и записи в тот же единый БД SQL Server,

Я планирую внести следующие изменения:

  • Разделить одну БД на два БД, один только для чтения и еще чтение-запись. чтение-запись DB реплицирует данные в только для чтения DB с использованием репликации SQL Server
  • Веб-серверы подключаются к данному БД в зависимости от операции.
  • Фоновые серверы подключаются к чтения-записи DB (большинство операций записи случаются здесь)

Большинство запросов БД на веб-серверах читает (и много из записей может быть выгружена в фоновые сервисы), так вот в чем причина моих мыслей.

Тогда я мог бы также добавить кластеризацию в базы данных только для чтения.

Является ли это хорошей архитектурой базы данных SQL Server? Или бы DBA там просто предложили кластерный подход?

Цели: производительность, масштабируемость, надежность

+1

голосование, чтобы переместить это на dba.stackexchange.com –

ответ

0

Без получения более детальной информации о сервере, это трудно дать вам конкретные советы (например, что среднего размера веб-приложение, какие функции на сервере базы данных Что ваша O латентности как CPU раздора использование памяти I /)

на высоком уровне абстракции, тупики, как правило, происходят из-за двух причин:?

  1. ваш читает слишком медленно, и
  2. Ваши записи слишком медленные.

Там много способов решения обеих этих проблем, но в целом:

  1. Вы можете покрыть много кодирования грехов с хорошим оборудованием, и
  2. Не повторно создать архитектуру до тех пор, пока вы не будете использовать параметры настройки производительности (включая стратегии индексирования и/или перезаписи процедур).

Обычно кластеризация используется как стратегия для обеспечения высокой доступности/аварийного восстановления, а не для увеличения производительности (всегда есть исключения).

+0

Эй, спасибо за ваш ответ. Я получаю то, что вы говорите, но я также ищу совет на высоком уровне, а не на конкретных способах решения проблем. Меня просто беспокоит наличие нескольких компонентов для чтения и записи в одну и ту же единую базу данных, и он думал, что ее нужно разделить. – RPM1984

+0

Это может быть дорогостоящим решением проблемы, которая обычно имеет дешевое исправление. Хорошо настроенный сервер базы данных может обрабатывать много нагрузки, прежде чем прибегать к реплике. –

Смежные вопросы