Мы планируем развернуть решение для электронной коммерции с использованием трех отдельных баз данных, все из которых будут размещены в MS SQL Server 2008 R2. Весь стек будет размещен в среде VMWare (две физические машины с параллельной настройкой виртуальных машин).
У меня возникает вопрос: разместить ли три базы данных в одном экземпляре SQL Server или разделить их на несколько виртуальных машин. Я вижу некоторые дополнительные затраты как недостаток нескольких виртуальных машин (больше лицензионных сборов, несколько копий ОС в памяти), я вижу лучшее разделение как преимущество нескольких виртуальных машин (ЦП, ввод-вывод, безопасность).
Поскольку поставщик для всех баз данных один и тот же, мой главный вопрос заключается в том, насколько больше контроля над распределением ЦП / ввода-вывода я получаю. В частности: может ли размещение всех трех баз данных на одной виртуальной машине создавать вероятность неправильных запросов к одной БД, снижая производительность всех трех?
EDIT в ответ DaveH / Thirster42:
Стек предназначен для дублирования на двух физических машинах с использованием кластеризации между базами данных. IO - это потенциальное узкое место, хотя мы намерены купить самое производительное пространство SAN, которое может предложить хостинговая компания. Загрузка будет различаться между разными базами данных, и, поскольку это новая система, все еще трудно догадаться. Речь идет о базе данных CMS, базе данных MS Commerce Server и базе данных отслеживания продаж клиентов для сайта быстрого питания, выполняющего около 3 миллионов просмотров страниц в месяц. Мы ожидаем, что анализ дополнительных / перекрестных продаж будет широко использоваться и некоторые сложные запросы анализа клиентов в базе данных клиентов (это пугает).
Честно говоря, я не мог предвидеть значительного увеличения производительности от наличия трех отдельных виртуальных машин, в основном из-за того, что я предполагаю, что они будут на одном хосте и, следовательно, все еще будут бороться за ввод-вывод диска. Кроме того, с отдельными виртуальными машинами любые запросы, которые проходят через базы данных, должны будут попадать в другие виртуальные машины. Отдельные виртуальные машины также означают больше накладных расходов. Каждая виртуальная машина означает больше накладных расходов на хосте и больше накладных расходов для каждой отдельной ОС. Это все ресурсы, которые в противном случае можно было бы выделить одной виртуальной машине.
Это зависит от загрузки и от того, сколько вам потребуется для масштабирования. Вертикальное масштабирование (добавление ЦП и памяти) в VMware пока идет. Множественные копии O / S в памяти не обязательно применимы, потому что VMware будет разделять память между виртуальными машинами.
[примечание]: http-ссылки по какой-то причине не работают, поэтому вот ссылка на небольшое описание совместного использования памяти: http://www.cdhtalkstech.com/2008/11/03/memory-sharing-–-Vmware-has-it-and-the-others-don’t-part-1 /
Мне любопытно, почему вы развертываете кластер SQL на двух хостах ESX? У вас есть VirtualCenter? Итак, подытоживая, можно сказать, что запуск 3 БД на одной виртуальной машине хорош, пока вам не понадобится масштабирование. Затем я бы подумал о том, чтобы разделить их и, возможно, поместить мои хосты ESX в кластер и включить HA, DRS и, возможно, отказоустойчивость. : D
Удачи!