Как ускорить большой запрос в ClickHouse? - PullRequest
0 голосов
/ 20 января 2020

Backgroud:

Я отправил локальный запрос в ClickHouse (без использования кэша), и он обработал 414,43 миллиона строк, 42,80 ГБ. Запрос длился 100+ секунд. Мои экземпляры ClickHouse были установлены на AWS c5.9xlarge EC2 с 12T st1 EBS

Во время этого запроса значение IOPS до 500, а чтение throughput до 20M/s. И для сравнения: st1 EBS max IOPS равен 500, а max throughput равен 500M/s.

Вот мой вопрос:

  1. Имеет ли 500 IOPS на самом деле ограничить скорость моего запроса (чтения файла)? (не обращайте внимания на кеш) Следует ли изменить тип тома EBS на gp2 или io1, чтобы увеличить IOPS?
  2. Можно ли улучшить настройку throughput при том же IOPS? (как я вижу, на самом деле это далеко от потолка) Я пытался увеличить 'max_block_size', чтобы читать больше файлов за один раз, но, похоже, это не работает.
  3. Как увеличить время кэширования? Большой запрос заняли минуты. Кеша заняла секунды. Но кажется, что кэш не очень долго.
  4. Как можно прогреть столбцы, чтобы удовлетворить все требования? Пожалуйста, покажите sqls.

1 Ответ

1 голос
/ 20 января 2020

Ограничивает ли 500 IOPS скорость моего запроса (чтения файла)?

да

Следует ли изменить тип тома EBS на gp2 или io1 для увеличения IOPS?

да

Есть ли какие-либо настройки, способные улучшить пропускную способность при том же IOPS?

tune max_bytes_to_read

уменьшить количество столбцов (в выборке)

уменьшить количество частей ( in select)

Как продлить время кеширования?

min_merge_bytes_to_use_direct_io = 1

Как можно прогреть столбцы для удовлетворения всех требования? Пожалуйста, покажите sqls.

select a,b,c,d from T Format Null

...