@clickhouse_ru

Страница 82 из 723
f1yegor
05.03.2017
21:41:23
а это вам обязательно?

это все расходует неимоверное кол-во памяти во время вставки

mAX
05.03.2017
21:42:55
насколько я понял,это единственный способ построить по ним индекс? думаю можно будет сильно сэкономить..пока я это сделал для теста) а так в ключ наверное около 50-200 колонок надо бы

f1yegor
05.03.2017
21:43:25
почитайте https://medium.com/@f1yegor/clickhouse-primary-keys-2cf2a45d7324#.qsgpp1xfy

Google
mAX
05.03.2017
21:44:08
Спасибо!буду разбираться!

Andrey
05.03.2017
21:45:02
у меня 232 млн строк. Не по ключу селектит за 0.306 сек

f1yegor
05.03.2017
21:45:04
там по русски если что

Andrey
05.03.2017
21:45:12
Так ли нужны вам все поля в индексе?

f1yegor
05.03.2017
21:45:28
https://groups.google.com/forum/#!searchin/clickhouse/%D0%B8%D0%BD%D0%B4%D0%B5%D0%BA%D1%81%7Csort:relevance/clickhouse/eUrsP30VtSU/p4-pxgdXAgAJ

mAX
05.03.2017
21:47:54
это колонки по типу свойств товаров яндекс.маркета.. возможно и не нужны,надо провести небольшое исследование.. БД с продукцией электротехнической..у нее гигантское количество свойст и возможных значений этих свойств..

колонки в таблице очень разряженные..там на 99% товаров значение может быть -1..вместо null)

сперва сделал тест просто в лоб..и даже так очень классные результаты)

Andrey
05.03.2017
21:50:09
Ну я крайне советую протестировать без всех полей в индексе. У меня без индекса отбегает оч быстро хотя виртуалка всего 4 ядра

mAX
05.03.2017
21:51:14
попробую,отпишусь о результатах.. возможно кому-то окажется полезным)

запустил без ключей точно время вставки не замерял,но по ощущениям быстрее раза в два-три вставилось.. запросы мелкие с where 10-20 штук условий не изменились..60-140мс запросы с большим количеством условий 150-200 штук выполняются дольше..600-800мс.. всего пару раз попалось ~1400мс,но это походу просто какие-то внезапные тормоза системы тесты антинаучные!) время учитывает оверхед на сеть т.к. измерялось на клиенте,да и много других факторов..данные искуственные

Andrey
05.03.2017
22:28:55
ну что, выглядит более чем логично

Google
Andrey
05.03.2017
22:29:09
чем больше полей в индексе, тем дольше вставка.

Чем меньше полей в индексе тем дольше селект с вашими where

Vitaliy
06.03.2017
10:04:58
Привет! Может не нада такую подставу делать? :) <yandex> <logger> <level>trace</level>

Alexey
06.03.2017
14:17:36
Привет! Подскажите, пожалуйста, в чем ошибка (ссылка на раздел документации была бы вообще супер) SELECT Count(user_id2), build_id FROM ( SELECT Max(timestamp_of) AS timestamp_of, user_id2 FROM stat_event GROUP BY user_id2 ) LEFT JOIN stat_event USING (timestamp_of, user_id2) GROUP BY build_id ↖️ Progress: 78.30 million rows, 1.10 GB (2.46 million rows/s., 34.38 MB/s.) Received exception from server: Code: 49. DB::Exception: Received from localhost:9000, 127.0.0.1. DB::Exception: Logical error: unknown combination of JOIN.

Igor
06.03.2017
14:20:08
ANY или ALL забыли указать

https://clickhouse.yandex/reference_ru.html#Секция%20JOIN

Alexey
06.03.2017
14:21:21
Респект!

Пропустил этот момент

SAMPLE для такого запроса можно писать? Возвращает "Expected end of query"

SELECT uniq(user_id2), build_id FROM ( SELECT Max(timestamp_of) AS timestamp_of, user_id2 FROM stat_event GROUP BY user_id2 ) ANY LEFT JOIN stat_event USING (timestamp_of, user_id2) SAMPLE 0.1 GROUP BY build_id;

Сэмплирование таблица поддерживает, т.е. без JOIN срабатывает корректно

Igor
06.03.2017
14:37:38
ANY/ALL у джойна снова не указаны и SAMPLE судя по документации должен практически в самом начале стоять, перед джойном https://clickhouse.yandex/reference_ru.html#SELECT

Alexey
06.03.2017
14:46:15
Да, ты прав по обоим пунктам. А сэмплирование для вложенного SELECT не поддерживается (что понятно)

В моем случае смысл имеет такой (корректный) запрос SELECT uniq(user_id2), build_id FROM ( SELECT Max(timestamp_of) AS timestamp_of, user_id2 FROM stat_event SAMPLE 0.1 GROUP BY user_id2 ) ANY LEFT JOIN stat_event USING (timestamp_of, user_id2) GROUP BY build_id;

Еще вопрос: бывает ли одностороннее реплицирование? Чтобы изменения, которые случайно могут произойти на реплике не затронули мастер-сервер

Dmitry
06.03.2017
15:14:52
Нет, а зачем нужен такой кейс?

Pavel
06.03.2017
15:15:33
staging сервера?

Dmitry
06.03.2017
15:16:23
Более того, мастера как такового нет

Есть лидер который отвечает за мержи, но он выбирается заново каждый раз

Igor
06.03.2017
15:18:06
а как выбирается, кворумом?

Google
Igor
06.03.2017
15:18:30
paxos/raft/etc?

Dmitry
06.03.2017
15:27:35
ZK

Alexey
06.03.2017
15:37:51
Нет, а зачем нужен такой кейс?
Для анализа нужно много памяти. Для самого сохранения - немного. Сервер бэкэнда занимается только сбором данных, а аналитикам отдается сервер реплики. Если реплику повредят (выполнят нештатный запрос), чтобы это не затронуло "бэкэнд"-сервер. Или это правами доступа надо решать?

Alexey
06.03.2017
16:06:44
Для отдельной базы это можно сделать, да? Чтобы можно было создавать другие базы в рамках того же инстанса

Alexey
06.03.2017
16:12:45
Это задаётся на уровне профиля пользователя. В users.xml смотрите profile для user-а. А сама настройка указывается в соответствующем profile.

Alexey
06.03.2017
16:21:48
Понял. Спасибо!

Maxim
06.03.2017
21:13:44
А есть или планируется input плагин для логсташ?

как у них сделан для pg

было бы очень удобно

Felixoid
06.03.2017
21:55:14
Pavel
06.03.2017
21:56:29
есть подозрение, что LogStash захлебнется потоком данных от CH

Vladimir
06.03.2017
21:56:55
есть подозрение, что LogStash захлебнется потоком данных от CH
мне кажется это даже проверялось когда-то давно )

Pavel
06.03.2017
21:57:15
ставлю на это стакан красного и огурец! :)

Felixoid
06.03.2017
21:57:41
Мы делали output в clickhouse, но не полетело и выкинули

Maxim
06.03.2017
21:58:20
досадно :)

Felixoid
06.03.2017
21:59:33
там была проблема в том, что ЛШ падал, а стейтом у него являлась точка, на которой остановился input. Таким образом, львиная доля логов пролюбливалась и понимания, где остановилось -(считывание)- отправка, не было

Pavel
06.03.2017
22:27:05
мммм, ребят

а давно прав 777 на файлы данных Clickhouse?

drwxrwxrwx 2 clickhouse clickhouse 4096 Mar 3 23:51 default drwxrwxrwx 3 clickhouse clickhouse 4096 Mar 4 22:08 mydata drwxrwxrwx 2 clickhouse clickhouse 4096 Mar 3 23:51 system

Google
Alexey
06.03.2017
22:27:59
Так было изначально, но в последней версии уже отменено.

Pavel
06.03.2017
22:28:17
оч хорошо :)

хочется странного, вот есть две таблицы одного типа, но там разные значения. Как найти их пересечение?

то есть выбрать типы которые есть в обоих таблицах

Alexey
06.03.2017
23:26:59
SELECT x FROM t1 WHERE x IN (SELECT x FROM t2)

Pavel
06.03.2017
23:28:29
мощно

спасибо :)

еще вопрос, а автодополнение имен таблиц по табу не работает вообще или у меня только?

Alexey
06.03.2017
23:47:33
Вообще.

Pavel
06.03.2017
23:48:01
ок, не горит) смиримся

Igor
07.03.2017
05:41:19
у меня в clickhouse-cli есть но автодополнения полей еще нет

Vladimir
07.03.2017
08:47:08
Добрый день! Возник вопрос - планируется много пользователей на фронтенде которые будут дергать кх. Вопрос как организовать прослойку. Прокси? Или дополнительно что то. Как организовано в метрике? Хотя бы схематично

Andrey
07.03.2017
08:51:47
для чего? если для балансировки то Haproxy ок.

Anton
07.03.2017
08:54:28
Наверняка и nginx прекрасно подходит.

Vladimir
07.03.2017
08:55:27
Ок. Спасибо.

Виктор
07.03.2017
09:04:19
В Метрике отдельные демона реализуют API

Потому что пользователи ходят в CH не на языке CH

Vladimir
07.03.2017
09:07:47
А есть где то этот демон? Или это на откуп общественности?

Писать raw connector

Виктор
07.03.2017
09:28:32
Ну, мы используем jdbc драйвер

Google
Виктор
07.03.2017
09:29:09
https://github.com/yandex/clickhouse-jdbc

Vladimir
07.03.2017
09:30:40
Ок. Понял. Спасибо это уже лучше:-)

Alexey
07.03.2017
11:30:15
Я снова с глупыми вопросами ) Есть относительно большая (40 млн. записей) таблица, созданная так CREATE TABLE default.stat_event ( ch_date Date DEFAULT today(), timestamp_of DateTime, user_id2 UInt64, type_id UInt32, distrib_id UInt32, event_id UInt32, <и еще десяток полей> ) ENGINE = MergeTree(ch_date, user_id2, (event_id, user_id2, timestamp_of), 8192); Делаю запрос с limit, отсоритированный по PK SELECT * FROM stat_event ORDER BY event_id, user_id2, timestamp_of limit 100 FORMAT TabSeparated; Ожидаю, что прочитана будет только сотня записей, но по факту с диска читается вся таблица. Почему так?

Dmitry
07.03.2017
11:33:40
В этом месте сейчас к сожалению нету оптимизации

Shine
07.03.2017
11:35:23
Можно уточнить, в каком именно месте ?:) вообще с применением limit ?

Vladimir
07.03.2017
11:39:17
Да тоже интересует данный вопрос.

Dmitry
07.03.2017
11:48:10
Леша писал где-то выше по чату. Кажется в сортировках не используется PK

Alexey
07.03.2017
11:48:40
А как можно эффективно разбить запрос на несколько порций? Таблица в этот момент уже не обновляется

Vladislav
07.03.2017
12:05:14
А напомните пожалуйста, кх умеет в несколько БД или там как в вертике, один сервер - одна БД?

Igor
07.03.2017
12:06:06
умеет конечно

Vladislav
07.03.2017
12:06:12
Спасибо

Igor
07.03.2017
12:06:13
CREATE DATABASE, USE, вот это все

Combot
07.03.2017
12:13:15
combot.org/chat/-1001080295593

Vitaliy
07.03.2017
13:32:11
Приветствую! Если ли какая-то батарейка для джанги?

Andrey
07.03.2017
13:32:42
батарейка?

Vitaliy
07.03.2017
13:33:09
(модуль)

Andrey
07.03.2017
13:34:19
из известных мне(я не разработчик) только 2 либы для python: 1. https://github.com/Infinidat/infi.clickhouse_orm 2. https://github.com/cloudflare/sqlalchemy-clickhouse

Vitaliy
07.03.2017
13:41:34
нашел еще такое https://github.com/ppodolsky/clickhouse-python

Felixoid
07.03.2017
14:50:38
для мониторинга пытаюсь приспособить select toInt64OrZero(count()) from system.replication_queue но на нереплицируемых нодах (а мониторить надо универсально) оно возвращает пустоту вместо нуля. Есть способы борьбы?

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