LINUX.ORG.RU

[MySQL] Оптимизировать или перепиывать?

 


0

1

Добрый день, с недавнего времени на сервере начала падать MySQL база. Вот что показывает log slow queries:

# Time: 110114 15:35:02
# User@Host: user[user] @ localhost []
# Query_time: 39  Lock_time: 0  Rows_sent: 20228  Rows_examined: 20228
SELECT id,data FROM user40 WHERE id>=11559158 ORDER BY id;
# Time: 110114 16:28:40
# User@Host: user[user] @ localhost []
# Query_time: 196  Lock_time: 0  Rows_sent: 93503  Rows_examined: 393884
SELECT id,data FROM user98 WHERE id>=1306663 ORDER BY id;
# Time: 110114 16:50:40
# User@Host: user[user] @ localhost []
# Query_time: 51  Lock_time: 0  Rows_sent: 37779  Rows_examined: 37779
SELECT id,data FROM user40 WHERE id>=11546073 ORDER BY id;

Хотелось бы узнать, стоит ли пытаться менять что-либо в базе или лучше сразу менять алгоритм работы между программой запрашивающей данные и MySQL'ем?

>93503

20228

37779



Имхо: алгоритм. И выборки более конкретные (если возможность есть).

yaws
()

>WHERE id>=11546073
Ну и наверняка это можно как-нибудь обыграть

yaws
()

гаданий по селектам тут еще вроде не было.

Rastafarra ★★★★
()

Для начала стоит посмотреть все ли нужные индексы присутствуют у таблиц и используются ли они при выборке.

mashina ★★★★★
()

Вряд ли нужно тягать наружу столько данных.

Deleted
()

>SELECT id,data FROM user40 WHERE id>=11559158 ORDER BY id

для таких сложных выборок может стоит использовать NoSQL db?

bukaka
()

> Rows_sent: 93503

Слишком много. Клиентской стороне явно не нужно такое количество рядов.

SELECT id,data FROM user40 WHERE id>=11546073 ORDER BY id;

Странный запрос. Сюда так и просится конструкция limit. Если эти данные отображаются, то явно не больше 1000, а если агрегируются, то лучше делать это средствами MySQL или задуматься о кешировании результата.

Я, конечно, не сомневаюсь, что есть индекс по столбцу id таблиц user##, но если его нету, то следует создать.

amomymous ★★★
()

мне что, одному эти «user40» и «id>=11546073», а с ними и запросы в целом, кажутся автогенереными?

тс, это у тебя от чего логи-то?

Rastafarra ★★★★
()

Индексы для себя открой, блеать! Такие запросы при живом индексе выполняются за сотые доли секунды.

anonymous
()
Ответ на: комментарий от drakmail

Такое ощущение, что в DBA не используется мозг.

LamerOk ★★★★★
()
Ответ на: комментарий от anonymous

>Такие запросы при живом индексе выполняются за сотые доли секунды.

Но без индексов на таких объёмах они могут выполняться десятки минут :D

EXPLAIN, в общем, нужны. И, как правильно говорят, не нужно выдёргивать десятки тысяч записей.

KRoN73 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.