Назад | Перейти на главную страницу

Mysql очень медленная, нестандартная конфигурация

Я только что установил стек AMP на VPS. Я вошел в консоль mysql и обнаружил, что запросы выполняются невероятно медленно. Для выполнения одного запроса на обновление, нацеленного на 1 строку в таблице с ~ 200 строками, потребовалось 0,5 секунды (выполнение того же запроса на моем ноутбуке с Windows занимает 0,001 секунды).

Я думал, что это связано с тем, что у VPS недостаточно ресурсов, но после некоторых тестов, а именно ввода-вывода:

1073741824 bytes (1.1 GB) copied, 14.207 s, 75.6 MB/s

avg-cpu:  %user   %nice %system %iowait  %steal   %idle  
           0.01    0.00    0.00    0.03    0.00   99.96

и скрипт бенчарка PHP, вроде нет проблем с ресурсами. Скрипт теста PHP завершился за 5 секунд, тогда как моему ноутбуку i7 с SSD потребовалось 17 секунд.

Есть идеи, что может быть не так?

Проблема не решена. Я сменил хостинг-провайдеров и получил ожидаемые результаты. Мне не удалось выяснить, что изначально было причиной проблемы.

Некоторые тесты и вопросы, слишком длинные для комментариев:

Какой движок вы используете для этой таблицы (SHOW CREATE TABLE tablename\G, ищите ДВИГАТЕЛЬ внизу)?

Повышается ли производительность после нагрева кеша (то есть, если вы дважды выполняете запрос с немного разными данными обновления, будет ли второй запускаться быстрее)?

Можете ли вы перечислить содержимое вашего my.cnf?

Что вы получаете при беге strace -cp $(pidof mysqld) при запуске UPDATE? Для этого запустите strace, затем запустите запрос, затем нажмите CTRL-C на strace. Он выдаст несколько очень удобных значений.

Если бы мне дали только одно предположение, я бы предположил, что у вас нет пропуска имени-разрешения, и вы подключаетесь с адреса, который не отвечает ни на обратный, ни на пересылающий DNS (или ваш resolv.conf неправильно настроен). Но это чисто выстрел в темноте без запрошенной выше информации. Простой тест: подключиться первый (то есть запустить mysql CLI с соответствующими параметрами хоста и порта), затем запустить свой UPDATE из этого интерактивного сеанса и посмотрите, выше ли общая скорость по сравнению с выполнением запроса в пакетном режиме с -e.