@clickhouse_ru

Страница 571 из 723
Michal
28.06.2018
12:47:58
Всем привет! Подскажите, плз, как проверить, что строка s1 является постфиксом строки s2 (аналог endswith в Python). Только через substring это можно сделать?
Почему "только"? Можно like, можно position, можно регулярным выражением. См. https://clickhouse.yandex/docs/en/functions/string_search_functions/

lalex
28.06.2018
12:48:44
Dmitry
28.06.2018
12:49:02
Спасибо!

Google
Vadim
28.06.2018
12:49:36
select * from (select 'asd' as a, 'sd' as postfix) where a like concat('%', postfix)

Alexander
28.06.2018
12:50:25
Dmitry
28.06.2018
12:51:53
select * from (select 'asd' as a, 'sd' as postfix) where a like concat('%', postfix)
select c_1 like concat('%', c_2) from ( select 'a***b' as c_1, '_b' as c_2) возвращает единицу. Стоит быть аккуратным со спецсимволами *, _ и проч. из паттернов

Vadim
28.06.2018
12:56:29
Ievgen
28.06.2018
13:00:38
Всем привет, я мог пропсутить, обсуждался ли вопрос апгрейда версии сервера в рамках шарда? Есть ли какой то best practice? Единственное что я нашел это https://groups.google.com/forum/#!topic/clickhouse/7Z9o4BBj8VE To do upgrade, just install new package and restart clickhouse-server. To do upgrade on cluster without downtime, install new package everywhere, then restart on half of replicas, then on another half. Но обсуждение достаточно старое, может есть более свежее что то?

Wolf
28.06.2018
13:01:21
ну все таки осталось

собственно реплики друг с другом не работают если разные версии

а шардам друг на друга пофиг все работает

Alexey
28.06.2018
13:02:17
при изменении uncompressed_cache_size и mark_cache_size надо рестартить кх? при этом в config-preprocessed.xml значения поменялись

Ievgen
28.06.2018
13:04:33
собственно реплики друг с другом не работают если разные версии
да я имел ввиду реплики внутри шарда, тобишь я могу апгрейднуть одну реплику в рамках шарда допустим из двух реплик и вторая прекратит реплицировать до момента когда версии будут совпадать?

Google
Alexey
28.06.2018
13:05:15
Надо
при периодических ошибках ZooKeeper session has expired. Switching to a new session. DB::Exception: Table is in readonly mode куда копать? нагрузка мизерная, зукиперы на тех же тачках

у zk при этом: 2018-06-28 14:40:43,673 [myid:1] - WARN [RecvWorker:3:QuorumCnxManager$RecvWorker@1025] - Connection broken for id 3, my id = 1, error = java.net.SocketException: Connection timed out (Read failed)

Kirill
28.06.2018
13:11:56
при периодических ошибках ZooKeeper session has expired. Switching to a new session. DB::Exception: Table is in readonly mode куда копать? нагрузка мизерная, зукиперы на тех же тачках
Надо смотреть почему они не могут достучаться друг до друга, вообще лучше ZK выносить от КХ чтоб они друг друга не афектили. У нас просто сильно больше чем 3 ZK и если там что-то "моргает" мы этого не замечаем )

Alexey
28.06.2018
13:12:47
у нас на основном класетере 8 тачек и 7 зк, но такое тодже периодически случается

но зк на тех же тачках находятся

Kirill
28.06.2018
13:20:14
Да, лучше убирать

Vladimir
28.06.2018
13:55:26
ребята, подскажите пожалуйста, я тут пытаюсь компилить clickhouse на mac os, на этапе Build Clickhouse после cmake вызываю ninja, у меня выскакивается ошибку ninja: error: loading 'build.ninja': No such file or directory

может у кого-то была похожая проблема ?

Vladimir
28.06.2018
14:07:22
cmake -G Ninja?
сработало, спасибо большое )

GithubReleases
28.06.2018
14:17:54
yandex/ClickHouse was tagged: v1.1.54388-stable Link: https://github.com/yandex/ClickHouse/releases/tag/v1.1.54388-stable Release notes: v1.1.54388-stable

Vladimir
28.06.2018
14:19:38
Уууу, еще changelog бы где-нить глянуть

Tima
28.06.2018
14:20:01
Уууу, еще changelog бы где-нить глянуть
https://github.com/yandex/ClickHouse/blob/master/CHANGELOG_RU.md

Vladimir
28.06.2018
14:20:16
благодарю

Nikita
28.06.2018
14:22:04
Привет всем, кто-нибудь пользуется не стандартный партицированнием? Не в месяц, а например в один день? Я так понимаю так делать нельзя так как ничего не будет сжиматься нормально?

Wolf
28.06.2018
14:23:16
да все будет сжиматься

Google
Wolf
28.06.2018
14:23:21
почему не будет то ?

Nikita
28.06.2018
14:24:04
Почему не будет сжиматься? Будет размер партиции в день, а не месяц
Там же он сжимает в рамках партиции? Или я ошибаюсь?

antuan
28.06.2018
14:25:20
мы бьем по неделе, степень сжатия нас устраивает

Kirill
28.06.2018
14:25:21
Там же он сжимает в рамках партиции? Или я ошибаюсь?
Да, жмет в рамках партиции поэтому при партиции в день сжатие не такое эффективное

Tima
28.06.2018
14:25:23
Партиция - некий логический кусок данных, на которые побита таблица

Kirill
28.06.2018
14:32:32
Спорное утверждение, всё зависит от данных
Ничего спорного, в любом случае на партиции в месяц данные будут пожаты лучше чем в 30 по дню. Плюс и сортировка данных и индексирование тоже идет в рамках партиции, я к тому что нужно сильно понимать зачем менять стандартный размер партиции перед тем как это делать, этож как index_granularity крутить )

Tima
28.06.2018
14:37:03
Ничего спорного, в любом случае на партиции в месяц данные будут пожаты лучше чем в 30 по дню. Плюс и сортировка данных и индексирование тоже идет в рамках партиции, я к тому что нужно сильно понимать зачем менять стандартный размер партиции перед тем как это делать, этож как index_granularity крутить )
Пожаты лучше почему? Я согласен что лучше не менять дефолтные параметры без сильной необходимости. Но пока не могу понять почему одни и те же данные в партиции по месячно жмутся лучше чем по дню. Я понимаю, что для кого-то на 1 % меньше - куча съэкономленных денег. О каком порядке "лучше" идёт речь?

Tima
28.06.2018
14:42:25
А у вас не сохранилось данных в КХ? Было бы интересно посмотреть файлы за один и тот же месяц при партиционирование по месяцу и по дню. Что там с размерами индекса например

Kirill
28.06.2018
14:43:12
На размер индекса это не будет сильно влиять

Michal
28.06.2018
14:44:00
Когда я "игрался" с нашими данными у меня партиции по дно занимали в 7-8 раз больше места
Любопытно. У нас разница есть, но там проценты а не в разы. Там если память мне не изменяет данные жмутся поблочно (по 64 Кб вроде по умолчанию). Ну и вся разница в том насколько разные у вас будут данные в рамках каждого блока (а это зависит от выбора PK).

Kirill
28.06.2018
14:44:02
Данных у нас в КХ много, но месяц сливать очень долго чтоб посмотреть

Kirill
28.06.2018
14:49:12
Нас тут таких много с юзерагентами, реферерами и т.п. :)
Знаем-знаем. Если честно то я не знаю почему наши данные так себя повели, да и копаться не стал, нам партиции по дно ненужны. Может, как будет время, попробую ради интереса еще раз переналить.

Diomid
28.06.2018
14:49:25
https://github.com/yandex/ClickHouse/blob/master/CHANGELOG_RU.md
А чего, DELETE так и не завезли?(

Michal
28.06.2018
14:49:48
Из замеченных (довольно неприятных) особенностей дневного партиционирования - это медленный старт сервера.

Google
M
28.06.2018
14:49:57
А чего, DELETE так и не завезли?(
ALTER TABLE t DELETE WHERE а это не оно?

Diomid
28.06.2018
14:52:24
Я ожидал просто DELETE видимо) А реплицированных таблиц это ReplicatedMergeTree тоже?

Ievgen
28.06.2018
14:53:29
мм ну как практика показала при апгрейде одной реплики 1.1.54362 ==> 1.1.54385 репликация с более новой на более старую версию продолжает бежать, само по себе ничего не останавливается

Michal
28.06.2018
14:53:37
Знаем-знаем. Если честно то я не знаю почему наши данные так себя повели, да и копаться не стал, нам партиции по дно ненужны. Может, как будет время, попробую ради интереса еще раз переналить.
Тут все зависит от сценария, нам получилось удобнее по дням. Там если нужно перелить партицию - это можно сделать в какое-то преемлимое время. Ну и у нас в силу специфики старого кода (считает дневные агрегации) удобнее чтоб кликхаус скановал поменьше данных в относительно небольших партициях.

Kirill
28.06.2018
14:56:21
Тут все зависит от сценария, нам получилось удобнее по дням. Там если нужно перелить партицию - это можно сделать в какое-то преемлимое время. Ну и у нас в силу специфики старого кода (считает дневные агрегации) удобнее чтоб кликхаус скановал поменьше данных в относительно небольших партициях.
Да, я понимаю, у нас для части данных партиции по неделе, они быстро "устаревают" и их так проще выкидывать. А сканить онбудет мало если просто дата в индексе есть. Сейчас (с ALTER DELETE) все проще, не нужно делать дневную партицию чтоб ее удобнее было заменять, можно просто удалить день )

Если вы за год/два выбираете это будет очень сильно заметно с партициями по дню ;)

Michal
28.06.2018
14:58:38
Я особо тестов не проводил, но разница по объёму места значительная, но меня сейчас больше производительность и подводные камни интересуют
Чем меньше партиций нужно будет прочитать при "средних" запросах - тем лучше будет производительность.

Т.е. если у вас типичные запросы за месяц - то и партиционирование делайте по месяцах.

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

Ещё у нас некоторые колонки весьма большие и очень быстро устаревают (в течение нескольких дней храним json со всякими подробностями, что-то типа телеметрии для отладки) ну и дневные партиции позволяют легко и безболезненно эти ненужные данные удалять с опозданием в -3 дня.

Kirill
28.06.2018
15:53:57
Ещё у нас некоторые колонки весьма большие и очень быстро устаревают (в течение нескольких дней храним json со всякими подробностями, что-то типа телеметрии для отладки) ну и дневные партиции позволяют легко и безболезненно эти ненужные данные удалять с опозданием в -3 дня.
Да, в этом несомнено плюс, почистить колонку гораздо проще и безболезненнее чем сделать ALTER DELETE. У нас немного другие заморочки, гранулярность индекса на разных данных разная: 32, 64 и 16к )

Jen
28.06.2018
15:58:09
Джентельмены, у вас в доке написано, что движок MergeTree из tab-separated дампа тянет на запись 50-200МБ/сек, чем это обусловлено? Хочу посчитать, сколько серверов мне нужно в кластере, если я знаю количество строк в секунду, их средний размер и производительность дисковой подсистемы, а вставка будет идти через jdbc драйвер.

yuyu
28.06.2018
15:59:00
А как реализована поддержка Alias в запросах: alias вычисляется единожды или при каждом использовании в выражениях? Сколько раз будет вычислен 'A' в таком select, например: SELECT (1+2 as A) + 3 AS B, A+B AS C

Kirill
28.06.2018
16:00:19
Джентельмены, у вас в доке написано, что движок MergeTree из tab-separated дампа тянет на запись 50-200МБ/сек, чем это обусловлено? Хочу посчитать, сколько серверов мне нужно в кластере, если я знаю количество строк в секунду, их средний размер и производительность дисковой подсистемы, а вставка будет идти через jdbc драйвер.
Зависит от количества колонок и их типа/размера. Посчитать будет несколько сложно, так как дисковая система, да и сам сервер будут нагружены неравномерно, те же мержи могут афектить. Проще накидать тастовых даных в сервер и посмотреть, а гадать тут относительно сложно

Denis
28.06.2018
16:31:05
Кстати, кто-нибудь пробовал ? https://github.com/housepower/ClickHouse-Native-JDBC This is a native JDBC library for accessing ClickHouse in Java. Uses native ClickHouse tcp client-server protocol, with higher performance than HTTP Compatibility with java.sql Data Compression

Google
Гаврилов
28.06.2018
16:35:06
а на сколько быстрее будет по нативному протоколу?

если передача данных не большая

Wolf
28.06.2018
16:45:35
если небольшая то и разница будет не большой

Kirill
28.06.2018
19:25:43
а на сколько быстрее будет по нативному протоколу?
Там даже дело не столько в скорости, а в том что данные уже "подготовлены" и сервер не тратит ресурсы на преобразование типов, все это можно вынести в пишущий воркер. По скорости - да, быстрее, но все зависит от того что пишите

Vasilij
29.06.2018
07:12:47
Эх, теперь бы ещё документацию актуальную :)

Victor
29.06.2018
07:13:49
будет и дока, оно всё закоммичено

Victor
29.06.2018
07:14:51
я по диффам смотрел, все ок

Дмитрий
29.06.2018
08:08:40
Господа вопрос про дату/время. Данные вставляются через параметры ADO.NET и интерпретируются как UTC. В запросе toDateTime('yyyy-MM-dd HH:mm:ss') через тот-же провайдер интерпретируются как локальные в таймзоне сервера... Как добится консистентного предсказуемого поведения? Как-нить можно в toDateTime передавать таймзону дабы не зависить от настроек клиента/сервера?

Yaroslav
29.06.2018
08:15:28
Дополнительно, функция toString от аргумента типа DateTime может принимать второй аргумент String - имя тайм-зоны. Пример: Asia/Yekaterinburg В этом случае, форматирование времени производится согласно указанной тайм-зоне. SELECT now() AS now_local, toString(now(), 'Asia/Yekaterinburg') AS now_yekat ┌───────────now_local─┬─now_yekat───────────┐ │ 2016-06-15 00:11:21 │ 2016-06-15 02:11:21 │

Дмитрий
29.06.2018
08:27:47
мне не форматировать. мне сформировать sql-запрос вида select * from tableName where dt>=toDateTime('bla-bla-bla') чтобы этот bla-bla-bla интепретировался как мне надо а не как админ на сервере таймзону выставил

Vladimir
29.06.2018
08:43:17
мне не форматировать. мне сформировать sql-запрос вида select * from tableName where dt>=toDateTime('bla-bla-bla') чтобы этот bla-bla-bla интепретировался как мне надо а не как админ на сервере таймзону выставил
SELECT toDateTime('2018-06-29 10:05:34', 'Asia/Yekaterinburg') AS test_datetime, toTypeName(test_datetime) AS type ┌───────test_datetime─┬─type─────────────────────────────┐ │ 2018-06-29 10:05:34 │ DateTime(\'Asia/Yekaterinburg\') │ └─────────────────────┴──────────────────────────────────┘

Дмитрий
29.06.2018
08:44:27
а список локалей ('Asia/Yekaterinburg') где взять???

какая локаль для UTC?

Stanislav
29.06.2018
08:45:18
локали - в /usr/share/zoneinfo

А UTC он и есть UTC (не путать с GMT!)

Vladimir
29.06.2018
08:48:32
https://en.wikipedia.org/wiki/List_of_tz_database_time_zones

Страница 571 из 723