powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Оптимизация запроса
7 сообщений из 32, страница 2 из 2
Оптимизация запроса
    #39640130
Дормедонт Евлампиевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а значения этих параметров:
tmp_table_size, max_heap_table_size ?

хотя и с рам-диском должно было полегчать..
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39640161
Exec1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
# cat my.cnf | grep tmp_table_size
#
# cat my.cnf | grep max_heap_table_size
#

В конфиге не заданы.
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39640188
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Exec1
Код: sql
1.
2.
3.
> SELECT `mes`, `nomer`, COUNT(nomer) AS cnt FROM `alog` GROUP BY `nomer` ORDER BY `cnt` DESC;
...
86 rows in set (5.82 sec)


вы хотите сосчитать ВСЮ таблицу и тут как не ускоряйся, а время будет только расти с ростом кол-ва строк
это чистый seq scan, без вариантов
единственный вариант - агрегация
когда не нужна агрегация, там WHERE есть, обычно
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39640205
Дормедонт Евлампиевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня запрос, что с сортировкой, что без - выполняется одинаково.

по какой-то причине у Exec1 данные долго загоняются во временную таблицу...

Exec1, попробуйте рекомендации из статей по оптимизации самого MySql сервера..
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39640378
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дормедонт Евлампиевичу меня запрос, что с сортировкой, что без - выполняется одинаково.
очевидно потому, что после group by там данных сильно меньше становится
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39640483
Exec1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>> вы хотите сосчитать ВСЮ таблицу и тут как не ускоряйся, а время будет только расти с ростом кол-ва строк
Да, так и есть. Не нужные данные удаляются по крону.

>>единственный вариант - агрегация
Тоже рассматриваю вариант. Вопрос как его оптимально сделать?
Если этот запрос по крону запускать каждые 15 минут, а результат сохранять в отдельную таблицу, то это расточительство. Так как результат бывает нужен не часто. И он нужен актуальный. А подгадывать условно под каждую 15-ую минуту смешно. Проще просто подождать 6 секунд в нужный момент.

Есть другая мысль, транзакция. Добавляется запись в первую таблицу, увеличиваем значение на против номера в другой таблице, удаляем запись - уменьшаем значение на единицу. Вопрос как продумать добавление нового номера во вторую таблицу, и удаление номера если его count обнулился.

>> Exec1, попробуйте рекомендации из статей по оптимизации самого MySql сервера..
Так вот и пробу разобраться.

Кстати, размер таблицы 300 Мб, если не ошибусь, не так уж и много.
...
Рейтинг: 0 / 0
Оптимизация запроса
    #39640501
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Exec1>>единственный вариант - агрегация
Тоже рассматриваю вариант. Вопрос как его оптимально сделать?
Если этот запрос по крону запускать каждые 15 минут, а результат сохранять в отдельную таблицу, то это расточительство. Так как результат бывает нужен не часто. И он нужен актуальный. А подгадывать условно под каждую 15-ую минуту смешно. Проще просто подождать 6 секунд в нужный момент.
запускайте хоть каждую минуту
даже каждые 10 сек можно демоном запускать
в таблицу скидывать только новые записи, с момента последней записи в таблице
расточительства никакого, агрегированная таблица весит %5 от оригинала
ну зависит конечно, как агрегировать
...
Рейтинг: 0 / 0
7 сообщений из 32, страница 2 из 2
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Оптимизация запроса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]