У нас есть база данных Oracle размером примерно 100 ГБ, которая работает поверх виртуальной машины Windows Server 2k3R2 в ESX в конфигурации с 1 сокетом и 1 ядром. Всякий раз, когда ему приходится обрабатывать большой запрос, кажется, что он «привязывается» к продолжительности этого запроса (загрузка ЦП от 50% до 75%) и в некоторых случаях ограничивает функциональность приложений, которые его используют. Наиболее типичный случай - когда мы запускаем массивные отчеты, один только запрос значительно замедлит производительность приложения во время выполнения запроса, как если бы он ставил задачи в очередь. Мой вопрос: будет ли "обновляться" виртуальная машина до конфигурации с 1 сокетом и 2 ядрами. значительно улучшить эту проблему "привязки"?
Это зависит. Если загрузка ЦП определяется пользователем, то, скорее всего, ответ - «да». Если загрузка ЦП от iowait, вы зря тратите деньги, пока не обновите систему хранения. Если это в основном из системы, то у вас, вероятно, есть драйвер или аппаратное устройство, которое использует слишком много ресурсов прерывания (может быть, сетевая карта?)
Я почти уверен, что любое обновление ЦП (количество) будет иметь преимущества в производительности, если вы также добавите их в виртуальную машину. Однако убедитесь, что вы не слишком много делаете. То есть, скажем, у вас есть 4 виртуальных машины на сервере 32 ГБ, и вы назначаете каждой виртуальной машине 25 ГБ ОЗУ.
Однако, на мой взгляд, вы ограничиваете себя запуском Oracle в виртуальной среде.
Я бы серьезно рассмотрел возможность запуска Oracle на выделенном сервере без уровня виртуализации. Oracle - настоящий зверь, и ему нужны все ресурсы, которые он может получить. Также используйте аппаратный raid10 как минимум с 8 дисками, чем больше дисков, тем лучше. Это также относится к серверу ESXi.
Наличие более одного ядра для движка базы данных поможет в производительности. В Oracle есть несколько основных процессов, которым приходится конкурировать за процессорное время, если их слишком мало. Кроме того, когда вы вводите пользовательские сеансы, потребляющие ресурсы (например, запросы), конкуренция ухудшается. Так что да, это поможет. Oracle создан для использования и использования многопроцессорной платформы. Кроме того, если вы запускаете службы приложения на одном сервере, это не вызывает сомнений.
Это во многом зависит от того, насколько распараллеливаема работа Oracle, то есть от конкретного выполняемого запроса. Вообще говоря, СУБД - это высокопараллельное приложение, поэтому оно должен выгода от наличия большего количества процессоров; но для некоторых рабочих нагрузок это может вообще не получиться.