Это чисто теоретический вопрос. Допустим, у меня есть приложение, развернутое на нескольких серверах.
- Балансировщик нагрузки,
- Несколько / масштабируемые серверы приложений
- (Один) сервер базы данных (на данный момент)
В двух первых частях я знаю, что искать. Но как насчет сервера базы данных? Какое оборудование я должен искать?
- Соответствует ли частота процессора серверу баз данных?
- Актуальны ли многоядерные процессоры?
- ОЗУ важнее ЦП?
PS: Предположим, выбранная база данных - MySQL или PostgreSQL.
mysql
postgresql
performance
Zenklys
источник
источник
Ответы:
Для PostgreSQL мощность процессора может быть очень важной, особенно если довольно большой процент активного рабочего набора ваших данных помещается в ОЗУ. Большинство баз данных, с которыми я работал, большую часть времени работали с центральным процессором. (Я только что проверил vmstat на сервере, на котором размещаются веб-сайты с миллионами посещений в день, на которых размещается более 5 ТБ пространства базы данных, и я никогда не видел более 2% времени ожидания на диске, но видел пик 12% времени ЦП пользователя.)
Поскольку PostgreSQL основан на процессах, любой отдельный процесс может работать так же быстро, как одно ядро, но в такой смеси, как у нас на вышеупомянутом сервере, с большим объемом небольших запросов, общий ЦП по всем ядрам является наиболее важным. При той же общей мощности ЦП PostgreSQL будет лучше работать с меньшим количеством более быстрых ядер, чем со многими более медленными ядрами.
До того момента, когда кешируется большой процент вашего активного набора данных, добавление ОЗУ обычно показывает больший эффект, чем добавление ядер. После того, как вы получите достаточное кеширование, польза от дополнительной оперативной памяти уменьшится, и вам будет лучше повысить мощность процессора.
Для получения более подробной информации по этой теме, касающейся PostgreSQL, я не думаю, что есть лучший источник, чем PostgreSQL 9.0 High Performance от Грега Смита . (Полное раскрытие, я был техническим рецензентом для книги, но не получил никакой финансовой выгоды от продаж.)
источник
Строго говоря, с точки зрения MySQL, это очень загруженный вопрос
В то время как более быстрый процессор и материнская плата хороши, другие узкие места могут помешать. К таким узким местам относятся:
Каждое небольшое преимущество помогает, но я должен сказать « нет», потому что скорость процессора сама по себе не улучшается в вышеупомянутых узких местах. В конце концов, что хорошего может сделать гоночный автомобиль Формулы-1 в открытом парашюте или с гориллой за 800 фунтов за рулем?
Это полностью зависит от того, какую версию MySQL вы используете. MySQL 5.1 InnoDB Plugin, MySQL 5.5 и XtraDB Percona Server - все имеют настройки, которые вы ДОЛЖНЫ НАСТРОИТЬ, чтобы InnoDB получил доступ ко всем ядрам. Настоящим стимулом для этого является тот факт, что некоторые старые версии MySQL LEFT UNCONFIGURED работают быстрее, чем более новые версии, как я обсуждал в своих прошлых статьях:
Поэтому, если вы не хотите настраивать InnoDB для доступа ко всем процессорам, наличие нескольких ядер абсолютно ничего не покупает .
О да, действительно. Конфигурация памяти для MySQL влечет за собой настройку
Запрос слишком мало или слишком много любой комбинации этих вещей и MySQL возвращаются, чтобы укусить вас. Более быстрый процессор с неправильно настроенной для оперативной памяти MySQL просто заставляет MySQL кусать вас быстрее.
источник
Проще говоря, вам нужна оперативная память и производительность ввода-вывода (задержка + скорость чтения + скорость записи) для баз данных.
Выбор 4 или 6 ядер или 2,5 ГГц против 3 ГГц не очень актуален (я полагаю, вам не нужно выбирать между P3-450 с 32 ГБ ОЗУ или последней Xeon с 1 ГБ ОЗУ).
Если вы связаны с процессором, у вас есть другие проблемы (плохой дизайн, плохие индексы, перестановка, невыделенный сервер и т. Д.)
источник