
Stanislav
21.02.2018
06:31:52
MergeTree требует функцию для партиционирования, по-умолчанию - от даты. Где-то в недрах док есть пример по созданию таблиц с кастомным ключом.

Alexey
21.02.2018
06:41:58
MergeTree вообще не требует партиционирования. Можно использовать без партиционирования - не указывать PARTITION BY:
https://clickhouse.yandex/docs/ru/single/#proizvolnyi-klyuch-particzionirovaniya

Vadim
21.02.2018
06:47:20
Привет!
а можно ли методом Detach / Attach изменить гранулированность индекса до, 32768 строк, например?

Alexey
21.02.2018
06:49:32

Google

Vadim
21.02.2018
06:50:58
только экспортом в native и имтортом?

Alexey
21.02.2018
06:54:46
Можно INSERT SELECT.

Vadim
21.02.2018
06:57:29
Спасибо, буду пробовать
Кто-то подбирал оптимальный размер грануляции для хранения метрик из графита?
сжатых данных - единицы ТБ( в графите)

Alexey
21.02.2018
07:08:21
index_granularity (почти) не влияет на сжатие данных.

Vadim
21.02.2018
07:23:32
а что влияет?
как увеличить размер партишена?
сейчас это умолчальные ГГГГ-ММ

Панков
21.02.2018
07:38:29
ребят а никто не скажет почему DATEADD в PowerPivot перестал работать?

Kirill
21.02.2018
07:45:42

Maxim
21.02.2018
07:51:27

Google

Alex
21.02.2018
08:43:59
Вопрос к разработчикам. Поймали серьёзную деградацию на работе с промежуточными состояниями аггрегатных функций. Под условия WHERE нет подходящих строк, но попытка обращения к колонке с состоянием деградирует запрос в 10-20 раз. Полечилось заменой на PREWHERE. Вопрос - это баг/фича?
Подробности в gist:
https://gist.github.com/alex-krash/035d32a87fd94be2483055e60ba3a383

strange
21.02.2018
09:31:21
пишу для себя доку по ClickHouse. Заголовок:
## Набросики про запросики
обкринжился, обзмеился. закоммитил

Vadim
21.02.2018
09:53:48
кто говорил, что сжатие не зависит от грануляции индекса?
Вот занимаемый объем 2х копий одной БД:
91G /var/lib/clickhouse/data/default/graphite
4.9G /var/lib/clickhouse/data/default/graphite32
у первой грануляцияя 8к, у второй 32к

Andrey
21.02.2018
09:55:07
O_o
А как то на скорости отражается?

Гаврилов
21.02.2018
09:55:42
но и при чтении полностью будет читатся блок на 32к

Andrey
21.02.2018
09:55:44
Чем то мы все равно обязаны за это заплатить)

Stanislav
21.02.2018
09:56:16
/me пока предпочтёт меньше сжатие, быстрее селекты...
Но вообще мысль интересная, для архивных БД имеет смысл.

Гаврилов
21.02.2018
09:57:17
архивная бд это наверно не кликхаус должен быть

Andrey
21.02.2018
09:57:43

Stanislav
21.02.2018
09:58:44
Архивная - в смысле запросы туда будут очень редко по сравнению с оперативной. Но будут.

Wolf
21.02.2018
09:59:34

Гаврилов
21.02.2018
10:02:25
у меня есть вопрос не по делу, но может кто-то что-то про Elliptics сказать
судя по гиту проект заброшен

Roman
21.02.2018
10:05:20
Извиняюсь за возможно "тупой вопрос" но какой тип данных на выходе функции "IPv4StringToNum" UInt32?

papa
21.02.2018
10:06:42
SELECT toTypeName(IPv4StringToNum(''))
┌─toTypeName(IPv4StringToNum(\'\'))─┐
│ UInt32 │
└───────────────────────────────────┘

Vadim
21.02.2018
10:08:29
CH еще померджил и теперь так:
91G /var/lib/clickhouse/data/default/graphite
992M /var/lib/clickhouse/data/default/graphite32

Гаврилов
21.02.2018
10:08:49
это магия какаето, не?

Vadim
21.02.2018
10:08:52
ожидаю увеличение нагрузки на проц/память при чтении

Google

?
21.02.2018
10:09:24
какие данные там?


Vadim
21.02.2018
10:09:55
сейчас пробую на чтейджинге, там данных 419Г
Метрики вида:
SELECT *
FROM graphite32
LIMIT 10
┌─Path──────────────────────────────────────────┬────────────────Value─┬───────Time─┬───────Date─┬──Timestamp─┐
│ #_MetricsPath_.vm-cs-live1.cpu.total.usertime │ 0.0389436323509751 │ 1504602000 │ 2017-09-05 │ 1504605559 │
│ #_MetricsPath_.vm-cs-live1.cpu.total.usertime │ 0.4234314005793237 │ 1504605600 │ 2017-09-05 │ 1504609159 │
│ #_MetricsPath_.vm-cs-live1.cpu.total.usertime │ 0.06484408469669414 │ 1504609200 │ 2017-09-05 │ 1504612759 │
│ #_MetricsPath_.vm-cs-live1.cpu.total.usertime │ 0.0584435594397823 │ 1504612800 │ 2017-09-05 │ 1504616359 │
│ #_MetricsPath_.vm-cs-live1.cpu.total.usertime │ 0.46180635307718176 │ 1504616400 │ 2017-09-05 │ 1504619959 │
│ #_MetricsPath_.vm-cs-live1.cpu.total.usertime │ 0.2120542505403427 │ 1504620000 │ 2017-09-05 │ 1504623559 │
│ #_MetricsPath_.vm-cs-live1.cpu.total.usertime │ 0.038896276398391764 │ 1504623600 │ 2017-09-05 │ 1504627159 │
│ #_MetricsPath_.vm-cs-live1.cpu.total.usertime │ 0.32418759041312556 │ 1504627200 │ 2017-09-05 │ 1504630759 │
│ #_MetricsPath_.vm-cs-live1.cpu.total.usertime │ 0.09047379551616919 │ 1504630800 │ 2017-09-05 │ 1504634359 │
│ #_MetricsPath_.vm-cs-live1.cpu.total.usertime │ 0.0773744348789403 │ 1504634400 │ 2017-09-05 │ 1504637959 │
└───────────────────────────────────────────────┴──────────────────────┴────────────┴────────────┴────────────┘
10 rows in set. Elapsed: 0.026 sec.


Andrey
21.02.2018
10:18:26

Гаврилов
21.02.2018
10:18:54
может у тебя просто чтото в процессе удаляется?)
нечаенно)

Andrey
21.02.2018
10:19:20
Там алгоритм сжатия имени Алексея Бабушкина случайно не имплементировали?

Александр
21.02.2018
10:20:34


Vadim
21.02.2018
10:20:44
не знаю, данные есть:
SELECT *
FROM graphite32
WHERE (Path = '#_MetricsPath_.vm-cs-live1.cpu.total.usertime') AND (Time > 1504602000)
LIMIT 4
┌─Path──────────────────────────────────────────┬───────────────Value─┬───────Time─┬───────Date─┬──Timestamp─┐
│ #_MetricsPath_.vm-cs-live1.cpu.total.usertime │ 0.47772479651173677 │ 1514732400 │ 2017-12-31 │ 1514735964 │
│ #_MetricsPath_.vm-cs-live1.cpu.total.usertime │ 0.7136187427061282 │ 1514736000 │ 2017-12-31 │ 1514739564 │
│ #_MetricsPath_.vm-cs-live1.cpu.total.usertime │ 0.21159345972670585 │ 1514739600 │ 2017-12-31 │ 1514743164 │
│ #_MetricsPath_.vm-cs-live1.cpu.total.usertime │ 0.7101888501598004 │ 1514743200 │ 2017-12-31 │ 1514746765 │
└───────────────────────────────────────────────┴─────────────────────┴────────────┴────────────┴────────────┘
4 rows in set. Elapsed: 0.007 sec. Processed 131.07 thousand rows, 12.13 MB (17.93 million rows/s., 1.66 GB/s.)
:)


Stanislav
21.02.2018
10:21:11
count(*) схожие числа выдаёт?

Vadim
21.02.2018
10:21:22
на стейдже актульные данные, дольет там, гляну

Дмитрий
21.02.2018
10:41:04

Vadim
21.02.2018
10:42:02
нет, все мерял
там данные не меняются, нет там detached , копировал INSERT SELECT

Roman
21.02.2018
11:16:18

Vadim
21.02.2018
11:21:27
count(*) схожие числа выдаёт?
Нет, ┌─────count()─┐
│ 13903321793 │
└─────────────┘
1 rows in set. Elapsed: 2.248 sec. Processed 13.90 billion rows, 27.81 GB (6.18 billion rows/s., 12.37 GB/s.)
:) select count(*) from graphite32;
SELECT count(*)
FROM graphite32
┌───count()─┐
│ 489786511 │
└───────────┘
1 rows in set. Elapsed: 0.083 sec. Processed 489.79 million rows, 979.57 MB (5.90 billion rows/s., 11.79 GB/s.)
Не понятно, почему

Гаврилов
21.02.2018
11:21:59
вот и вся архивация)

Vadim
21.02.2018
11:22:39
КХ подропал строки ?

Гаврилов
21.02.2018
11:22:50
потерял по дороге
или может урезал при операции insert select

Google

Vadim
21.02.2018
11:23:14
с чем мб связано?
в clickhouse-server.err.log пусто

Andrey
21.02.2018
11:25:45


Vadim
21.02.2018
11:26:49
GraphiteMergeTree, дубликатов быть не должно
как искать?
насколько вижу, данные не повторяются:
SELECT *
FROM graphite
WHERE Path = 'DevOps.system.vm-graphite-ch1.loadavg.load_normalized'
ORDER BY Timestamp ASC
LIMIT 20
┌─Path──────────────────────────────────────────────────┬─Value─┬───────Time─┬───────Date─┬──Timestamp─┐
│ DevOps.system.vm-graphite-ch1.loadavg.load_normalized │ 0.04 │ 1504604340 │ 2017-09-05 │ 1504604384 │
│ DevOps.system.vm-graphite-ch1.loadavg.load_normalized │ 0.04 │ 1504604400 │ 2017-09-05 │ 1504604444 │
│ DevOps.system.vm-graphite-ch1.loadavg.load_normalized │ 0.03 │ 1504604460 │ 2017-09-05 │ 1504604504 │
│ DevOps.system.vm-graphite-ch1.loadavg.load_normalized │ 0.02 │ 1504604520 │ 2017-09-05 │ 1504604564 │
│ DevOps.system.vm-graphite-ch1.loadavg.load_normalized │ 0.01 │ 1504604580 │ 2017-09-05 │ 1504604624 │
│ DevOps.system.vm-graphite-ch1.loadavg.load_normalized │ 0 │ 1504604640 │ 2017-09-05 │ 1504604684 │
│ DevOps.system.vm-graphite-ch1.loadavg.load_normalized │ 0 │ 1504604700 │ 2017-09-05 │ 1504604744 │
│ DevOps.system.vm-graphite-ch1.loadavg.load_normalized │ 0.02 │ 1504604760 │ 2017-09-05 │ 1504604804 │
│ DevOps.system.vm-graphite-ch1.loadavg.load_normalized │ 0.03 │ 1504604820 │ 2017-09-05 │ 1504604864 │
│ DevOps.system.vm-graphite-ch1.loadavg.load_normalized │ 0.01 │ 1504604880 │ 2017-09-05 │ 1504604924 │
│ DevOps.system.vm-graphite-ch1.loadavg.load_normalized │ 0 │ 1504604940 │ 2017-09-05 │ 1504604984 │
│ DevOps.system.vm-graphite-ch1.loadavg.load_normalized │ 0 │ 1504605000 │ 2017-09-05 │ 1504605044 │
│ DevOps.system.vm-graphite-ch1.loadavg.load_normalized │ 0 │ 1504605060 │ 2017-09-05 │ 1504605104 │
│ DevOps.system.vm-graphite-ch1.loadavg.load_normalized │ 0 │ 1504605120 │ 2017-09-05 │ 1504605164 │
│ DevOps.system.vm-graphite-ch1.loadavg.load_normalized │ 0 │ 1504605180 │ 2017-09-05 │ 1504605224 │
│ DevOps.system.vm-graphite-ch1.loadavg.load_normalized │ 0.02 │ 1504605240 │ 2017-09-05 │ 1504605284 │
│ DevOps.system.vm-graphite-ch1.loadavg.load_normalized │ 0.01 │ 1504605300 │ 2017-09-05 │ 1504605344 │
│ DevOps.system.vm-graphite-ch1.loadavg.load_normalized │ 0 │ 1504605360 │ 2017-09-05 │ 1504605404 │
│ DevOps.system.vm-graphite-ch1.loadavg.load_normalized │ 0 │ 1504605420 │ 2017-09-05 │ 1504605464 │
│ DevOps.system.vm-graphite-ch1.loadavg.load_normalized │ 0 │ 1504605480 │ 2017-09-05 │ 1504605524 │
└───────────────────────────────────────────────────────┴───────┴────────────┴────────────┴────────────┘
Но КХ их отсеял:
SELECT count(*)
FROM graphite
WHERE Path = 'DevOps.system.vm-graphite-ch1.loadavg.load_normalized'
┌─count()─┐
│ 25437 │
└─────────┘
1 rows in set. Elapsed: 0.004 sec. Processed 106.50 thousand rows, 6.59 MB (29.55 million rows/s., 1.83 GB/s.)
:) select count(*) from graphite32 where Path='DevOps.system.vm-graphite-ch1.loadavg.load_normalized' ;
SELECT count(*)
FROM graphite32
WHERE Path = 'DevOps.system.vm-graphite-ch1.loadavg.load_normalized'
┌─count()─┐
│ 850 │
└─────────┘
1 rows in set. Elapsed: 0.006 sec. Processed 229.38 thousand rows, 17.09 MB (37.33 million rows/s., 2.78 GB/s.)
:)
CH сделал rollup и сохранил только ежечасные данные вместо минутных:
SELECT *
FROM graphite32
WHERE Path = 'DevOps.system.vm-graphite-ch1.loadavg.load_normalized'
ORDER BY Time ASC
LIMIT 10
┌─Path──────────────────────────────────────────────────┬────────────────Value─┬───────Time─┬───────Date─┬──Timestamp─┐
│ DevOps.system.vm-graphite-ch1.loadavg.load_normalized │ 0.010952380952380953 │ 1504602000 │ 2017-09-05 │ 1504605584 │
│ DevOps.system.vm-graphite-ch1.loadavg.load_normalized │ 0.026949152542372883 │ 1504605600 │ 2017-09-05 │ 1504609184 │
│ DevOps.system.vm-graphite-ch1.loadavg.load_normalized │ 0.013166666666666672 │ 1504609200 │ 2017-09-05 │ 1504612784 │
│ DevOps.system.vm-graphite-ch1.loadavg.load_normalized │ 0.03533333333333333 │ 1504612800 │ 2017-09-05 │ 1504616384 │
│ DevOps.system.vm-graphite-ch1.loadavg.load_normalized │ 0.030333333333333337 │ 1504616400 │ 2017-09-05 │ 1504619984 │
│ DevOps.system.vm-graphite-ch1.loadavg.load_normalized │ 0.005333333333333334 │ 1504620000 │ 2017-09-05 │ 1504623584 │
│ DevOps.system.vm-graphite-ch1.loadavg.load_normalized │ 0.05322033898305082 │ 1504623600 │ 2017-09-05 │ 1504627184 │
│ DevOps.system.vm-graphite-ch1.loadavg.load_normalized │ 0.03616666666666666 │ 1504627200 │ 2017-09-05 │ 1504630784 │
│ DevOps.system.vm-graphite-ch1.loadavg.load_normalized │ 0.03000000000000001 │ 1504630800 │ 2017-09-05 │ 1504634384 │
│ DevOps.system.vm-graphite-ch1.loadavg.load_normalized │ 0.008666666666666668 │ 1504634400 │ 2017-09-05 │ 1504637984 │
└───────────────────────────────────────────────────────┴──────────────────────┴────────────┴────────────┴────────────┘
10 rows in set. Elapsed: 0.008 sec. Processed 229.38 thousand rows, 21.22 MB (30.06 million rows/s., 2.78 GB/s.)
:) select * from graphite where Path='DevOps.system.vm-graphite-ch1.loadavg.load_normalized' and Time >1504601999 order by Time limit 10;
SELECT *
FROM graphite
WHERE (Path = 'DevOps.system.vm-graphite-ch1.loadavg.load_normalized') AND (Time > 1504601999)
ORDER BY Time ASC
LIMIT 10
┌─Path──────────────────────────────────────────────────┬─Value─┬───────Time─┬───────Date─┬──Timestamp─┐
│ DevOps.system.vm-graphite-ch1.loadavg.load_normalized │ 0.04 │ 1504604340 │ 2017-09-05 │ 1504604384 │
│ DevOps.system.vm-graphite-ch1.loadavg.load_normalized │ 0.04 │ 1504604400 │ 2017-09-05 │ 1504604444 │
│ DevOps.system.vm-graphite-ch1.loadavg.load_normalized │ 0.03 │ 1504604460 │ 2017-09-05 │ 1504604504 │
│ DevOps.system.vm-graphite-ch1.loadavg.load_normalized │ 0.02 │ 1504604520 │ 2017-09-05 │ 1504604564 │
│ DevOps.system.vm-graphite-ch1.loadavg.load_normalized │ 0.01 │ 1504604580 │ 2017-09-05 │ 1504604624 │
│ DevOps.system.vm-graphite-ch1.loadavg.load_normalized │ 0 │ 1504604640 │ 2017-09-05 │ 1504604684 │
│ DevOps.system.vm-graphite-ch1.loadavg.load_normalized │ 0 │ 1504604700 │ 2017-09-05 │ 1504604744 │
│ DevOps.system.vm-graphite-ch1.loadavg.load_normalized │ 0.02 │ 1504604760 │ 2017-09-05 │ 1504604804 │
│ DevOps.system.vm-graphite-ch1.loadavg.load_normalized │ 0.03 │ 1504604820 │ 2017-09-05 │ 1504604864 │
│ DevOps.system.vm-graphite-ch1.loadavg.load_normalized │ 0.01 │ 1504604880 │ 2017-09-05 │ 1504604924 │
└───────────────────────────────────────────────────────┴───────┴────────────┴────────────┴────────────┘
10 rows in set. Elapsed: 0.005 sec. Processed 106.50 thousand rows, 8.50 MB (21.14 million rows/s., 1.69 GB/s.)
:)
прореживание при встаавке только делается?
в схеме сервера:
прореживать до час все что старше одного месяца, он сам это не делает? почему в исходно все данные?
это
<graphite_rollup>
<default>
<function>avg</function>
<retention>
<age>0</age>
<precision>60</precision>
</retention>
<retention>
<age>2592000</age>
<precision>3600</precision>
</retention>
</default>
</graphite_rollup>
работает только при вставке?


Pavel
21.02.2018
11:56:40
всем привет! После обновления что-то стало с iptree словарем...
2018.02.21 11:52:55.786256 [ 20 ] <Error> executeQuery: Code: 117, e.displayText() = DB::Exception: Expected end of line, e.what() = DB::Exception (from [::1]:60671) (in query: SELECT dictGetString('maxmind_country_codes', 'country_name', toUInt64(dictGetUInt32('maxmind_geoip', 'geoname_id', tuple(toUInt32(IPv4StringToNum('11.22.33.44')))) as geoname_id)) as country), Stack trace:
0. clickhouse-server(StackTrace::StackTrace()+0x15) [0x7317e35]
1. clickhouse-server(DB::Exception::Exception(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)+0x1e) [0x19caa8e]
2. clickhouse-server() [0x6b7de10]
3. clickhouse-server(DB::CSVRowInputStream::read(std::vector<COWPtr<DB::IColumn>::mutable_ptr<DB::IColumn>, std::allocator<COWPtr<DB::IColumn>::mutable_ptr<DB::IColumn> > >&)+0x18f) [0x6b7e07f]
4. clickhouse-server(DB::BlockInputStreamFromRowInputStream::readImpl()+0x97) [0x6b7acb7]
5. clickhouse-server(DB::IProfilingBlockInputStream::read()+0x26f) [0x5fe983f]
6. clickhouse-server(DB::OwningBlockInputStream<DB::ShellCommand>::readImpl()+0x26) [0x6b9fcc6]
7. clickhouse-server(DB::IProfilingBlockInputStream::read()+0x26f) [0x5fe983f]
8. clickhouse-server(DB::HashedDictionary::loadData()+0x62) [0x659ab22]
вручную скрипты подергал, CSV выдается корректный
/bin/bash /etc/clickhouse-server/dictionaries/maxmind_geoip/pull_maxmind_geoip.bash | head
1.0.0.0/24,2077456,2077456,,0,0
1.0.1.0/24,1814991,1814991,,0,0
1.0.2.0/23,1814991,1814991,,0,0
1.0.4.0/22,2077456,2077456,,0,0
1.0.8.0/21,1814991,1814991,,0,0


Vadim
21.02.2018
12:03:41
создал ещё одну таблицу с грануляцией 16384 строки, скопировал в нее из новой(32768строк) и потерял ещё ряды:
SELECT count(*)
FROM graphite32
┌───count()─┐
│ 489786511 │
└───────────┘
1 rows in set. Elapsed: 0.105 sec. Processed 489.79 million rows, 979.57 MB (4.68 billion rows/s., 9.36 GB/s.)
:) select count(*) from graphite16;
SELECT count(*)
FROM graphite16
┌───count()─┐
│ 488059041 │
└───────────┘
1 rows in set. Elapsed: 0.076 sec. Processed 488.06 million rows, 976.12 MB (6.45 billion rows/s., 12.90 GB/s.)
кто-то может это объяснить?

Evgeny
21.02.2018
12:17:22

Pavel
21.02.2018
12:22:32
так, похоже с iptrie все ок, а вот другой hash словарь теперь поломался ?

Artem
21.02.2018
12:38:01
Такой вопрос
Есть какой нибудь менее костыльный вариант проверить наличие значения в Array(Enum8(....)), чем то, что ниже?
SELECT ... WHERE has(arrayMap(x -> toUInt8(x), arrColumn), 4)

Google

Nikita
21.02.2018
12:39:32
К вопросу выше добавлю — можно ли найти индекс максимального в массиве?

Alexander
21.02.2018
13:30:53
Коллеги, конфигурация 2 шарды по 2 реплики.
Вчера обновили на 2х репликах одной шарды версию до 1.1.54343
На 2 репликах первой шарды версия: 1.1.54292
Cейчас CH начал дико что-то синхронизировать и в таблицах появились дубли записей
Эти события могут быть связанными?

Kirill
21.02.2018
13:47:05
шарды могут быть связаны только если вы в distributed пишите. Вы обновили один шард до новой версии, так? Где данные стали дублироваться? что в
select * from system.replication_queue
? Между 54292 и 54343 несовместимый формат репликации

Nikita
21.02.2018
14:58:21
Многие биндинги используют http протокол для подключения. Какие-то есть вообще с этим проблемы? http vs tcp ?

Kirill
21.02.2018
15:05:36

Nikita
21.02.2018
15:07:11

Гаврилов
21.02.2018
15:09:09
если не держать keep alive то каждый раз ждать подключения?

Kirill
21.02.2018
15:10:04

Ilya
21.02.2018
15:10:26

Гаврилов
21.02.2018
15:10:31
я пришел к ситуации когда держу постоянно открытые 20 подключений
потому что это реально быстрее чем открывать заново
возможно когда дадут более мощный сервер увеличу количество