MS SQL Server: несколько баз данных на одной или нескольких виртуальных машинах?
Мы планируем развернуть решение для электронной коммерции с использованием трех отдельных баз данных, которые будут размещаться в MS SQL Server 2008 R2. Весь стек будет размещен в среде VMWare (две физические машины с параллельной настройкой виртуальных машин).
У меня вопрос, стоит ли просто размещать три базы данных в одном экземпляре SQL Server или разделять их на несколько виртуальных машин. Некоторые дополнительные расходы я вижу в качестве недостатка нескольких виртуальных машин (больше лицензионных платежей, несколько копий ОС в памяти), лучшее разделение - в качестве преимущества нескольких виртуальных машин (процессор, ввод-вывод, безопасность).
Поскольку поставщик одинаков во всех базах данных, мой главный вопрос заключается в том, насколько больше контроля я получаю над распределением ЦП / В / В. В частности: может ли размещение всех трех баз данных на одной виртуальной машине создать потенциальные проблемы с одной базой данных, снижая производительность всех трех?
РЕДАКТИРОВАТЬ в ответ на DaveH/Thirster42:
Стек предназначен для дублирования на двух физических машинах с использованием кластеризации между БД. IO является потенциальным узким местом, хотя мы намерены купить пространство SAN с наивысшей производительностью, которое может предложить хостинговая компания. Загрузка будет варьироваться между различными базами данных, и, поскольку это новая система, все еще трудно догадаться. Мы говорим о базе данных CMS, базе данных MS Commerce Server и базе данных отслеживания продаж клиентов для сайта заказа быстрого питания, выполняющего около 3 миллионов просмотров страниц в месяц. Мы ожидаем, что анализ upsell/cross-sell анализ будет широко использоваться и некоторые сложные запросы анализа клиентов в базе данных клиентов (это страшный).
2 ответа
Честно говоря, я не мог предвидеть значительного прироста производительности от трех отдельных виртуальных машин, главным образом потому, что я предполагаю, что они будут на одном хосте и, следовательно, будут бороться за дисковый ввод-вывод. Кроме того, при использовании отдельных vm-запросов любые запросы к базам данных должны попадать в другие vms. Отдельный VM также означает больше накладных расходов. Каждый vm означает больше накладных расходов на хосте и больше накладных расходов для каждой отдельной ОС. Это все ресурсы, которые вы могли бы выделить одному виртуальному компьютеру.
Это зависит от использования, и сколько вам нужно будет масштабировать. Вертикальное масштабирование (добавление ЦП и памяти) в VMware только заходит так далеко. Несколько копий O/S в памяти не обязательно применяются, потому что VMware будет распределять память между виртуальными машинами.
[примечание стороны]: http ссылки по какой-то причине не работают, поэтому вот ссылка на небольшое описание совместного использования памяти: http://www.cdhtalkstech.com/2008/11/03/memory-sharing-–- VMware-имеет-это-и-The-другие-не-часть-1 /
Мне любопытно, почему вы развертываете кластер SQL на двух хостах ESX? У вас есть VirtualCenter? Итак, подведем итог: запуск 3 БД на одной ВМ хорош до тех пор, пока вам не понадобится масштабирование. Затем я бы рассмотрел возможность их разделения и, возможно, размещения своих хостов ESX в кластере и включения HA, DRS и, возможно, отказоустойчивости.:D
Удачи!