Size: a a a

ClickHouse не тормозит

2021 February 16

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Ivan Roslov
Какой более правильный вариант, если по click_id почти искать не будем. ORDER BY (datetime, click_id) ?
ORDER BY (toStartOfDay(datetime), click_id)
источник

IR

Ivan Roslov in ClickHouse не тормозит
Dj
исправлено, нет вам толку класть ID в индекс
https://t.me/clickhouse_ru/204766
Я написал, чуть выше у меня CollapsingMergeTree, и если его не класть, то данные схлопнутся
источник

IR

Ivan Roslov in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
ORDER BY (toStartOfDay(datetime), click_id)
Спасибо.
источник

D

Dj in ClickHouse не тормозит
Ivan Roslov
Спасибо.
тогда так
ORDER BY (toStartOfDay(datetime), click_id, datetime)
источник

D

Dj in ClickHouse не тормозит
а то пересхлопываете нужные...
источник

IR

Ivan Roslov in ClickHouse не тормозит
Dj
тогда так
ORDER BY (toStartOfDay(datetime), click_id, datetime)
если не сложно можете пояснить, почему два раза дату? click_id уникален в моем случае.
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Igor Reva
Можно удалять записи из мат вью таким образом?

ALTER TABLE default.table_mv DELETE WHERE 1=1;
да
источник

D

Dj in ClickHouse не тормозит
Ivan Roslov
если не сложно можете пояснить, почему два раза дату? click_id уникален в моем случае.
запросы по клик-ид будут "сносно" работать, но по дате чуть медленнее чем в (datetime, click_id)
источник

AS

Alexey Sokolov in ClickHouse не тормозит
Dj
да, я херню сказал.
точнее надо говорить так: польза будет если у вас на один таймстемп много ИД (например 20-100 тыс).

так что в вашем случае пользы НЕ будет, кроме разве что потенциально компрессии других данных + запросы с order by/limit, но это копейки.

если будете индекс делать toDate(datetime), id - запросы к ИД будут быстрее, но запросы надо писать как toDate(datetime)=toDate(xxx), либо можно до часов округлять... но это все замедлит запросы к дате.
Спасибо большое за разъяснения и бонусный пример. :)
источник

D

Dj in ClickHouse не тормозит
Ivan Roslov
если не сложно можете пояснить, почему два раза дату? click_id уникален в моем случае.
сорри, если click_id глобально уникален - берите от Денни, последний datetime не нужен, он для уникальности
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Ivan Roslov
если не сложно можете пояснить, почему два раза дату? click_id уникален в моем случае.
два раза тоже можно 🙂 и нужно иногда, но здесь просто опечатка, задний datetime не нужен
источник

AS

Alexey Sokolov in ClickHouse не тормозит
Ivan Roslov
Так у меня же CollapsingMergeTree, если я не укажу click_id он просто все склеит у меня
Да, вам он важен, а мои вопросы были больше по теории сортировки и индексов.
источник

IR

Ivan Roslov in ClickHouse не тормозит
Еще раз всем спасибо, пойду тестировать. 👍
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Alexey Sokolov
Да, вам он важен, а мои вопросы были больше по теории сортировки и индексов.
важно понять что все записи во всех партах во всех колонках отсортированы в этом порядке
поэто мерж ничего не сортирует
малокардинальные поля вначале индекса (toStartOfDay(datetime) = 30 значений в партиции) позволяют делать как бы fast-full-index-scan в терминах оракла и использовать задние поля без передних
toDate(datetime) -- экономит память, datetime 32 бита, date 16 бит
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Ivan Roslov
Еще раз всем спасибо, пойду тестировать. 👍
кстати попробуйте

ORDER BY (toDate(datetime), click_id)
toDate(datetime) -- экономит память, datetime 32 бита, date 16 бит

индекс в озу целиком всегда
источник

IR

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

OM

Oleg Meluzov in ClickHouse не тормозит
Всем привет!
Вопрос для тех, кто пользуется clickhouse-jdbc-bridge

Добавил свой datasource
{
 "$schema":"path/datasource.jschema",
 "postgre_test": {
   "driverUrls": [
     "path/postgresql-9.4.1212.jre6.jar"
   ],
   "driverClassName": "org.postgresql.Driver",
   "jdbcUrl": "",
   "username": "",
   "password": ""
 }
}

При запуске кидает warning: Registered driver with driverClassName=org.postgresql.Driver was not found, trying direct instantiation.
Я так понимаю, что он не использует указанный мной драйвер. Как это исправить?
источник

EP

Egor Popov in ClickHouse не тормозит
Oleg Meluzov
Всем привет!
Вопрос для тех, кто пользуется clickhouse-jdbc-bridge

Добавил свой datasource
{
 "$schema":"path/datasource.jschema",
 "postgre_test": {
   "driverUrls": [
     "path/postgresql-9.4.1212.jre6.jar"
   ],
   "driverClassName": "org.postgresql.Driver",
   "jdbcUrl": "",
   "username": "",
   "password": ""
 }
}

При запуске кидает warning: Registered driver with driverClassName=org.postgresql.Driver was not found, trying direct instantiation.
Я так понимаю, что он не использует указанный мной драйвер. Как это исправить?
+1
источник

N

Nick in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
path + data_path -- это старый способ который позволял положить базу КХ в другой каталог (ему многооо лет)
storage_configuration -- это новый способ, который позволяет настраивать на уровне таблиц

они не связаны
Спасибо за ответ, как сейчас будет правильно указывать? И то и другое?
Вот у меня есть диск или несколько дисков где я хочу хранить данные
куда мне записывать конфигурацию?
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Nick
Спасибо за ответ, как сейчас будет правильно указывать? И то и другое?
Вот у меня есть диск или несколько дисков где я хочу хранить данные
куда мне записывать конфигурацию?
ну так они для разного совсем нужны, я же не в курсе какая у вас проблема, куда стреляем-то?

во первых не надо использовать storage_configuration вместо raid, т.е. понятно зачем storage_configuration нужен для tiering, когда смесь из hdd и nvme , но mdraid порвет storage_configuration по скорости раз 5.
источник