Skip to content

Оптимизация запроса для preview при подключении к ClickHouse #776

@handgunman

Description

@handgunman

Добрый день!

При формировании запроса для 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.

Для плохо организованных таблиц не окажет влияния. При нормальной организации эффект очевиден.

С Уважением,
Сергей

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions