Size: a a a

ClickHouse не тормозит

2021 January 26

c

critskiy in ClickHouse не тормозит
Slach
под словом downgrade вы имеет ввиду проброс push down условия HAVING на ноды кластера при исполнении чтения из Distributed таблицы?
да
источник

K

KiLEX 萊赫 in ClickHouse не тормозит
Slach
извините фигню написал toUInt32(today()) у вас как раз и происходит

ну вообще то что toYYYYMMDD возвращает UInt32 и что это YYYYMMDD в виде числа это надо по доке понять  =)

вообще у clickhouse с преобразованием типа беда
хорошо если исключение кидается
но в вашем случае просто молча глотает и делает преобразование в UInt32 но число получается ДРУГОЕ
и делает фуллскан потому что не может определить быстро партицию

SELECT toUInt32(today()), toYYYYMMDD(today());
два разных числа получаются
но при этом результат выборки корректный в обоих случаях, это влияет только на использование/не использование партиций
источник

AS

Alexey Sokolov in ClickHouse не тормозит
Slach
извините фигню написал toUInt32(today()) у вас как раз и происходит

ну вообще то что toYYYYMMDD возвращает UInt32 и что это YYYYMMDD в виде числа это надо по доке понять  =)

вообще у clickhouse с преобразованием типа беда
хорошо если исключение кидается
но в вашем случае просто молча глотает и делает преобразование в UInt32 но число получается ДРУГОЕ
и делает фуллскан потому что не может определить быстро партицию

SELECT toUInt32(today()), toYYYYMMDD(today());
два разных числа получаются
Что типы разные - это я понял, а вот что по умолчанию делается toUInt32() вместо toYYYYMMDD() - этого и не учёл, верил в магию))
источник

AS

Alexey Sokolov in ClickHouse не тормозит
KiLEX 萊赫
но при этом результат выборки корректный в обоих случаях, это влияет только на использование/не использование партиций
Именно. В моём случае это лишние несколько часов времени)
источник

S

Slach in ClickHouse не тормозит
critskiy
Здравствуйте всем, есть вопрос насчет шардинга и select выборки с syntax HAVING. На шардированной таблице на движке MergeTree может ли быть downgrade запроса c HAVING statement, или же в данном случае лучше рассмотреть шардирование на базе AggregatingMegreTree (есть у меня такое подозрение, но может я мудак)?
скорее нет чем да
сильно зависит от того какие аггрегатные функции
и можно ли их полностью по шардам аггрегировать независимо
GROUP BY пробрасывается на ноды, только тогда когда clickhouse считает что сможет "доаггрегировать" на инициаторе
источник

c

critskiy in ClickHouse не тормозит
Slach
скорее нет чем да
сильно зависит от того какие аггрегатные функции
и можно ли их полностью по шардам аггрегировать независимо
GROUP BY пробрасывается на ноды, только тогда когда clickhouse считает что сможет "доаггрегировать" на инициаторе
хмммм, то есть придется все-таки еще попроверять и повыкидывать.... оки-доки
источник

S

Slach in ClickHouse не тормозит
critskiy
хмммм, то есть придется все-таки еще попроверять и повыкидывать.... оки-доки
вы запустите запрос на пустых таблицах
и посмотрите в system.query_log на нодах как этот запрос придет и какие дочерние запросы он породит
источник

c

critskiy in ClickHouse не тормозит
ок, попробую.
источник

S

Slach in ClickHouse не тормозит
critskiy
хмммм, то есть придется все-таки еще попроверять и повыкидывать.... оки-доки
clickhouse-client

SET send_logs_level='trace';
SELECT ... ваш запрос;

и изучайте что там будет происходить
источник

c

critskiy in ClickHouse не тормозит
Slach
clickhouse-client

SET send_logs_level='trace';
SELECT ... ваш запрос;

и изучайте что там будет происходить
да, оно и понятно.)
источник

c

critskiy in ClickHouse не тормозит
Спасиб, попробую
источник

МЧ

Максим Чагин... in ClickHouse не тормозит
Всем привет! Разбирался кто с политикой хранения данных и дисками?

Например, делаю такую конфигурацию
<storage_configuration>
 <disks>
   <hdd>
     <path>/mnt/hdd/clickhouse/</path>
   </hdd>
 </disks>
 <policies>
   <hdd_policy>
     <volumes>
       <hdd_volume>
         <disk>hdd</disk>
       </hdd_volume>
     </volumes>
   </hdd_policy>
 </policies>
</storage_configuration>

затем создаю таблицу
CREATE TABLE test.example_table
(
   d DateTime,
   a Int
)
ENGINE = MergeTree
PARTITION BY toYYYYMM(d)
ORDER BY d
TTL d + INTERVAL 1 MONTH TO DISK 'hdd'

выдаёт ошибку
Code: 450, e.displayText() = DB::Exception: No such disk hdd for given storage policy. (version 20.12.5.14 (official build))

что я делаю не так?
источник

КТ

Константин Трофимов... in ClickHouse не тормозит
Максим Чагин
Всем привет! Разбирался кто с политикой хранения данных и дисками?

Например, делаю такую конфигурацию
<storage_configuration>
 <disks>
   <hdd>
     <path>/mnt/hdd/clickhouse/</path>
   </hdd>
 </disks>
 <policies>
   <hdd_policy>
     <volumes>
       <hdd_volume>
         <disk>hdd</disk>
       </hdd_volume>
     </volumes>
   </hdd_policy>
 </policies>
</storage_configuration>

затем создаю таблицу
CREATE TABLE test.example_table
(
   d DateTime,
   a Int
)
ENGINE = MergeTree
PARTITION BY toYYYYMM(d)
ORDER BY d
TTL d + INTERVAL 1 MONTH TO DISK 'hdd'

выдаёт ошибку
Code: 450, e.displayText() = DB::Exception: No such disk hdd for given storage policy. (version 20.12.5.14 (official build))

что я делаю не так?
секция storage_configuration выглядит корректно
источник

КТ

Константин Трофимов... in ClickHouse не тормозит
однако, по умолчанию используется не ваша кастомная полиси
источник

КТ

Константин Трофимов... in ClickHouse не тормозит
а default полиси
источник

КТ

Константин Трофимов... in ClickHouse не тормозит
надо указать явно, что вы хотите использовать полиси hdd_policy
источник

КТ

Константин Трофимов... in ClickHouse не тормозит
когда создаете таблицу
источник

VM

Vadim Metikov in ClickHouse не тормозит
Dj
select * from system.merge_tree_settings s where name like '%merge%';
SELECT *
FROM system.merge_tree_settings
WHERE name LIKE '%merge%'

┌─name──────────────────────────────────────────────────────┬─value─────────┬─changed─┬─description────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ max_bytes_to_merge_at_max_space_in_pool                   │ 4394967296000 │       1 │ Maximum in total size of parts to merge, when there are maximum free threads in background pool (or entries in replication queue).                                                                                                                         │
│ max_bytes_to_merge_at_min_space_in_pool                   │ 1048576       │       0 │ Maximum in total size of parts to merge, when there are minimum free threads in background pool (or entries in replication queue).                                                                                                                         │
│ max_replicated_merges_in_queue                            │ 16            │       0 │ How many tasks of merging and mutating parts are allowed simultaneously in ReplicatedMergeTree queue.                                                                                                                                                      │
│ number_of_free_entries_in_pool_to_lower_max_size_of_merge │ 8             │       0 │ When there is less than specified number of free entries in pool (or replicated queue), start to lower maximum size of merge to process (or to put in queue). This is to allow small merges to process - not filling the pool with long running merges.    │
│ prefer_fetch_merged_part_time_threshold                   │ 3600          │       0 │ If time passed after replication log entry creation exceeds this threshold and sum size of parts is greater than "prefer_fetch_merged_part_size_threshold", prefer fetching merged part from replica instead of doing merge locally. To speed up very long merges. │
│ prefer_fetch_merged_part_size_threshold                   │ 10737418240   │       0 │ If sum size of parts exceeds this threshold and time passed after replication log entry creation is greater than "prefer_fetch_merged_part_time_threshold", prefer fetching merged part from replica instead of doing merge locally. To speed up very long merges. │
│ enable_vertical_merge_algorithm                           │ 1             │       0 │ Enable usage of Vertical merge algorithm.                                                                                                                                                                                                                  │
│ vertical_merge_algorithm_min_rows_to_activate             │ 131072        │       0 │ Minimal (approximate) sum of rows in merging parts to activate Vertical merge algorithm.                                                                                                                                                                   │
│ vertical_merge_algorithm_min_columns_to_activate          │ 11            │       0 │ Minimal amount of non-PK columns to activate Vertical merge algorithm.                                                                                                                                                                                     │
│ min_merge_bytes_to_use_direct_io                          │ 10737418240   │       0 │ Minimal amount of bytes to enable O_DIRECT in merge (0 - disabled).                                                                                                                                                                                        │
источник

VM

Vadim Metikov in ClickHouse не тормозит
Dj
select * from system.merge_tree_settings s where name like '%merge%';
│ merge_with_ttl_timeout                                    │ 86400         │       0 │ Minimal time in seconds, when merge with TTL can be repeated.                                                                                                                                                                                              │
└───────────────────────────────────────────────────────────┴───────────────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
источник

S

Slach in ClickHouse не тормозит
Максим Чагин
Всем привет! Разбирался кто с политикой хранения данных и дисками?

Например, делаю такую конфигурацию
<storage_configuration>
 <disks>
   <hdd>
     <path>/mnt/hdd/clickhouse/</path>
   </hdd>
 </disks>
 <policies>
   <hdd_policy>
     <volumes>
       <hdd_volume>
         <disk>hdd</disk>
       </hdd_volume>
     </volumes>
   </hdd_policy>
 </policies>
</storage_configuration>

затем создаю таблицу
CREATE TABLE test.example_table
(
   d DateTime,
   a Int
)
ENGINE = MergeTree
PARTITION BY toYYYYMM(d)
ORDER BY d
TTL d + INTERVAL 1 MONTH TO DISK 'hdd'

выдаёт ошибку
Code: 450, e.displayText() = DB::Exception: No such disk hdd for given storage policy. (version 20.12.5.14 (official build))

что я делаю не так?
CREATE TABLE ... SETTINGS storage_policy='hdd_policy'
источник