У меня есть веб-приложение, использующее базу данных MySQL, размещенную на виртуальном сервере. Я использовал этот сервер, когда запускал приложение и когда база данных была очень маленькой. Теперь он вырос, и сервер не может обрабатывать базу данных, что вызывает частые ошибки базы данных. Я планирую приобрести сервер, и мне нужны предложения по этому поводу.
Как я уже сказал, размер db теперь составляет 9 ГБ, и он значительно быстро растет. Существует ряд таблиц с миллионами строк, которые часто обновляются и запрашиваются. Самая частая ошибка, которую показывает db: Lock wait timeout exceeded
. Раньше тоже были ошибки «Общее количество блокировок превышает размер таблицы блокировок», но я мог избежать этого, увеличив размер пула буферов Innodb.
Пожалуйста, предложите, какие конфигурации мне следует искать на сервере, который я должен купить. Я где-то читал, что в идеале db должен иметь размер буферного пула больше, чем размер его данных, поэтому в моем случае я думаю, мне понадобится память gt 9 ГБ. Что еще мне следует искать на сервере?
Просто скажите, нужно ли мне дать вам больше информации о
Вы можете использовать Perl-скрипт с именем MySQLTuner чтобы получить представление о переменных, которые нужно настроить, и, следовательно, об обновлении оборудования при необходимости.
Однако вы должны понять настройки, прежде чем изменять их, иначе вы рискуете усугубить проблему.
Сам сценарий содержит очень полезный совет:
*ПРЕДУПРЕЖДЕНИЕ
Для вас чрезвычайно важно полностью понимать каждое изменение, которое вы вносите в сервер базы данных MySQL. Если вы не понимаете части вывода сценария или не понимаете рекомендаций, вам следует проконсультироваться со знающим администратором баз данных или даже системным администратором, которому вы доверяете. Всегда проверяйте свои изменения в промежуточных средах и всегда помните, что улучшения в одной области могут негативно повлиять на MySQL в других областях.
*ПРЕДУПРЕЖДЕНИЕ
Вы найдете отличные статьи на эту тему на сайте Percona's Блог о производительности MySQL, а список книг по этой теме и даже скринкаст на их percona.tv интернет сайт.
Вы изучили ожидание замка?
Вы можете сделать это, активировав монитор блокировки InnoDB:
СОЗДАТЬ ТАБЛИЦУ innodb_lock_monitor (int) ENGINE = INNODB;
Затем следите за журналом ошибок MySQL.
Чтобы отключить монитор, опустите стол.
HTH