Size: a a a

ClickHouse не тормозит

2020 September 29

ik

ilya kondrashov in ClickHouse не тормозит
Привет народ, помогите советом как сделать индекс..
в базу льём евенты условно двух типов - перенты и чайлды. Делаем выборки чаилдов при этом всегда задаём фильтр по времени добавления евента  либо по времени добавления перента (для когортного анализа) !

Проблема в том что в индекс первичного ключа имеет смысл добавить только одну дату (
потенциальные решения:
- вьюшка с новым индексом - но очень не хочется дублировать всю базу ради этого
- индексы пропуска - добавить в него дату перента.

что посоветуете, может есть получше вариант ?
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
>Проблема в том что в индекс первичного ключа имеет смысл добавить только одну дату (
1. это не совсем правда, без конкретики (понимания что вы понимаете под словом "дата") развивать этот пункт невозможно

2. есть еще партиционирование, можно партиционировать по времени добавления евента
источник

ik

ilya kondrashov in ClickHouse не тормозит
Дата это таймштамп,  точность обрезана до часа - потому что в интерфейсе  фильтр по дате  позволяет указывать такую точность.

Партиции в этом случае тоже можно было бы делать  с округлением до  часа , но ведь это создаст огромное их количество
источник

ik

ilya kondrashov in ClickHouse не тормозит
т.е. Физический смысл даты - это дата и время создания самого евента. И вторая дата - создание его перента.
Т.е. евент имеет два таймстемпа между собой никак не связанных (только известно что один всегда больше другого) .
источник

ik

ilya kondrashov in ClickHouse не тормозит
И нужна возможность делать выборки от и до по любой из этих дат
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
ilya kondrashov
Дата это таймштамп,  точность обрезана до часа - потому что в интерфейсе  фильтр по дате  позволяет указывать такую точность.

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

DC

Denny Crane [not a Y... in ClickHouse не тормозит
т.е. я бы попробовал partition by toYYYYMMDD(b) order by (a, b)
источник

ik

ilya kondrashov in ClickHouse не тормозит
Интересно, спасибо будем пробовать 🙏
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
ilya kondrashov
Интересно, спасибо будем пробовать 🙏
create table aa (a DateTime, b DateTime, s String)
engine = MergeTree partition by toYYYYMMDD(b) order by (toStartOfHour(a), toStartOfHour(b));

insert into aa select toDateTime('2020-01-01 00:00:00')+number,
                     toDateTime('2020-02-01 00:00:00')-number, toString(number)
from numbers(1000000000);

select count() from aa where b = toDateTime('2020-01-01 15:00:00')

1 rows in set. Elapsed: 0.012 sec. Processed 86.40 thousand rows, 345.60 KB

select count() from aa where a = toDateTime('2020-01-01 15:00:00')
1 rows in set. Elapsed: 0.156 sec. Processed 16.38 thousand rows, 65.54 KB


без индекса
select count() from aa where identity(b) = toDateTime('2020-01-01 15:00:00')
1 rows in set. Elapsed: 0.502 sec. Processed 1.00 billion rows, 4.00 GB
источник

ik

ilya kondrashov in ClickHouse не тормозит
Круто, спасибо
источник

AB

Andrey Bobelev in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
не надо пересказывать своими словами ошибки, покажите copy/paste
DB::Exception: Metadata on replica is not up to date with common metadata in Zookeeper. Cannot alter.
источник

AB

Andrey Bobelev in ClickHouse не тормозит
Полный стек
2020.09.29 23:25:29.773636 [ 22715 ] {e38379aa-9d32-4528-8300-34e45fd55b4f} <Error> executeQuery: Code: 517, e.displayText() = DB::Exception: Metadata on replica is not up to date with common metadata in Zookeeper. Cannot
alter (version 20.6.6.7 (official build)) (from 10.7.224.76:60008) (in query: ALTER TABLE local.user_auth_events_local ADD COLUMN `unauth_id` Int64 AFTER user_id ), Stack trace (when copying this message, always include th
e lines below):

0. Poco::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int) @ 0x123fea60 in /usr/bin/clickhouse
1. DB::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int) @ 0xa23e3fd in /usr/bin/clickhouse
2. ? @ 0xf74b061 in /usr/bin/clickhouse
3. DB::InterpreterAlterQuery::execute() @ 0xf177ec1 in /usr/bin/clickhouse
4. ? @ 0xf4ddf0f in /usr/bin/clickhouse
5. DB::executeQuery(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, DB::Context&, bool, DB::QueryProcessingStage::Enum, bool) @ 0xf4e1675 in /usr/bin/clickhouse
6. DB::TCPHandler::runImpl() @ 0xfb5bb7c in /usr/bin/clickhouse
7. DB::TCPHandler::run() @ 0xfb5c900 in /usr/bin/clickhouse
8. Poco::Net::TCPServerConnection::start() @ 0x1231c88b in /usr/bin/clickhouse
9. Poco::Net::TCPServerDispatcher::run() @ 0x1231cd1b in /usr/bin/clickhouse
10. Poco::PooledThread::run() @ 0x1249b846 in /usr/bin/clickhouse
11. Poco::ThreadImpl::runnableEntry(void*) @ 0x12496c40 in /usr/bin/clickhouse
12. start_thread @ 0x74a4 in /lib/x86_64-linux-gnu/libpthread-2.24.so
13. __clone @ 0xe8d0f in /lib/x86_64-linux-gnu/libc-2.24.so
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Andrey Bobelev
DB::Exception: Metadata on replica is not up to date with common metadata in Zookeeper. Cannot alter.
это ошибка про то что в ZK в znode metadata ветке /replica/{replica} данные отличаются от znode metadata на уровень выше
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
сделайте select * from system.zookeeper where path = 'путьтаблицы'
и сравните metadata
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
надо понять как так получилось и синхронизировать все три места, .sql и 2 metadata в ZK
источник

AB

Andrey Bobelev in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
надо понять как так получилось и синхронизировать все три места, .sql и 2 metadata в ZK
Сравнил 2 sql и 3 места в зк, единственное отличие в пробелах
источник

DT

Dmitry Titov in ClickHouse не тормозит
Что то знакомое кстати, вроде были люди с такими же проблемами
источник

DT

Dmitry Titov in ClickHouse не тормозит
Переслано от Denny Crane [not a Y...
пробелы еще в 20.3 пофиксили https://github.com/ClickHouse/ClickHouse/pull/11739
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
пробелы не должны влиять в 20.6
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Andrey Bobelev
Сравнил 2 sql и 3 места в зк, единственное отличие в пробелах
наплевать на sql пока. У вас ошибка про ZK
источник