Задать вопрос
graymore2
@graymore2

Почему запрос медленно выполняется MariaDB?

Всем привет.
Есть сервер VDS на нем 4гига ОЗУ. SSD. Проц 2 ядра. MariaDB 10.11, PHP 7.4.

Есть таблица articles (статьи). Данная таблица имеет всего 2 индекса: На поле id и user_id.
Сама таблица имеет около 20к записей.

Выполняю запрос: SELECT * FROM articles LIMIT 1000 время выполнения ~0.5 сек.
Для меня это очень медленно. Эти 0.5 секунд сильно ощущаются на проде.

Выполняю тот же запрос на другом, более мощном сервере: 8 гигов ОЗУ, SSD, проц 4 ядра. MariaDB 10.11, PHP 7.4.
Запрос выполняется почти моментально: ~0.079сек.

В обоих случаях, при выполнении запроса, нагрузка на проц и память почти отсутствует.
Не могу понять в чем дело, в настройках софта или всё таки в железе ?
  • Вопрос задан
  • 365 просмотров
Подписаться 1 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • Нетология
    Инженер по тестированию
    8 месяцев
    Далее
  • Skillbox
    Профессия Графический дизайнер PRO
    15 месяцев
    Далее
  • ProductStar
    Профессия Product Manager
    10 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 3
mayton2019
@mayton2019
Bigdata Engineer
Звездочка * означает что все найденные документы будут физически переданы по сети на клиента.
Поэтому твои два эксперимента надо расширить. Проверить чем отличались условия с точки зрения
сети. Куда (как далеко) пердавались эти 1000 документов.
Ответ написан
Комментировать
@alexalexes
Очень принципиально по производительности имеет значение количество атрибутов в строке выборки, и есть ли там бинарные типы данных или длинные строки - это именно то, что будет просаживать производительность при попытке сделать большую выборку.
Если в реальной системе из этой таблицы выбираются сначала "легкие" атрибуты в тысячи записей, а потом по конкретным записям дозапрашиваются "тяжелые" атрибуты (бинарные данные, длинные строки).
То синтетический тест:
SELECT * FROM articles LIMIT 1000
к реальной жизни не будет иметь никакого отношения, потому, что вы выбираете все атрибуты (*), при наличии "тяжелых" атрибутов, в здравом уме никто не будет делать такие большие выборки. Разве что, если это не импорт/экспорт - но это сам по себе процесс затяжной.
Ответ написан
Комментировать
graymore2
@graymore2 Автор вопроса
Всем спасибо за ответы! Проблема была решена снятием ограничителей MariaDB в my.cnf, а именно: max_connections и max_allowed_packet были увеличены во много раз. Теперь запросы выполняются одинаково моментально на обоих серверах.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Principal Recruitment Москва
от 200 000 до 250 000 ₽
Principal Recruitment Москва
от 200 000 до 350 000 ₽
Principal Recruitment Москва
от 200 000 до 350 000 ₽