-
Notifications
You must be signed in to change notification settings - Fork 36
Description
Добрый день!
При формировании запроса для preview в секции GROUP BY указываются все поля таблицы. В результате запрос потребляет много оперативной памяти.
Если в дотаяете сделать несколько вычисляемых полей, то шансы на ошибку из-за лимитов памяти при запросе к более-менее крупной таблице возрастают.
Ситуацию можно исправить простейшей доработкой, добавив в конец запроса:
SETTINGS optimize_aggregation_in_order=1;
Настройка добавляется сразу за секцией LIMIT
LIMIT 10 SETTINGS optimize_aggregation_in_order=1;
Для примера запрос для preview без настройки:
Elapsed: 8.448 sec. Processed 8.57 million rows, 3.93 GB (1.01 million rows/s., 465.24 MB/s.)
Peak memory usage: 13.62 GiB.
с настройкой:
10 rows in set. Elapsed: 1.543 sec. Processed 40.96 thousand rows, 18.60 MB (26.54 thousand rows/s., 12.05 MB/s.)
Peak memory usage: 179.64 MiB.
Для плохо организованных таблиц не окажет влияния. При нормальной организации эффект очевиден.
С Уважением,
Сергей