• 01 March 2019 (164 messages)
  • Я откатил на 19.1.9
  • https://t.me/clickhouse_ru
    В мастере это в какой версии?
  • https://t.me/clickhouse_ru
    @metikovvadim #90928 06:15 AM, 01 Mar 2019
    Что значит в clickhouse-client команда \
    ?
    минимизированное приглашение ?
  • https://t.me/clickhouse_ru
    @chertus ↶ Reply to #90927 #90929 06:16 AM, 01 Mar 2019
    В основной ветке на гитхабе, но ни в какой версии еще
  • https://t.me/clickhouse_ru
    Наверно значит много строчек
  • https://t.me/clickhouse_ru
    Многообещающее. А когда ждать релиз?
  • https://t.me/clickhouse_ru
    @chertus #90932 06:18 AM, 01 Mar 2019
    Чем скорее потестируем, тем быстрее будет. Вот, добровольцев ищу )
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #90933 06:26 AM, 01 Mar 2019
    А чем можно помочь? Поставить последний мастер и потестить?
  • https://t.me/clickhouse_ru
    Нет. Спотыкается как обычно, начиная со второй
  • https://t.me/clickhouse_ru
    @stufently #90935 06:55 AM, 01 Mar 2019
    ну напшии все в одну без переноса
  • @reconfigurator #90936 06:59 AM, 01 Mar 2019
    Добрый день!

    Пытаюсь подключиться прямо из JetBrains Rider к ClickHouse в облаке. Хост правиьный, БД написал, SSL включил, сертификат присоединил... и тест коонекшена не проходит.

    [1002] ClickHouse exception, code: 1002, host: ... failed to respond .

    Из DBeaver всё норм.

    Причём к нашему локальному ClickHouse подключаюсь без проблем и из Rider и из DBeaver. Никто не сталкивался?
  • https://t.me/clickhouse_ru
    @chertus ↶ Reply to #90933 #90937 06:59 AM, 01 Mar 2019
    Да, потестить на своих запросах
  • Разобрался. Как и в DBeaver надо было настраивать соединение через вкладку Advanced.
  • https://t.me/clickhouse_ru
    А вы используете ssl? Я никак не могу подключится к КХ через ssl через DBeaver
  • https://t.me/clickhouse_ru
    Тогда результат не отличается от того, что в обычном приглашении пишу
  • Да, там в Connection settings -> Driver properties : ssl выставил в true. Ну и путь до серитификата надо указать в поле sslrootcert.
  • https://t.me/clickhouse_ru
    @sshevchenkoDev #90942 07:47 AM, 01 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
    @theyoshi86 #90943 07:57 AM, 01 Mar 2019
    Joined.
  • @343647023 #90944 09:43 AM, 01 Mar 2019
    Добрый день коллеги
    С чем может быть связана ошибка при чтении из таблицы?
    После этого таблица перестала быть доступной для чтения

    DB::Exception: Cannot write to ostream at offset 2570059776
    <Error> HTTPHandler: Cannot send exception to client
  • https://t.me/clickhouse_ru
    @rasstr0en #90945 10:14 AM, 01 Mar 2019
    Доброе утро! Кто знает, чем отличается countState от uniqState по уникальному полю в materializedView? countMerge выдаем неправильные данные, uniqMerge - четко правильные
  • https://t.me/clickhouse_ru
    count - это count (считает кол-во строк), uniq - это алиас для COUNT(DISCTINCT()) - считает кол-во УНИКАЛЬНЫХ значений
  • https://t.me/clickhouse_ru
    в MergeTree таблицу добавляем 100 значений, во вьюшке с countState в итоге 70, во вьюшке с uniq в итоге 100 (правильно)
  • https://t.me/clickhouse_ru
    @rasstr0en #90948 10:21 AM, 01 Mar 2019
    то есть count() в AggregatingMergeTree куда-то девает часть данных
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #90949 10:21 AM, 01 Mar 2019
    Покажите запрос создание исходной таблицы и матвьюхи
  • https://t.me/clickhouse_ru
    @rasstr0en #90950 10:22 AM, 01 Mar 2019
    CREATE MATERIALIZED VIEW IA ENGINE=ReplicatedAggregatingMergeTree(path,smth,iDate, (iDate,managerId,userId,campaignId,creativeId,sourceId,domainId), 8192)
    AS SELECT
    iDate,
    managerId,
    userId,
    campaignId,
    creativeId,
    sourceId,
    domainId
    countState(id) as iCount
    FROM MergeTreeTableName
    GROUP BY
    iDate,
    managerId,
    userId,
    campaignId,
    creativeId,
    sourceId,
    domainId
  • https://t.me/clickhouse_ru
    @rasstr0en #90951 10:23 AM, 01 Mar 2019
    countState(id) as iCount - не получается потом вытащить правдивое число
  • https://t.me/clickhouse_ru
    @rasstr0en #90952 10:23 AM, 01 Mar 2019
    uniqState(id) - правильно все хранит
  • https://t.me/clickhouse_ru
    @rasstr0en #90953 10:24 AM, 01 Mar 2019
    как будто где-то там внутри при мерже поведение count() какое-то не такое, как я думаю)
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #90954 10:24 AM, 01 Mar 2019
    Запрос
    SELECT
    iDate,
    managerId,
    userId,
    campaignId,
    creativeId,
    sourceId,
    domainId
    count(id) as iCount
    FROM MergeTreeTableName
    GROUP BY
    iDate,
    managerId,
    userId,
    campaignId,
    creativeId,
    sourceId,
    domainId

    Показывает значения, совпадающие с uniqMerge ?
  • https://t.me/clickhouse_ru
    @rasstr0en #90955 10:25 AM, 01 Mar 2019
    ага
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #90956 10:25 AM, 01 Mar 2019
    И покажите запрос, который выполняете над матвьюхой (там где uniqMerge)
  • https://t.me/clickhouse_ru
    @rasstr0en #90957 10:25 AM, 01 Mar 2019
    select countMerge(iCount) from impressionsAggregatedCountNoId where impressionDate='2019-03-01' and userId=64 and creativeId=2322
  • https://t.me/clickhouse_ru
    @rasstr0en #90958 10:25 AM, 01 Mar 2019
    select uniqMerge(impressionsCount) from impressionsAggregatedUniq where impressionDate='2019-03-01' and userId=64 and creativeId=2322
  • https://t.me/clickhouse_ru
    @rasstr0en #90959 10:26 AM, 01 Mar 2019
    вот 2 вьюхи, в одной uniqState во второй countState
  • https://t.me/clickhouse_ru
    @rasstr0en #90960 10:26 AM, 01 Mar 2019
    и эти 2 запроса
  • https://t.me/clickhouse_ru
    @rasstr0en #90961 10:26 AM, 01 Mar 2019
    uniq правильное
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #90962 10:28 AM, 01 Mar 2019
    Вы же понимаете что countState(id) применяется к каждому блоку, вставляемому в исходную таблицу? А не ко всей исходной таблице?
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #90963 10:29 AM, 01 Mar 2019
    А uniqStat - вычисляет промежуточное состояние этой агрегатной функции (для каждого вставляемого блока) и при вызове uniqMerge - доагрегирует и потому показывает правильное значение
  • https://t.me/clickhouse_ru
    то есть countState() не будет во вьюшке показывать правильное количество строк? Мне казалось это 2 одинаковые ф-ции, за исключением того что uniq уникальные ищет
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #90965 10:32 AM, 01 Mar 2019
    1. это не одинаковые функции.
    2. матвью указаный при создании запрос применяет к вставляемому блоку
  • https://t.me/clickhouse_ru
    @rasstr0en #90966 10:32 AM, 01 Mar 2019
    то есть ожидалось что при вставке countState() добавит именно вставляемое количество, как и uniqState
  • https://t.me/clickhouse_ru
    КХ это не про ожидание, а про суровую реальность
  • https://t.me/clickhouse_ru
    @rasstr0en #90968 10:34 AM, 01 Mar 2019
    да, если применять к блоку что count что uniq кажется что для уникальных значений, типа автоинкремента, поведение будет одно
  • https://t.me/clickhouse_ru
    @rasstr0en #90969 10:35 AM, 01 Mar 2019
    но по факту uniq нас спасает)
  • https://t.me/clickhouse_ru
    Это да
  • https://t.me/clickhouse_ru
    попробовали на новой версии кликхауса
  • https://t.me/clickhouse_ru
    @rasstr0en #90972 10:49 AM, 01 Mar 2019
    это был баг
  • https://t.me/clickhouse_ru
    @rasstr0en #90973 10:49 AM, 01 Mar 2019
    у нас древняя 1.1.54.. версия
  • https://t.me/clickhouse_ru
    @rasstr0en #90974 10:49 AM, 01 Mar 2019
    count() работает на свежих версиях нормально)
  • https://t.me/clickhouse_ru
    @241186216 #90975 11:44 AM, 01 Mar 2019
    Подскажите а какой момент перестраивается materualuzed view
  • https://t.me/clickhouse_ru
    @bogdi_gulyaet #90976 11:45 AM, 01 Mar 2019
    коллеги, в кликхаусе есть функции toStartOfHour, toStartOfDay, а если нужна функция toStartOf12Hours то как быть? может как-то можно через деление в самом sql запросе это прописать?
  • @181568392 #90977 12:00 PM, 01 Mar 2019
    ClickHouse тормозит
  • @vitlibar #90978 12:00 PM, 01 Mar 2019
    toStartOfInterval(t, INTERVAL 12 hour)
  • https://t.me/clickhouse_ru
    оО спасибо, жаль только что в документации этого не написано(
  • https://t.me/clickhouse_ru
    @mr_anton_kuznetsov #90980 12:22 PM, 01 Mar 2019
    Ребят подскажите, кто нибудь добавлял модели catboost в КХ. Проблоема след плана - выкачиваю прекомпилированные файлик с гита https://github.com/catboost/catboost/releases, и в конфиге КХ указываю путь до него
    <catboost_dynamic_library_path>....catboost.so</catboost_dynamic_library_path>
    Плюет пошибку -
    Code: 375, e.displayText() = DB::Exception: Cannot dlopen: /usr/lib64/python2.7/site-packages/catboost/libcatboostr-linux.so: undefined symbol: R_DimSymbol, e.what() = DB::Exception

    Пробовали также устанвоить catboost через pip шибка была другая -
    Code: 375, e.displayText() = DB::Exception: Cannot dlopen: /usr/lib64/python2.7/site-packages/catboost/_catboost.so: undefined symbol: PyExc_KeyboardInterrupt

    В итоге я выкачал рекомпиленные файлы из докер контейнера из данного туториала https://github.com/yandex/clickhouse-presentations/blob/master/tutorials/catboost_with_clickhouse_ru.md, и все заработало.

    Но хотелось бы понять почему КХ не принимал файлы выачанные с гита и через pip
    Releases · catboost/catboost

    A fast, scalable, high performance Gradient Boosting on Decision Trees library, used for ranking, classification, regression and other machine learning tasks for Python, R, Java, C++. Supports comp...

  • https://t.me/clickhouse_ru
    @alexey_laptev #90981 01:14 PM, 01 Mar 2019
    Еще вопрос

    Задача: Перенести MergeTree в ReplicatedMergeTree

    Делаю: ALTER TABLE ch_log ATTACH PARTITION '20190301_20190301_111745_113127_278'

    Получаю: Code: 53, e.displayText() = DB::Exception: Type mismatch in IN or VALUES section. Expected: UInt32. Got: String

    Почему?
  • https://t.me/clickhouse_ru
    @alexey_laptev #90982 01:15 PM, 01 Mar 2019
    Ожидал сообщение что файл кривой, его нет, но не про типы
  • @ztlpn #90983 01:17 PM, 01 Mar 2019
    Вы пытаетесь приаттачить кусок, а не партицию (кстати, почему?) соответственно, вам нужен запрос ATTACH PART
  • https://t.me/clickhouse_ru
    @alexey_laptev #90984 01:18 PM, 01 Mar 2019
    ALTER TABLE ch_log ATTACH PART '20190301_20190301_111745_113152_283'

    Code: 33, e.displayText() = DB::Exception: Cannot read all data. Bytes read: 0. Bytes expected: 4.
  • https://t.me/clickhouse_ru
    @alexey_laptev #90985 01:19 PM, 01 Mar 2019
    скопировал файлы с боевой БД на новый сервер - пытаюсь их развернуть
  • https://t.me/clickhouse_ru
    @alexey_laptev #90986 01:19 PM, 01 Mar 2019
    права 777
  • https://t.me/clickhouse_ru
    @alexey_laptev #90987 01:24 PM, 01 Mar 2019
    попробовал из каталога detatched/ch_log_data

    ALTER TABLE ch_log ATTACH PARTITION 'ch_log_data'

    Code: 53, e.displayText() = DB::Exception: Type mismatch in IN or VALUES section. Expected: UInt32. Got: String

    есть варианты что не так? )
  • https://t.me/clickhouse_ru
    @alexey_laptev #90988 01:35 PM, 01 Mar 2019
    Делаю так

    ALTER TABLE ch_log ATTACH PARTITION '201902'

    Code: 53, e.displayText() = DB::Exception: Type mismatch in IN or VALUES section. Expected: UInt32. Got: String

    Есть одно поле UInt32, ощущение что ATTACH вставляет его как String
  • https://t.me/clickhouse_ru
    @o_less #90989 01:51 PM, 01 Mar 2019
    Попробуйте указать без кавычек
  • https://t.me/clickhouse_ru
    @o_less #90990 01:51 PM, 01 Mar 2019
    https://clickhouse.yandex/docs/en/query_language/alter/#alter_attach-partition
    Хотя в таблицах старого типа кавычки тоже допускаются
  • https://t.me/clickhouse_ru
    @alexey_laptev #90991 02:01 PM, 01 Mar 2019
    да, а в ру версии ковычки https://cl.ly/f74ae046cfe8

    вообще неплохобы приводить примеры конкретных запросов - так сильно понятней по первому разу
  • https://t.me/clickhouse_ru
    @alexey_laptev #90992 02:02 PM, 01 Mar 2019
    ALTER TABLE [db.]table ATTACH PARTITION|PART 'name'
  • https://t.me/clickhouse_ru
    @alexey_laptev #90993 02:12 PM, 01 Mar 2019
    Следующий вопрос

    ALTER TABLE ch_log ATTACH PARTITION 201902
    ALTER TABLE ch_log ATTACH PARTITION 201903
    ALTER TABLE ch_log ATTACH PARTITION 777777

    Все 3 запроса возвращают ОК

    есть куски

    20190201_20190221_50350_93852_12781
    20190301_20190301_111745_113152_283

    Но в таблице ничего. Почему?

    По идее надо ругать на 777777 или сказать сколько чего вставил
  • @ztlpn #90994 02:15 PM, 01 Mar 2019
    кстати, интересно, у вас таблицы (старая и новая) обе с одинаковым синтаксисом партиционирования созданы?
  • https://t.me/clickhouse_ru
    @alexey_laptev #90995 02:16 PM, 01 Mar 2019
    в старых специально не задавалось

    в новых PARTITION BY toYYYYMM(created_at)
  • https://t.me/clickhouse_ru
    @alexey_laptev #90996 02:17 PM, 01 Mar 2019
    плохо что нет сообщений что не так, даже если явно нет партиции - непонятно что делать
  • @ztlpn #90997 02:18 PM, 01 Mar 2019
    ну в этом и разгадка
  • @ztlpn #90998 02:18 PM, 01 Mar 2019
    таблица нового стиля просто не считает эти директории кусками - формат имени не тот
  • https://t.me/clickhouse_ru
    @alexey_laptev #90999 02:22 PM, 01 Mar 2019
    https://cl.ly/09d177e390e7 - это больше похоже на стандартный формат хранения
  • https://t.me/clickhouse_ru
    @o_less #91000 02:25 PM, 01 Mar 2019
    Русскую документацию поправим на днях.
  • https://t.me/clickhouse_ru
    @alexey_laptev #91001 02:25 PM, 01 Mar 2019
    А почему записи не добавляются и ошибок нет? )
  • https://t.me/clickhouse_ru
    @alexey_laptev #91002 02:26 PM, 01 Mar 2019
    кусок есть 20190201_20190221_50350_93852_12781

    201902
  • https://t.me/clickhouse_ru
    @alexey_laptev #91003 02:26 PM, 01 Mar 2019
    ALTER TABLE ch_log ATTACH PARTITION 201902
  • https://t.me/clickhouse_ru
    @livinbelievin #91004 02:28 PM, 01 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
    @alexey_laptev #91005 02:29 PM, 01 Mar 2019
    хотя консольный клиент пишет 0 rows in set. Elapsed: 0.003 sec.
  • @dmitry_shepelev #91006 02:29 PM, 01 Mar 2019
    Добрый вечер, а нужно ли учитывать порядок при описании атрибутов внешних словарей из локальных csv файлов или нет? Если нужно, то как работает сопоставление порядка колонок (сначала секций key, затем уже attribute?)
  • https://t.me/clickhouse_ru
    @alexey_laptev #91007 02:32 PM, 01 Mar 2019
    попробую сделать дамп
  • https://t.me/clickhouse_ru
    jfyi все команды так делают и optmize и drop partition, может для идемпотентности.
  • https://t.me/clickhouse_ru
    да, ключ - первая(ые) колонки в csv
  • @ztlpn ↶ Reply to #91001 #91010 02:45 PM, 01 Mar 2019
    Тут специфика формата имени куска - кусок старого стиля воспринимается таблицей нового стиля, как кусок партиции 20190201 (а не 201902). Хотя этот случай наверняка довольно распространённый, и можно было бы добавить сообщение об ошибке.
  • https://t.me/clickhouse_ru
    @alexey_laptev #91011 02:48 PM, 01 Mar 2019
    ну надеюсь shadow дамп совместим между версиями
  • @ztlpn #91012 02:48 PM, 01 Mar 2019
    нет, не совместим
  • https://t.me/clickhouse_ru
    @alexey_laptev #91013 02:48 PM, 01 Mar 2019
    а как мне данные перенести? )
  • @ztlpn #91014 02:48 PM, 01 Mar 2019
    или вы про версии кликхауса?
  • @181568392 #91015 02:49 PM, 01 Mar 2019
    неужели кликхаус не может нормальные мануалы сделать и написать более высокоуровневый продукт чтоб вы все так не парились
  • @ztlpn #91016 02:50 PM, 01 Mar 2019
    есть два варианта - создать новую таблицу тоже в старом синтаксисе, или воспользоваться инструментом конвертации (правда, он никуда не выкладывался, наверно придётся выложить на Я.Диск)
  • https://t.me/clickhouse_ru
    @alexey_laptev #91017 02:52 PM, 01 Mar 2019
    ClickHouse client version 1.1.54318.
    ClickHouse client version 19.3.3.

    вот у меня такая разница
  • https://t.me/clickhouse_ru
    @alexey_laptev #91018 02:52 PM, 01 Mar 2019
    между старой и новой версией
  • @ztlpn #91019 02:54 PM, 01 Mar 2019
    Так тут проблема не в версиях сервера, а в том, что у вас старая таблица создана как MergeTree(Date, ..., а новая как MergeTree PARTITION BY toYYYYMM(Date). Создайте новую таблицу также через синтаксис MergeTree(Date, ... и данные отлично подцепятся.
  • https://t.me/clickhouse_ru
    @alexey_laptev #91020 02:54 PM, 01 Mar 2019
    может в csv?
  • @ztlpn ↶ Reply to #91015 #91021 02:55 PM, 01 Mar 2019
    ClickHouse база данных (БД)

    ClickHouse – быстрая аналитическая база данных с открытым исходным кодом. Идеально подходит для обработки больших данных в реальном времени. Попробуйте сервис по управлению кластерами баз данных ClickHouse в облаке. Берём на себя большую часть работы по обслуживанию.

  • @anuriq #91022 03:04 PM, 01 Mar 2019
    всем привет. в документации написано, что кликхаус подтягивает изменения в конфиге на лету. есть мнение, что некоторые опции все-таки требуют рестарта. где правда?
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #91023 03:05 PM, 01 Mar 2019
    Если вы изменили конфиг и изменения не применились - значит нужно перезагружать
  • @anuriq #91024 03:07 PM, 01 Mar 2019
    это официальный ответ? =)
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #91025 03:08 PM, 01 Mar 2019
    Официальный ответ что? Тут чат, где читают и пишут пользователи КХ. Явного списка параметров, которые требуют перезагрузки - нет (можете поискать по чату)
  • @anuriq #91026 03:14 PM, 01 Mar 2019
    да я имею в виду, что в документации не появится список таких параметров? как у Postgres, например
  • https://t.me/clickhouse_ru
    @artemhnilov #91027 03:15 PM, 01 Mar 2019
    Здравствуйте. Почему JOIN такой тормозной? Это так и должно быть?
  • https://t.me/clickhouse_ru
    Поищите по чату. На вскидку - конфиг словарей подхватывается без перезагрузки
  • https://t.me/clickhouse_ru
    Нужно больше деталей: какая схема, сколько записей, как джоините, зачем вам это
  • https://t.me/clickhouse_ru
    Ну когда будет КХ 25 лет, список будет в документации и в таблице (settings) будет колонка (dynamic y/n)
    Нельзя изменять настройки (размеры) кешей и настройки megretree
  • @anuriq ↶ Reply to #91021 #91031 03:24 PM, 01 Mar 2019
    а то что там конфиг надо заливать через api? не очень то высокоуровневое решение))
  • https://t.me/clickhouse_ru
    он не тормозной (я думал что в КХ hash join тормозной, потом сравнил с вертикой и понял что нет).
    Ну и есть специальный движок Join, он летает, как и словари.
    По большому счету в OLAP можно использовать только HJ.
  • @anuriq ↶ Reply to #91030 #91033 03:28 PM, 01 Mar 2019
    ясно понятно
  • https://t.me/clickhouse_ru
    @den_crane #91034 03:32 PM, 01 Mar 2019
    Но вообще можно запилить NL и эвристикой на него переключаться (правая отсортирована и записей <10млн., я проверял быстро работает).
  • https://t.me/clickhouse_ru
    @den_crane #91035 03:49 PM, 01 Mar 2019
    create table l1( A Int64 ) Engine=MergeTree order by A;
    insert into l1 select number from numbers(1000000000);
    create table r1( A Int64 ) Engine=MergeTree order by A;
    insert into r1 select -number from numbers(10000000);

    HJ: SELECT r1.* FROM l1 ANY INNER JOIN r1 using A
    Elapsed: 9.800 sec. Processed 1.01 billion rows

    NL: select A from l1 where A in (select A from r1)
    Elapsed: 0.759 sec. Processed 8.19 thousand rows
  • https://t.me/clickhouse_ru
    @den_crane #91036 03:51 PM, 01 Mar 2019
    А хотя, эот неправильно, наверное надо наоборот (миллиард раз сходить в правую, а не миллион в левую)
  • IN тоже использует hash алгоритм, но в данном примере, дополнительно используется ещё и PK.
  • https://t.me/clickhouse_ru
    я понимаю.
    и да я ошибся. HJ быстрее.
    И особо ничего сделать нельзя. Вертика умеет за счет статистики понять что выборка из левой вернет мало строк и построить hash по ней, и это все что можно наоптимизировать на миллиадах. (делает как обычно хреново, хинтую)
  • https://t.me/clickhouse_ru
    @Krashuevina #91039 04:06 PM, 01 Mar 2019
    Коллеги, вопрос.
    Есть таблица secret.t1.
    Есть схема view, для неё юзер view с настройками:
    <view>
    <password></password>
    <profile>view</profile>
    <allow_databases>
    <database>view</database>
    </allow_databases>
    </view>
    Пользователь view - readonly.
    Есть таблица view.t1 ENGINE = Merge(secret, 't1'). В версии 18.6.0 из неё можно читать этим юзером, а в 18.14.15 - нет.
    Вопрос задачи - что делать? Я где-то пропустил настройки какие-то?
  • https://t.me/clickhouse_ru
    За движок таблиц Join -- спасибо, попробую. Иначе придется делать UPDATE, что в случае ClickHouse -- тоже плохо.
  • Стало больше мест, где проверяется доступ к базам данных - проверяется также внутри Merge таблиц?
  • @milovidov_an #91042 04:13 PM, 01 Mar 2019
    Так правильно, потому что иначе пользователю достаточно самому создать View, чтобы получить доступ.
  • https://t.me/clickhouse_ru
    @794087387 #91043 04:13 PM, 01 Mar 2019
    Joined.
  • @milovidov_an #91044 04:13 PM, 01 Mar 2019
    Обходные способы не знаю - можно вместе подумать.
  • https://t.me/clickhouse_ru
    @Krashuevina #91045 04:48 PM, 01 Mar 2019
    А Distributed таблица также проверять ACL будет?
  • Нет, она пойдёт под тем пользователем, который прописан в конфигурации кластера.
  • https://t.me/clickhouse_ru
    @artemhnilov #91047 05:17 PM, 01 Mar 2019
    Кто-нибудь знает, таблица с движком Join хранится в памяти в сжатом виде или нет?
  • @ztlpn #91048 05:20 PM, 01 Mar 2019
    нет
  • https://t.me/clickhouse_ru
    @kostiantynv #91049 05:46 PM, 01 Mar 2019
    Добрый вечер, подскажите пожалуйста как писать данные с nested arrays через JDBC ?
  • https://t.me/clickhouse_ru
    Можно попробовать через RowBinaryStream, передав setObject(i, Collection<Collection>)
  • https://t.me/clickhouse_ru
    @Krashuevina #91051 05:49 PM, 01 Mar 2019
    Но сходу не проверю
  • https://t.me/clickhouse_ru
    у JDBC (java) нет мапинга для вложенных массивов.
    select [[1,1]]
    java.lang.RuntimeException: Parse exception: ByteFragment{[[[1,1]]], start=0, len=7}

    наверное формировать sql как строку в TSV например
  • https://t.me/clickhouse_ru
    @strangeqargo #91053 06:39 PM, 01 Mar 2019
    а есть англогязычный тг-канал кликхауза? я бы туда отправил пару знакомых
  • https://t.me/clickhouse_ru
    @vstepankov #91054 06:40 PM, 01 Mar 2019
    @clickhouse_en
  • https://t.me/clickhouse_ru
    thx!
  • https://t.me/clickhouse_ru
    множественный джойн дает более правильный результат, это как-то странно.
    set join_use_nulls = 1
    select t.a, s.a, y.a,y.b from t left join s on (t.a = s.a and t.b = s.b) left join y on (y.a = s.a);
    ┌─t.a─┬──s.a─┬──y.a─┬──y.b─┐
    │ 1 │ 1 │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │
    │ 2 │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │
    └─────┴──────┴──────┴──────┘

    убираю третью таблицу и null превращается в неправильный 0, и меняется имя поля

    select t.a, s.a from t left join s on (t.a = s.a and t.b = s.b)
    ┌─a─┬─s.a─┐
    │ 1 │ 1 │
    │ 2 │ 0 │
    └───┴─────┘
  • https://t.me/clickhouse_ru
    @chertus #91057 06:51 PM, 01 Mar 2019
    Он подставляет алиас, как в том тикете
  • https://t.me/clickhouse_ru
    @chertus #91058 06:55 PM, 01 Mar 2019
    есть сложности с разруливанием полных имен приходящих из правой и левой части джойна (например джойн сам на себя). множественный джойн решает эту проблему неявно подставляя всем именам (у которых еще нет) алиасы, а потом снимает лишние в выдаче. Поэтому все работает как если бы у колонки был алиас
  • https://t.me/clickhouse_ru
    @den_crane #91059 06:57 PM, 01 Mar 2019
    сами имена полей не особо меня волнуют.
    А вот проблема с 0, в полях по которым джойним это древний баг. Просто забавно что множественный джойн дает более правильный результат
  • https://t.me/clickhouse_ru
    @chertus #91060 06:58 PM, 01 Mar 2019
    его починка в ближайших планах
  • https://t.me/clickhouse_ru
    @stovm #91061 06:58 PM, 01 Mar 2019
    Добрый вечер. Столкнулся со странной проблемой… Делаю ALTER TABLE … ADD COLUMN … получаю:
    Received exception from server (version 18.16.1):
    Code: 341. DB::Exception: Received from ch626308:9000, 10.149.163.72. DB::Exception: Alter is not finished because timeout when waiting for some replicas: ch626308 (replication_alter_columns_timeout = 60). Alter will be done asynchronously..

    0 rows in set. Elapsed: 60.021 sec.
  • https://t.me/clickhouse_ru
    @stovm #91062 06:58 PM, 01 Mar 2019
    При это данных в таблице нет
  • https://t.me/clickhouse_ru
    @stovm #91063 06:58 PM, 01 Mar 2019
    в show processlist нет ничего ни на этом хосте ни на реплике
  • https://t.me/clickhouse_ru
    @stovm #91064 07:06 PM, 01 Mar 2019
    У кого-нибудь есть идеи куда смотреть?
  • https://t.me/clickhouse_ru
    @stovm #91065 07:06 PM, 01 Mar 2019
    Причём асинхронно альтер тоже не делается
  • https://t.me/clickhouse_ru
    @stovm #91066 07:30 PM, 01 Mar 2019
    Может быть такое, что права на создание и удаление таблиц есть, а на модификацию нет?
  • https://t.me/clickhouse_ru
    нет, тогда ошибка была бы точно другой
  • https://t.me/clickhouse_ru
    @den_crane #91068 07:40 PM, 01 Mar 2019
    в смысле сервер ch626308 сам не выполнил alter у себя?
  • https://t.me/clickhouse_ru
    хз, но похоже на то
  • https://t.me/clickhouse_ru
    @salttan ↶ Reply to #91061 #91070 08:15 PM, 01 Mar 2019
    Альтер зарегистрировался, но реплика его не скачала и не выполнила.
    Это фича 18.16.1
    сделайте detach/attach таблице
  • https://t.me/clickhouse_ru
    @stovm ↶ Reply to #91068 #91071 08:16 PM, 01 Mar 2019
    ну альтер вроде реплицируемая операция. не выполнилась нигде
  • https://t.me/clickhouse_ru
    @salttan #91072 08:17 PM, 01 Mar 2019
    все реплики качают и выполняют
    даже те, которые его зарегистрировали
  • https://t.me/clickhouse_ru
    @stovm #91073 08:19 PM, 01 Mar 2019
    После detach/attach появилась колонка сразу
  • https://t.me/clickhouse_ru
    @stovm #91074 08:19 PM, 01 Mar 2019
    Code: 44. DB::Exception: Received from ch626308:9000, 10.149.163.72. DB::Exception: Cannot add column partner_birthday: column with this name already exists.
  • https://t.me/clickhouse_ru
    @stovm #91075 08:19 PM, 01 Mar 2019
    Огонь
  • https://t.me/clickhouse_ru
    @stovm #91076 08:19 PM, 01 Mar 2019
    спасибо
  • https://t.me/clickhouse_ru
    @stovm #91077 08:19 PM, 01 Mar 2019
    А есть ссылка на эту фичу? Почитать)
  • https://t.me/clickhouse_ru
    @sergei_semin #91078 08:20 PM, 01 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
    @salttan ↶ Reply to #91077 #91079 08:22 PM, 01 Mar 2019
    Нет, это не фича, это “фича” 🙂
    Мы все надеемся, что в 19.х.х ее нет
  • https://t.me/clickhouse_ru
    @stovm ↶ Reply to #91079 #91080 08:23 PM, 01 Mar 2019
    Ааааа :)) Спасибо, Татьяна!
  • https://t.me/clickhouse_ru
    @stovm #91081 08:23 PM, 01 Mar 2019
    Пора мне поднимать всё же тестовый кластер и проводить там все тесты необходимые новых версий, прежде чем накатывать в прод что-то)
  • https://t.me/clickhouse_ru
    @stovm #91082 08:24 PM, 01 Mar 2019
    А может есть под рукой ссылка на issue?
  • https://t.me/clickhouse_ru
    @salttan ↶ Reply to #91082 #91083 08:26 PM, 01 Mar 2019
    Было несколько штук про репликацию, которые закрыты уже. Конкретно про alter не знаю
  • https://t.me/clickhouse_ru
    @alexey_laptev #91084 10:47 PM, 01 Mar 2019
    Пытаюсь дамп развернуть

    clickhouse-client --host="localhost" --port="9000" --user="default" --max_threads="1" --query="INSERT INTO db.$table FORMAT Native" < "/home/$table-dump-$today.native"

    Гдето все ок, где то Bad cast, где вообще ни записей ни ошибок

    Както не прозрачно все )
  • https://t.me/clickhouse_ru
    @alexey_laptev #91085 10:49 PM, 01 Mar 2019
    Правда дамп снимается со старой версии и накатывается на новую, как переносить данные - непонятно
  • https://t.me/clickhouse_ru
    @Sersecr001 #91086 11:21 PM, 01 Mar 2019
    Прошу подсказки у знатоков. Есть ли смысл использовать clickhouse для мессенджера? Использовал его для аналитики gps координат - скорость впечатлила.
  • https://t.me/clickhouse_ru
    @vstepankov #91087 11:24 PM, 01 Mar 2019
    что-то где-то в чате проскакивала такая идея, КХ не особо подходит для хранения длинных текстовых строк
  • https://t.me/clickhouse_ru
    @Sersecr001 #91088 11:30 PM, 01 Mar 2019
    Больше интересует хранение аудиозаписей. Данная реализация возможна?
  • https://t.me/clickhouse_ru
    @vstepankov #91089 11:31 PM, 01 Mar 2019
    зачем их хранить в КХ?
    Вы их будете хранить во внешнем хранилище, а в КХ имя файла или ID
  • 02 March 2019 (61 messages)
  • @777073513 #91090 12:05 AM, 02 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
    @ka_ktus #91091 12:33 AM, 02 Mar 2019
    Хранилище файлов на основе КХ с S3 апи? Идея для стартапа.
  • https://t.me/clickhouse_ru
    А что такого? Это тож самое, что хранилище на s3, где мета информация сохраняется в мускуль, только с той разницей, что id файла будет ещё в кх попадать
  • https://t.me/clickhouse_ru
    @ka_ktus #91093 12:39 AM, 02 Mar 2019
    Я имел в виду - файлики в КХ пихать.
  • https://t.me/clickhouse_ru
    А профит-то в чем ? В целом, идея прям плохая.
  • https://t.me/clickhouse_ru
    @stufently #91096 04:17 AM, 02 Mar 2019
    Just for fun
  • Ну нет, тут проще работать с экстентами и в базе хранить inode и sblock, как принято в dfs
  • @DrInferno #91099 10:18 AM, 02 Mar 2019
    Господа, а где-нибудь описана интерпретация планов выполнения запросов CH?
  • https://t.me/clickhouse_ru
    @stufently #91100 10:20 AM, 02 Mar 2019
    Ну ты читаешь в логе что как и куда и интерпретируешь
  • https://t.me/clickhouse_ru
    @stufently #91101 10:21 AM, 02 Mar 2019
    Или вы хотите чтобы читал в логе за вас ии?
  • @571805847 #91102 10:40 AM, 02 Mar 2019
    Joined.
  • @DrInferno #91103 10:43 AM, 02 Mar 2019
    Оценить стоимость сложно
  • https://t.me/clickhouse_ru
    @stufently #91104 10:53 AM, 02 Mar 2019
    Ну если вам сложно то ии тем более он же тупой
  • https://t.me/clickhouse_ru
    @stufently #91105 10:53 AM, 02 Mar 2019
    Если не можете прочитать, просто опытным путем посмотрите
  • @carrolcox #91106 10:57 AM, 02 Mar 2019
    Уважаемые чатовцы, подскажите как быть: если сделать большой дисковый кэш - медленно выполняются инсерты, а если сделать маленький - при SELECT и O_DIRECT часто возникает ошибка доступа к файлу.... сделал средний - теперь и инсерты медленные и ошибка доступа появляется.. где та тонкая грань?
  • https://t.me/clickhouse_ru
    думаете почему почему в названии канала "Не тормозит"?
    Потому что не указано, селекты или вставки не тормозят, так и живём.

    Может у вас с методологией чего не так? Много инсертов мелких?
  • Батчи по 300к строк, 25 колонок раз в 20-30 секунд ... И я знаю почему чат называется именно так
  • https://t.me/clickhouse_ru
    @MaksymHryhoriev #91109 11:19 AM, 02 Mar 2019
    Какой то затык, как преобразовать юникс таймстемп в Date Time. Беру toDateTime(1551523615581) и он делает даты в 2002 году. Раньше писал всегда даты как строки и парсятся они нормально. Решил переделать на числа чтобы места меньше было и какая то фигня
  • https://t.me/clickhouse_ru
    @artemhnilov #91110 11:26 AM, 02 Mar 2019
    у вас timestamp кривой
  • https://t.me/clickhouse_ru
    @artemhnilov #91111 11:27 AM, 02 Mar 2019
    милисекунды лишние
  • https://t.me/clickhouse_ru
    @MaksymHryhoriev #91112 11:28 AM, 02 Mar 2019
    От блин, спасибо
  • @nezed #91113 12:15 PM, 02 Mar 2019
    Столкнулся со странным поведением — преобразование datetime при реплицировании

    - сначала на машинах 1 и 2 была создана реплицируемая таблица (Обычный ReplicatedMergeTree)
    - на машинах 1 и 2 был не установлен timezone (по-умолчанию UTC)
    - после реплицируемая таблица была создана на машине 3 имеющую конфиг timezone: Europe/Moscow

    Проблема: SELECT datetime FROM table на машине 3 у всех строк на 3 часа больше, хотя бинарные данные таблиц одинаковые на всех машинах

    Нашёл два решения:
    1. На машине 3 убрать настройку timezone — SELECT сразу начинает показывать правильную дату
    2. Полностью уничтожить все 3 реплики и узел зукипера.
    На всех 3х машинах поставить timezone: Europe/Moscow
    Заново создать реплицируемые таблицы на всех 3х машинах

    Описаное выше поведение выглядит неправильным, и оба текущих решения не устраивают.
    Теряюсь в догадках в какую ещё сторону посмотреть)
  • https://t.me/clickhouse_ru
    так не должно быть.
    как вы меняете размер кеша? Что вы вообще подразумеваете под этим?
    Какая ошибка, точно (копи пейст)?
    O_dicrect по умолчанию включается на файлах больше 10гб (можно его выключить вообще).
    какая фс?
  • @nezed ↶ Reply to #91113 #91115 12:49 PM, 02 Mar 2019
    Воспроизводится довольно легко
    https://gist.github.com/nezed/78bc357335b970901bb8a98b117704ee
  • https://t.me/clickhouse_ru
    ваш клиент (jdbc?) конвертирует даты в зависимости от таймзоны на сервере. Это можно выключить. Но наверное проще иметь utc на всех репликах.
  • @nezed ↶ Reply to #91116 #91117 12:53 PM, 02 Mar 2019
    http/clickhouse-client/redash
  • https://t.me/clickhouse_ru
    ну да, так работает jdbc драйвер кх. Там в настройках можно сказать что не смотри tz на сервере используй msc.
  • https://t.me/clickhouse_ru
    Там такие же настройки.
  • @nezed #91122 01:03 PM, 02 Mar 2019
    Вот так когда реплики были изначально созданы с одинаковыми timezone
  • https://t.me/clickhouse_ru
    @den_crane #91123 01:04 PM, 02 Mar 2019
    У клиента есть настройка use-server-timezone
  • @nezed #91124 01:04 PM, 02 Mar 2019
    (Чиню скриншот)
    Вот так выгдялит запрос ch-client когда реплики с разными timezone
  • @nezed #91125 01:11 PM, 02 Mar 2019
    На обоих скриншотах для ch3 установлена timezone: Europe/Moscow
    Только в первом случае
    datetime: 00:00:00
    а во втором
    datetime: 03:00:00

    При чтении с одинаковыми настройками клиента и сервера с которого читают
  • https://t.me/clickhouse_ru
    @den_crane #91126 01:17 PM, 02 Mar 2019
    Да, клиенты переводят в свою таймзону из таймзоны сервера. На втором скрине похоже у клиента moscow у сервера utc.
  • @nezed ↶ Reply to #91126 #91127 01:20 PM, 02 Mar 2019
    На скрине две тачки. ch1 действительно UTC - и к нему нет претензий.
    ch3 - Мск, и время поломано.
    На первом скрине ch3 - тоже Мск

    Можете посмотреть как воспроизводится
    https://gist.github.com/nezed/78bc357335b970901bb8a98b117704ee
  • @nezed ↶ Reply to #91125 #91128 01:21 PM, 02 Mar 2019
    На двух скриншотах для машины с ch3 с одной и той же конфигурацией и клиента и сервера разное поведение
  • @nezed #91129 01:23 PM, 02 Mar 2019
    И поведение машины ch3 меняется из-за таймзоны ch1 🤯💥
  • https://t.me/clickhouse_ru
    @valyala ↶ Reply to #91106 #91130 01:47 PM, 02 Mar 2019
    Под большим дисковым кэшем вы понимаете большие значения vm_dirty*? Его размер должен быть согласован со скоростью записи на диск. Чем выше скорость записи, тем больше можно делать кэш "грязных" страниц. Если сделать слишком большой кэш для медленных дисков, то получите периодические задержки на (cache_size_in_bytes/disk_write_speed_bytes_per_second) секунд, когда операционка будет скидывать содержимое кэша на диск. Например, если размер кэша - 10ГБ, а максимальная скорость записи на диск - 100МБ/с, то получаются задержки до 10000/100=100 секунд.

    Что касается ошибок при O_DIRECT, то это выглядит как баг на стороне КХ, который нужно зарепортить и пофиксить
  • Спасибо, сразу видно телепата в действии, да, речь о dirtycache
  • @githubreleases_bot #91132 b o t 01:57 PM, 02 Mar 2019
    yandex/ClickHouse was tagged: v19.3.6-stable
    Link: https://github.com/yandex/ClickHouse/releases/tag/v19.3.6-stable
    Release notes:
    v19.3.6-stable
    yandex/ClickHouse

    ClickHouse is a free analytic DBMS for big data. Contribute to yandex/ClickHouse development by creating an account on GitHub.

  • Про O_DIRECT уже есть тикет на failback фичу: https://github.com/yandex/ClickHouse/issues/4449
    Fallback from O_DIRECT · Issue #4449 · yandex/ClickHouse

    ClickHouse uses O_DIRECT for big merges. It is controlled by min_merge_bytes_to_use_direct_io MergeTree setting and is set by default to 10 GiB. O_DIRECT doesn't work for encrypted filesyst...

  • https://t.me/clickhouse_ru
    @valyala #91134 01:59 PM, 02 Mar 2019
    Предполагаю, что особенность с большими задержками для больших vm_dirty кэшей можно пофиксить на стороне КХ, периодически вызывая fsync во время мержа, если отключен O_DIRECT. Я не смотрел код, так что это только предположение. @milovidov_an .
  • Что за ошибка доступа?
  • Да, у нас в длинном списке есть задача - делать fsync после записи больших кусков, либо асинхронно - при удалении старых, оставшихся после мержа, делать fsync того, что помержено.

    (просто так на каждый кусок не получается, так как много файлов, и от многих вызовов fsync очень плохо)
  • https://t.me/clickhouse_ru
    @valyala #91137 02:42 PM, 02 Mar 2019
    нужно вызывать fsync не на каждый кусок, а на каждые N мегабайт, записанные в output кусок при мерже. Это ограничивает максимальную задержку при сбросе dirty страниц операционкой, т.к. мы сами сбрасываем эти страницы кажде N мегабайт
  • https://t.me/clickhouse_ru
    @MaksymHryhoriev #91138 02:43 PM, 02 Mar 2019
    Никто не сталкивался что при использовании Кафка движка данные в основную mergetree таблицу приходят только когда клиент перестает писать в топик. Пока пишет то новых данных нет, как прекратил то появляются. В топике данные приходят если смотреть Кафка консолью. Думаю как то связано с размером буфера который заполняется но с дефолтными настройками он должен сбрасываться все равно по таймайту который по умолчанию пару секунд.
  • https://t.me/clickhouse_ru
    @nicname ↶ Reply to #91138 #91139 02:50 PM, 02 Mar 2019
    там вроде не работает таймаут по умолчанию
  • https://t.me/clickhouse_ru
    @MaksymHryhoriev #91140 02:51 PM, 02 Mar 2019
    Ого, как то не прикольно.
  • https://t.me/clickhouse_ru
    @MaksymHryhoriev #91141 02:51 PM, 02 Mar 2019
    Попробую тогда буфер уменьшит, а то в PoC данных не особо много.
  • https://t.me/clickhouse_ru
    @valyala ↶ Reply to #91136 #91142 02:54 PM, 02 Mar 2019
    блин, забыл, что в КХ таблице может быть много колонок, и, соответственно, много файлов, которые нужно синкать. В victoriametrics только две колонки, поэтому там периодический fsync при мерже нормально работает. Для КХ такая стратегия может не подойти, но все равно стоит попробовать. Может, не так страшен частый вызов fsync, как его малюют )
  • https://t.me/clickhouse_ru
    @ployd #91143 03:06 PM, 02 Mar 2019
    То есть fsync не использования? При этом DIRECT тоже не всегда?

    Как можно гарантировать, что кх все сбросил на диск?
  • https://t.me/clickhouse_ru
    так не гарантирует. При внезапном ребуте сервера возможна потеря данных, именно поэтому неактивные парты удаляются через 10мин ) , и если нужна страховка надо ждать записи в две реплики https://clickhouse.yandex/docs/en/operations/settings/settings/#settings-insert_quorum
  • https://t.me/clickhouse_ru
    @ployd #91145 03:13 PM, 02 Mar 2019
    Ок. insert_quorum уже используется.
  • https://t.me/clickhouse_ru
    Можно ли как то установить max_insert_block_size на уровне таблицы или это только для всего КХ. Вижу что можно вппофайле указать, но с кафки в мержтрии сам кликхаус делает.
  • https://t.me/clickhouse_ru
    специально для вашей проблемы есть для кафка таблиц настройка

    18.16.0 Для движка таблиц Kafka: проверка наличия подписок перед началом чтения из Kafka; настройка таблицы kafka_max_block_size.
  • https://t.me/clickhouse_ru
    Но его тоже можно на уровне всего КХ устанавливать а не для разных таблиц разное значение ?
  • @nezed ↶ Reply to #91126 #91149 05:33 PM, 02 Mar 2019
    Я был неправ т.к. не понимал что при вставке даты она приводится и хранится в UTC
    Спасибо!
  • https://t.me/clickhouse_ru
    @SpicyCrack3r #91150 10:43 PM, 02 Mar 2019
    Привет, в ReplacingMergeTree если указать несколько ключей то уникальность будет проверяться по всем ним?
  • https://t.me/clickhouse_ru
    @241186216 #91151 11:51 PM, 02 Mar 2019
    Подскажите. Materialuzed vview обновляется на инсерт?
  • Да.
  • В ReplacingMergeTree невозможно указать несколько ключей. Наверное вы имеете ввиду составной ключ - состоящий из нескольких столбцов. В этом случае проверяется равенство одновременно всех указанных столбцов (то есть, равенство кортежей).
  • 03 March 2019 (46 messages)
  • https://t.me/clickhouse_ru
    @vstepankov #91154 12:24 PM, 03 Mar 2019
    Друзья, помню была волна, когда некий бот сканил IP, находил кликхаус и дропал базы, напоминал, так сказать, что не стоит пароли оставлять дефолтные.
    На сервантах доступных из интернета, кроме смены паролей нужно ещё какие-то действия принимать?
  • https://t.me/clickhouse_ru
    @stufently #91155 12:25 PM, 03 Mar 2019
    Закрыть все фаерволом
  • https://t.me/clickhouse_ru
    у меня помимо паролей и файрволла прикрыто ssl-авторизацией на фронте
  • https://t.me/clickhouse_ru
    @stufently #91157 12:29 PM, 03 Mar 2019
    Так там тисипи же
  • https://t.me/clickhouse_ru
    будут коннекты с другого сервера, могу, конечно, всем кроме него запретить.
    И возможно, коннекты с локальной машины, там IP динамический, но думал, что можно например SSH-туннель сделать.

    Доступ по http не нужен, просто портам нули в конфиге указать?
  • https://t.me/clickhouse_ru
    Так по дефолту все запрещено , указывать только те порты что хотите конкретному айпи открыть
  • https://t.me/clickhouse_ru
    tcp у меня вообще для локалки только
  • @githubreleases_bot #91161 b o t 04:07 PM, 03 Mar 2019
    yandex/ClickHouse was tagged: v19.1.10-stable
    Link: https://github.com/yandex/ClickHouse/releases/tag/v19.1.10-stable
    Release notes:
    v19.1.10-stable
    yandex/ClickHouse

    ClickHouse is a free analytic DBMS for big data. Contribute to yandex/ClickHouse development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    @hide100 #91162 04:13 PM, 03 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
    @hide100 #91163 04:29 PM, 03 Mar 2019
    Привет,в докладе на HL за 2017 год и копипасте отсюда, было сказано, при высокочастотной записи по одной записи КХ начинает отставать, потом зависает. На сколько это сейчас актуальная информация? И считаются ли инсерты через http таковыми ?
  • https://t.me/clickhouse_ru
    а какая разница тисипи или хттп
  • https://t.me/clickhouse_ru
    @stufently #91165 04:36 PM, 03 Mar 2019
    вы попробуй прочитать вообще что значит merge tree, ничего там в кх не зависает просто устройство таблицы непозволяет писать по одной записи
  • https://t.me/clickhouse_ru
    @stufently #91166 04:37 PM, 03 Mar 2019
    просто пишите сразу большими блобами
  • https://t.me/clickhouse_ru
    каждый инсерт создает новый парт, парты в бекграунде мержатся в более крупные.
    если мелких инсертов слишком много, мерж процесс не успевает, и парты копятся
    если партов становится 150, КХ паузит инстерт на 1 сек.
    если партов 300, инсерт падает с ошибкой too many parts.

    150, 1 сек, 300 -- это параметры которые настраиваются.

    можно их заменить например на 15000 и 0, 30000 ? Можно, тогда select -ы начнут работать мееееедддддлееенннноо.
  • https://t.me/clickhouse_ru
    @hide100 #91168 05:44 PM, 03 Mar 2019
    Спасибо, если правильно понял, что инсерт нескольких записей будет считаться за 1 инсерт, парт, тогда всё ок)
  • https://t.me/clickhouse_ru
    неправильно
    insert into t values (1);
    insert into t values (2);

    правильно
    insert into t values (1), (2);
  • @777073513 #91170 06:27 PM, 03 Mar 2019
    Joined.
  • бот
  • @terrifilch #91172 06:38 PM, 03 Mar 2019
    вернее 2
  • @700254036 #91173 06:43 PM, 03 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
    @artemhnilov #91174 10:58 PM, 03 Mar 2019
    Привет. Кликхаус перестает отвечать на 8123 порту. Пробовал версии 19.3.5, 19.3.6, 19.1.10. Запускаю через docker. В логах ничего полезного нет. Или я не туда смотрю?
    root@652f42e256bd:/var/log# cat /var/log/clickhouse-server/clickhouse-server.err.log
    2019.03.03 22:24:58.807875 [ 1 ] {} <Error> Application: Listen [::]: 0: DNS error: EAI: -9 If it is an IPv6 or IPv4 address and your host has disabled IPv6 or IPv4, then consider to specify not disabled IPv4 or IPv6 address to listen in <listen_host> element of configuration file. Example for disabled IPv6: <listen_host>0.0.0.0</listen_host> . Example for disabled IPv4: <listen_host>::</listen_host>

    root@652f42e256bd:/var/log# tail -n 5 /var/log/clickhouse-server/clickhouse-server.log
    2019.03.03 22:27:19.014939 [ 30 ] {0ec8aa71-aaaa-44a7-836c-2d45e7f32943} <Debug> MemoryTracker: Peak memory usage (for query): 92.84 MiB.
    2019.03.03 22:27:19.015087 [ 30 ] {} <Information> HTTPHandler: Done processing query
    2019.03.03 22:27:25.956003 [ 28 ] {} <Trace> SystemLog (system.part_log): Flushing system log
    2019.03.03 22:27:25.958148 [ 28 ] {} <Trace> system.part_log (Data): Renaming temporary part tmp_insert_201903_3_3_0 to 201903_3_3_0.
    2019.03.03 22:29:45.692389 [ 22 ] {} <Information> TCPHandler: Done processing connection.
    Как понять, почему ClickHouse виснет?
  • https://t.me/clickhouse_ru
    @artemhnilov #91175 11:07 PM, 03 Mar 2019
    Какая вообще версия стабильная?
  • https://t.me/clickhouse_ru
    docker ps
    показывает что контейнер жив? может КХ сервер упал или убит OOM-м.
  • https://t.me/clickhouse_ru
    @artemhnilov #91177 11:17 PM, 03 Mar 2019
    $ docker ps
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    652f42e256bd yandex/clickhouse-server:19.1.10 "/entrypoint.sh" About an hour ago Up About an hour 0.0.0.0:8123->8123/tcp, 0.0.0.0:9000->9000/tcp, 9009/tcp some-clickhouse-server
  • https://t.me/clickhouse_ru
    @den_crane #91178 11:17 PM, 03 Mar 2019
    curl -vvvv localhost:8123 ?
  • https://t.me/clickhouse_ru
    @artemhnilov #91179 11:17 PM, 03 Mar 2019
    clickhouse-client продолжает работать нормально
  • https://t.me/clickhouse_ru
    @artemhnilov #91180 11:18 PM, 03 Mar 2019
    $ curl localhost:8123 висит и ничего не говорит
  • https://t.me/clickhouse_ru
    @artemhnilov #91181 11:18 PM, 03 Mar 2019
    $ curl -vvvv localhost:8123
    * Rebuilt URL to: localhost:8123/
    * Trying ::1...
    * TCP_NODELAY set
    * Connected to localhost (::1) port 8123 (#0)
    > GET / HTTP/1.1
    > Host: localhost:8123
    > User-Agent: curl/7.54.0
    > Accept: */*
    >
  • https://t.me/clickhouse_ru
    @artemhnilov #91182 11:19 PM, 03 Mar 2019
    в логах внутри контейнера появились записи о том, что куски смержились
  • https://t.me/clickhouse_ru
    @artemhnilov #91183 11:20 PM, 03 Mar 2019
    то есть сломался только HTTP-интерфейс
  • https://t.me/clickhouse_ru
    @den_crane #91184 11:22 PM, 03 Mar 2019
    интересно, а
    curl localhost:9000
  • https://t.me/clickhouse_ru
    @artemhnilov #91185 11:23 PM, 03 Mar 2019
    $ curl localhost:9000 молчит.
  • https://t.me/clickhouse_ru
    @artemhnilov #91186 11:24 PM, 03 Mar 2019
    но вот так работает:
    $ docker run -it --rm --link some-clickhouse-server:clickhouse-server yandex/clickhouse-client:19.1.10 clickhouse-client --host clickhouse-server
    ClickHouse client version 19.1.10.
    Connecting to clickhouse-server:9000.
    Connected to ClickHouse server version 19.1.10 revision 54413.

    652f42e256bd 🙂
  • https://t.me/clickhouse_ru
    @den_crane #91187 11:27 PM, 03 Mar 2019
    а если из контейнера

    docker exec -it 652f42e256bd /bin/bash

    wget -O- localhost:8123
  • https://t.me/clickhouse_ru
    @artemhnilov #91188 11:32 PM, 03 Mar 2019
    Из контейнера работает

    # wget -O- localhost:8123
    --2019-03-03 23:32:16-- http://localhost:8123/
    Resolving localhost (localhost)... 127.0.0.1, ::1
    Connecting to localhost (localhost)|127.0.0.1|:8123... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 4 [text/html]
    Saving to: ‘STDOUT’

    - 0%[ ] 0 --.-KB/s Ok.
    - 100%[==============================================================================================>] 4 --.-KB/s in 0s

    2019-03-03 23:32:16 (21.6 KB/s) - written to stdout [4/4]
  • https://t.me/clickhouse_ru
    @artemhnilov #91189 11:34 PM, 03 Mar 2019
    То есть возвращает Ok.
  • https://t.me/clickhouse_ru
    @den_crane #91190 11:35 PM, 03 Mar 2019
    а что показывает select uptime()
  • https://t.me/clickhouse_ru
    @artemhnilov #91191 11:36 PM, 03 Mar 2019
    652f42e256bd 🙂 select uptime()

    SELECT uptime()

    ┌─uptime()─┐
    │ 4254 │
    └──────────┘

    1 rows in set. Elapsed: 0.004 sec.
  • https://t.me/clickhouse_ru
    @artemhnilov #91192 11:38 PM, 03 Mar 2019
    правду показывает. чуть более часа назад контейнер создал и запустил скрипт миграции данных
  • https://t.me/clickhouse_ru
    @artemhnilov #91193 11:38 PM, 03 Mar 2019
    и он почти сразу упал
  • https://t.me/clickhouse_ru
    @den_crane #91194 11:43 PM, 03 Mar 2019
    что значит упал?
  • https://t.me/clickhouse_ru
    @den_crane #91195 11:43 PM, 03 Mar 2019
    кто?
  • https://t.me/clickhouse_ru
    @artemhnilov #91196 11:44 PM, 03 Mar 2019
    скрипт ошибку выдал [2019-03-04 00:27:21 +0200] [55717] [ERROR] ClickHouse ServerDisconnectedError: None.
  • https://t.me/clickhouse_ru
    @artemhnilov #91197 11:44 PM, 03 Mar 2019
    и после этого localhost:8123 вечно грузится и ничего не возвращает
  • https://t.me/clickhouse_ru
    @den_crane #91198 11:49 PM, 03 Mar 2019
    ну это похоже на проблему докера, а не КХ. Я бы обновил докер например.
    И начал гуглить docker port forward fails after some time
  • https://t.me/clickhouse_ru
    @artemhnilov #91199 11:51 PM, 03 Mar 2019
    возможно, спасибо
  • 04 March 2019 (120 messages)
  • @oleg_kozlyuk #91200 07:07 AM, 04 Mar 2019
    Есть возможность запустить с --net=host? Тогда форвардинг не используется
  • @rtitov #91201 07:57 AM, 04 Mar 2019
    Добрый день! Подскажите пожалуйста, в таблице ClickHouse есть поле DateTime в формате YYYY-MM-DD HH:mm:ss, с помощью функции toYYYYMMDD() берется только дата и по этому новому полю создаются партиции. Это нормально, что каждый день создается более одной партиции? (от 3 до 6). Можно ли как-то задать число партиций в день? Система состоит из 2ух реплик и 2ух шардов, и на каждом сервере создано по Distributed table
  • https://t.me/clickhouse_ru
    @rheinx ↶ Reply to #91201 #91202 08:21 AM, 04 Mar 2019
    Вы куски с партициями не путаете?
  • @Shazo_Rus #91203 08:21 AM, 04 Mar 2019
    Партиция должна быть одна, а вот партов создаэтся на каждый инсерт. Потом они мерджятся.
  • @Shazo_Rus #91204 08:21 AM, 04 Mar 2019
    По некоторым причинам в конце может остаться больше одного парта, к примеру из-за превышения размера парта на мердж.
  • @rtitov #91205 08:26 AM, 04 Mar 2019
    Запрос на выдачу партиций выглядит так
    SELECT partition, table, database FROM system.parts WHERE active AND database = 'logs';
  • @rtitov #91206 08:26 AM, 04 Mar 2019
    так выводит с name
  • https://t.me/clickhouse_ru
    @metikovvadim #91207 08:27 AM, 04 Mar 2019
    parts != partitions
  • @rtitov #91208 08:27 AM, 04 Mar 2019
    то есть в ней содержаться куски партиций? а как тогда посмотреть партиции
  • https://t.me/clickhouse_ru
    @metikovvadim #91209 08:27 AM, 04 Mar 2019
    это именно куски(Parts)
  • https://t.me/clickhouse_ru
    @metikovvadim #91210 08:28 AM, 04 Mar 2019
    сагрегировать, например так:
    SELECT partition,formatReadableSize(size) AS size,rows,days,formatReadableSize(avgDaySize) AS avgDaySize FROM(SELECT table,partition,sum(column_bytes_on_disk) AS size,(sum(rows)) AS rows,min(min_date) AS min_date,max(max_date) AS max_date,max_date - min_date+1 AS days,size / (max_date - min_date +1) AS avgDaySize FROM system.parts_columns WHERE active GROUP BY table,partition ORDER BY rows DESC)
  • @rtitov #91211 08:28 AM, 04 Mar 2019
    запрос сверху брал из оф.документации
  • https://t.me/clickhouse_ru
    @metikovvadim #91212 08:29 AM, 04 Mar 2019
    да, но это куски
  • @rtitov #91213 08:30 AM, 04 Mar 2019
    понял, спасибо большое, будем дальше разбираться
  • https://t.me/clickhouse_ru
    @artemhnilov #91214 08:43 AM, 04 Mar 2019
    Привет. Подскажите, как можно узнать, сколько занимает в памяти и на диске таблица с движком Join?
  • https://t.me/clickhouse_ru
    @jorrygo #91215 09:05 AM, 04 Mar 2019
    Всем привет. Подскажите пожалуйста, как вывести в отдельной колонке номер столбца в выборке?
    Например
    |row number| name |
    1 | Vasya
    2 | Vitya
    3 | Dima
  • https://t.me/clickhouse_ru
    @msg_kurt ↶ Reply to #91215 #91216 09:10 AM, 04 Mar 2019
    rowNumberInAllBlocks ищите
  • https://t.me/clickhouse_ru
    @jorrygo ↶ Reply to #91216 #91217 09:13 AM, 04 Mar 2019
    Да, видел ее. Но как я понял, она возвращает номер строки в блоках данных, по которым осуществлялась выборка, а мне нужен номер строки в итоговой выборке)
    От 1 до колва полученных строк
  • https://t.me/clickhouse_ru
    @msg_kurt ↶ Reply to #91217 #91218 09:16 AM, 04 Mar 2019
    Я тоже так думал сначала. У меня все правильно отработало в итоге
  • https://t.me/clickhouse_ru
    @jorrygo ↶ Reply to #91218 #91219 09:16 AM, 04 Mar 2019
    Хмм. Значит я что-то не так делаю
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @jorrygo #91221 09:17 AM, 04 Mar 2019
    Интересно что именно)
  • https://t.me/clickhouse_ru
    @msg_kurt ↶ Reply to #91221 #91222 09:18 AM, 04 Mar 2019
    а вчем проблема? наверное, в сортировку добавить номер строки еще надо
  • https://t.me/clickhouse_ru
    @pixelbender #91223 09:58 AM, 04 Mar 2019
    Кто знает есть ли какое-либо отличие toUnixTimestamp от toUInt64 от времени?
  • @571805847 #91224 10:12 AM, 04 Mar 2019
    Для toUnixTimestamp 0 = 1970-01-01 00:00:00, а для toUInt64 0 = 0, например такое отличие
  • https://t.me/clickhouse_ru
    @stovm #91225 10:23 AM, 04 Mar 2019
    Всем привет. А кому-нибудь удалось обеспечить приватность данных на кластере?… У меня 15 шардов, в шардах локальные таблицы, поверх натянуты distributed. Хочу изолировать эту всю прелесть от внешнего мира и пускать только конкретных «пользователей» что бы это ни значило. В общем и целом - просто ограничить доступ
  • https://t.me/clickhouse_ru
    @boombick #91226 10:24 AM, 04 Mar 2019
    Коллеги, всем доброго дня. А вакансии в тему постить не возбраняется? Я не HR, ищу человека себе в команду :)
  • https://t.me/clickhouse_ru
    @stufently #91227 10:26 AM, 04 Mar 2019
    Мне кажется это только взбодрит чат
  • https://t.me/clickhouse_ru
    @avkomarov #91228 10:26 AM, 04 Mar 2019
    надо бы админам продумать правила и прописать их в шапке. имхо.
  • https://t.me/clickhouse_ru
    @avkomarov #91229 10:27 AM, 04 Mar 2019
    если постить в этом чате, то в каком виде. или в отдельный чат/канал
  • https://t.me/clickhouse_ru
    @boombick #91230 10:30 AM, 04 Mar 2019
    Окей :) Ну удалят так удалят.
    Компания: https://airpush.com
    Полностью удаленная работа, fulltime.

    Описание вакансии:
    DevOps Data Engineer

    We're looking for a devops engineer to help us maintain and scale our data backend and infrastructure. As an engineer you'll be responsible for caring for and feeding our servers, monitoring them, and scaling the infrastructure as we grow. Like every member of the Airpush team you'll also be involved in making decisions about product development and the user experience.

    You'll be:
    • Taking responsibility for our data layer stability and performance.
    • Working together with BI to optimize analytics queries.
    • Scaling our physical and cloud infrastructure as the product grows.
    • Developing and improving our monitoring and reporting system.
    • Automating everything.
    • Participating in high level design decisions about our platform & product.
    • Working with a team of intelligent developers who are passionate about the platform and ad-tech.

    You have:
    • Hands on experience in some combination of engineering/building systems/test automation.
    • Hands-on experience with server-side development and deployment (Kafka, MySQL, ClickHouse, Redshift, Hazelcast, Zookeeper, etc.).
    • Experience coding in Python, Java or Go (preferred).
    • Experience in managing databases and writing queries in SQL.
    • Strong troubleshooting and debugging skills.
    • Experience with physical servers as well as cloud providers (AWS, Google Cloud, etc.).
    • Experience with configuration management and automation tools.

    What wouldn't hurt:
    • An interest in automating yourself out of a job.
    • An interest in working in a rapidly-growing environment and helping us create a strong dev culture.
  • https://t.me/clickhouse_ru
    @mr_anton_kuznetsov #91231 11:28 AM, 04 Mar 2019
    Ребят, подскажите а есть способ заставить кх перерасчитывать materialized expression
  • Думаю, в КХ единственный способ - контроль на программном уровне. Искал сам долго, но ничего не смог найти. Способа разделить доступ к таблицам пользователям/ролям пока нет.
  • https://t.me/clickhouse_ru
    @MaksymHryhoriev #91233 11:56 AM, 04 Mar 2019
    Всем привет. Подскажите есть ли аналоги tableau но чтобы можно было первое время бесплатно и в докере, нужно для PoC чтобы быстро и легко прикрутить для бизнеса УИ красивый к кликхаус.
  • https://t.me/clickhouse_ru
    По моему в конфигах есть возможность ограничить к "схеме", разве нет?

    <read_user>
    <password></password>
    <profile>web</profile>
    <quota>default</quota>
    <allow_databases>
    <database>test</database>
    </allow_databases>
    </read_user>
  • @571805847 #91235 11:58 AM, 04 Mar 2019
    Но ведь не к конкретной таблице, к сожалению.
  • https://t.me/clickhouse_ru
    Это да. Просто под каждую конкретную задачу, надо своё колесо изобретать. Или на програмном уровне. Если там репликации нету, можно например в однельной схеме создать мат вью и дать доступ только к этому. В теории, сам не пробовал
  • Довольно хлопотно делать разделение доступа средствами КХ. На мой взгляд проще реализовать программно.
  • https://t.me/clickhouse_ru
    Вы его поменяли alter-м ? Или у вас нечистая функция?
    alter update / clear column или использовать alias вместо materialized.
  • https://t.me/clickhouse_ru
    у меня функция расчета вероятности из catboost модели, соотвественно при изменении модели хотелось бы чтобы мат выражение пересчитывалось
  • https://t.me/clickhouse_ru
    @olin32e #91240 12:30 PM, 04 Mar 2019
    Привет!
    Нубский вопрос)
    Что-то не могу найти в доках. Есть ли нативный метод выгрузки данных из pg в кликхаус? Сейчас делаю через промежуточный файлик (copy из pg на диск, а потом через clickhouse-client на диск).
    Каким-нибудь питоном сздавать сессию в pg и в цикле выбирать батчами данные, а потом через либу писать их в ch, мне кажется, не очень удобно и быстро. Мб есть в ch нормальный способ переноса данных?
  • https://t.me/clickhouse_ru
    @mr_anton_kuznetsov #91242 01:25 PM, 04 Mar 2019
    Ребят, а подскажите как работает materialized expression. Я предполагаю что результат функции (expression) при 1 select будет записан на диск и следующие запросы будут выполняться быстрее, т.к берут уже готовые данные с диска
  • https://t.me/clickhouse_ru
    select не меняет файлы.
    materialized expression вычисляется каждый раз если в парте колонка не записана.
    insert и мерж вычисляют materialized expression и записывают в файл.
  • https://t.me/clickhouse_ru
    Я правильно понимаю, что если я добавлю материализованню колонку в таблицу то для всех данных которые в ней были эта коклонка будет перерасчитываться каждый раз а для новых данных браться из памяти?
  • https://t.me/clickhouse_ru
    после добавления колонки (materialized / default) она будет рассчитываться при каждом select для старых данных,
    она будет материализована и записана на диск для новых данных, также она будет материализована и записана на диск при мерже старых данных.
  • https://t.me/clickhouse_ru
    к девопсерам не ходили ? Вакансии и поиск работы: @devops_jobs
  • https://t.me/clickhouse_ru
    @boombick ↶ Reply to #91246 #91247 01:39 PM, 04 Mar 2019
    Там не очень адекватные люди 🙂 мы искали по осени девопса и я туда один раз заглянул с предложением о работе) пожалел очень. Выхлоп ниже среднего, зато долго пришлось разгребать поток кхм.. сообщений
  • https://t.me/clickhouse_ru
    Спасибо
  • https://t.me/clickhouse_ru
    select number%13 n, rowNumberInAllBlocks() from numbers(100) order by n limit 10

    select n, rowNumberInAllBlocks() from (select number%13 n from numbers(100) order by n ) limit 10
  • https://t.me/clickhouse_ru
    create table XXX (d Date) Engine = MergeTree partition by d order by tuple();
    insert into XXX(d) values(yesterday());
    alter table XXX add column a Int64 materialized 6;
    insert into XXX(d) values(today());
    select d,a from XXX;
    optimize table XXX partition yesterday() final;
    alter table XXX modify column a materialized 7;
    select d,a from XXX;
    alter table XXX clear column a in partition yesterday();
    optimize table XXX final;
    select d,a from XXX;
    alter table XXX clear column a in partition today();
    select d,a from XXX;
  • @369517654 #91251 02:20 PM, 04 Mar 2019
    Joined.
  • С вебмордой есть несколько. Попробуйте redash
  • https://t.me/clickhouse_ru
    @stovm #91253 02:26 PM, 04 Mar 2019
    А вообще есть в планах что-то про пользователей/права/разграничение доступов и т.д.? Вдруг просто что-то на подходе, а я не в курсе?
  • https://t.me/clickhouse_ru
    @stovm #91254 02:27 PM, 04 Mar 2019
    Вопрос к администрации скорее 🙂
  • https://t.me/clickhouse_ru
    @Vasyaabr ↶ Reply to #91253 #91255 02:27 PM, 04 Mar 2019
    Есть, но насколько я понимаю - ещё не на подходе.
  • https://t.me/clickhouse_ru
    Спасибо, вот как раз пытаюсь под мак завести это все используя их скрипт для докера
  • https://t.me/clickhouse_ru
    @stovm ↶ Reply to #91255 #91257 02:27 PM, 04 Mar 2019
    Мне бы чуточку больше конкретики
  • https://t.me/clickhouse_ru
    https://clickhouse.yandex/docs/en/roadmap/
    Q3 2019¶ Fine-grained authorization
  • https://t.me/clickhouse_ru
    @stovm #91259 02:30 PM, 04 Mar 2019
    🙂
  • https://t.me/clickhouse_ru
    @stovm #91260 02:30 PM, 04 Mar 2019
    Спасибо)
  • Относительно простое разделение прав (на уровне - список разрешенных баз, можно ли инсерты, можно ли ddl) есть сейчас. В планах (кажется на Q3 2019) есть разработка более гибкой модели, что-то типа ACL если я правильно понимаю
  • https://t.me/clickhouse_ru
    @den_crane #91262 02:39 PM, 04 Mar 2019
    Вообще я осознаю как это сделано в оракле и например в информиксе, и фича на самом деле очень сложна, особенно в плане перфоманса, если нарезать права по колонкам (при создании сессии вычисляются права для каждого объекта и сохраняются в памяти сессии), и все равно есть ручки, типа выключить точную проверку прав для view (для перфоманса. Ну и в оракле и в информиксе у view два типа авторизации возможны на таблицы внутри view -- по создателю / по текущей сессии).
  • @369517654 #91263 02:41 PM, 04 Mar 2019
    Добрый день.

    Смущает поведение ANY LEFT JOIN с аггрегациями. Если в таблице справа от JOIN нет записи, то в поле оказывается значение 0 вместо NULL.

    Пример.
    В первой таблице две записи
    INSERT INTO `users` (`user_id`)
    VALUES ('1'),
    ('2');Во второй таблице одна запись
    INSERT INTO `purchases` (user_id, item_id, price) VALUES ('1', '1', 1);
    Когда происхдит выборка с LEFT JOIN и аггрегацией:
    SELECT `user_id`, `price_sum`
    FROM `users` ANY
    LEFT JOIN (SELECT `user_id`, sum(`price`) AS `price_sum`
    FROM `item_purchased_events`
    GROUP BY `user_id`) USING `user_id`;
    В ответе для второго айди, которому не соответствует ни одна строка в запросе справа, находится значение не NULL, но 0.
    Вот так:
    user_id price_sum
    1 212121
    2 0

    По аналогии с SQL ожидался NULL для значений, которых нет в запросе справа.

    Искал в документации - нашел только про join_use_nulls (https://clickhouse.yandex/docs/en/query_language/select/#null-processing_2),
    но ничего прямо указывающее на подобное. Допускаю, что плохо искал.

    Подскажите, пожалуйста, это ожидаемое поведение? Это где-то документировано?
    Заранее спасибо.
    SELECT Query

    SELECT Query SELECT queries perform data retrieval. By default, the requested data is returned to the client, while in c

  • https://t.me/clickhouse_ru
    @stovm ↶ Reply to #91261 #91264 02:42 PM, 04 Mar 2019
    спасибо. Но, к сожалению, в текущей схеме мы свои задачи никак решить не можем. Будем ждать… А пока закостылим, наверное, как-то со стороны клиентов
  • @ramun25 #91265 02:42 PM, 04 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
    так оно и есть join_use_nulls
    set join_use_nulls = 1;
    ┌─user_id─┬─price_sum─┐
    │ 1 │ 1 │
    │ 2 │ ᴺᵁᴸᴸ │
    └─────────┴───────────┘

    или костыль CAST(sum(price), 'Nullable(Float64)') AS price_sum

    ┌─user_id─┬─price_sum─┐
    │ 1 │ 1 │
    │ 2 │ ᴺᵁᴸᴸ │
    └─────────┴───────────┘

    join_use_nulls неправильно работает для полей по которым джойнится (USING (user_id)), скоро пофиксят (это легко обойти).
  • Большое спасибо. Праивльно ли я понимаю, что в случае, когда join_use_null = 0 поведение, которое я вижу, является корректным и ожидается в дальнейшем? В моем случае это очень удобное поведение.\
  • https://t.me/clickhouse_ru
    если бы от меня зависело (я не разработчик КХ и не имею отношения к Я), то с точки зрения маркетинга я бы конечно поставил set join_use_nulls = 1 по дефолту прямо сейчас.
  • https://t.me/clickhouse_ru
    @den_crane #91269 03:00 PM, 04 Mar 2019
    чем дальше, тем больнее исправлять нестадартное поведение, а таблу и миллиарду других тулов пофиг на КХ.
  • Простите, что вмешиваюсь, но мне кажется проще избавится от NULL значений изначально. Так надежней и проще.
  • https://t.me/clickhouse_ru
    о чем вы? Про конретное приложение или про КХ? КХ вроде двигается к полноценной стандартной ANSI SQL поддержке NULL (год назад null-в в КХ вообще не было, отсюда все костыли -- типа join_use_nulls)
  • Конкретное приложение, использующие КХ нельзя рассматривать отдельно друг от друга. Потому мое предложение касалось обоих. Данные в аналитической СУБД, которой является КХ, лучше вставлять уже без NULL, тем более таблицы с Nullable занимают больше места, чем хотелось бы.
  • https://t.me/clickhouse_ru
    чего? о чем вы? У топикстартера не хранятся null. У него sql запрос возращает неверный результат (с точки зрения ANSI комитета)
  • https://t.me/clickhouse_ru
    @den_crane #91274 03:11 PM, 04 Mar 2019
    Мне глубоко пофиг на SQL и ANSI и на КХ. Но с точки зрения маркетинга для КХ нужно двигаться в сторону стандарта SQL, а не изобретать мили и фаренгейты.
  • Ваша позиция понятна, но относительно КХ нужно просто правильно использовать то, что есть в наличии. СУБД развивается и требовать от нее абсолютного соответствия несколько преждевременно.
  • https://t.me/clickhouse_ru
    @Shegloff #91276 03:13 PM, 04 Mar 2019
    как сделать select * from mysql(..) where day = today(), чтобы в мускуль корректно передалось условие today()?
  • https://t.me/clickhouse_ru
    я ничего не требую, я просто ответил на вопрос изменится-ли текущее поведение (дефолтная настройка join_use_nulls), так вот я думаю -- да, изменится.
  • Mea culpa. Не правильно Вас понял.
  • https://t.me/clickhouse_ru
    @Shegloff ↶ Reply to #91276 #91279 03:43 PM, 04 Mar 2019
    Ответ: создать вьюху в мускуле с нужными условиями
  • Большое спасибо.
  • К сожалению, в случае LEFT JOIN избавиться от нулов не так-то просто. Иногда необходимо отличать отсутствие значения справа от его наличия или нулевого значения.
  • Стоит попробовать тогда отличить null in DateTime & 1970-01-01 00:00:00. Не всегда это однозначно удается.
  • Да. Именно про подобное я и говорю.
  • @Oleg_tg1 #91284 05:14 PM, 04 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
    @CleverAlgernon #91285 06:26 PM, 04 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
    @alexeyst #91286 06:45 PM, 04 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
    @akleandrov #91287 06:55 PM, 04 Mar 2019
    Я видимо не совсем догоняю как argMax устроен, подскажите как его вместе с группировкой использовать?
    Есть таблица timestamp, userid и другие колонки, пытаюсь сгруппировать по пользователю, и через argMax получить по одной последней записи на каждого, но не выходит. Что я делаю не так?
    SELECT
    argMax(StatsDateTime, StatsDateTime) as time
    , User
    FROM db.stats
    GROUP BY StatsDate, StatsDateTime, User
    ORDER BY StatsDateTime DESC
  • Рекомендовал бы группировать по пользователю
  • @571805847 #91289 07:07 PM, 04 Mar 2019
    Правда, не совсем понятна логика..
  • @RomanYx ↶ Reply to #91287 #91290 07:08 PM, 04 Mar 2019
    argMax выберет значение первого параметра при максимальном значении второго параметра. т.е. например у вас пользователь посетил 2 URL (колонка page_url)
    при запросе select user_id, argMax(page_url, timestamp) from ... group by user_id вы получите последнюю посещенную страницу для каждого юзера
  • Мне кажется нужен анализ посещаемости страниц...
  • https://t.me/clickhouse_ru
    Пользователей нет, я подменил сущности для простоты, есть события с показателями по устройствам, и надо определять отклонения показателей за последние 5 минут, по отношению к среднесуточным. И иногда просто последние записи, чтобы показать как "текущие"
  • А можно узнать суть задачи? Возможно есть более простые пути решения. Не претенду, конечно, но не исключаю.
  • https://t.me/clickhouse_ru
    @akleandrov #91294 07:35 PM, 04 Mar 2019
    Так я собственно её описал
  • Вы уписали варинт решения, но не задачу.
  • @571805847 #91296 07:37 PM, 04 Mar 2019
    Попробуйте формализовать ее (задачу) абстрактно.
  • @vladislavadv #91297 08:07 PM, 04 Mar 2019
    Всем привет.

    Выполнили clear column. И похоже так сложилось, что в этот момент, как раз мерджились парты в этой партиции.
    В итоге мердж и clear column висят уже более 5 часов.
    Как быть? Можно ли рестартануть эту реплику?
    kill query не помогает

    Из сервера идет дым, io 100%
  • https://t.me/clickhouse_ru
    @den_crane #91298 08:09 PM, 04 Mar 2019
    detach / attach table ?
  • @vladislavadv #91299 08:12 PM, 04 Mar 2019
    прям весь table? там 5ТБ данных)
  • https://t.me/clickhouse_ru
    @den_crane #91300 08:14 PM, 04 Mar 2019
    https://clickhouse.yandex/docs/ru/query_language/misc/#detach
    Удаляет из сервера информацию о таблице name. Сервер перестаёт знать о существовании таблицы.
    Но ни данные, ни метаданные таблицы не удаляются. При следующем запуске сервера, сервер прочитает метаданные и снова узнает о таблице. Также, "отцепленную" таблицу можно прицепить заново запросом ATTACH (за исключением системных таблиц, для которых метаданные не хранятся).
  • @vladislavadv #91301 08:15 PM, 04 Mar 2019
    А мердж отменится при этом?
  • @vladislavadv #91302 08:16 PM, 04 Mar 2019
    2019.03.04 20:46:54.821853 [ 10 ] {} <Debug> table (ReplicatedMergeTreeQueue): Can't execute command for range 201901_0_533609_999999999 (entry queue-0002125745). There are 1 currently executing entries blocking it: MERGE_PARTS part 20190128_20190131_480513_533569_14,
  • @vladislavadv #91303 08:16 PM, 04 Mar 2019
    вот такая ошибка
  • @vladislavadv #91304 08:18 PM, 04 Mar 2019
    в system.merge есть этот парт elapsed у нее 32562

    у clear column 17724
  • https://t.me/clickhouse_ru
    Определять отклонения текущих показателей от среднесуточных
  • Лучше идти от медианы. Она точнее.
  • https://t.me/clickhouse_ru
    Согласен, вопрос как оптимальнее сделать такой запрос
  • Было бы удобней видеть исходные данные. Если это не противоречит ... сути задачи.
  • @571805847 #91309 08:34 PM, 04 Mar 2019
    Даже не даные видеть, а только логику их обработки.
  • Select deviceid, avg(metric) as daily_average, avgIf( metric, timestamp > now() - INTERVAL 5 MINUTE) as last_five_min_average, last_five_min_average/daily_average from table where timestamp > now() - interval 24 hour group by deviceid

    Замените avg на нужную функцию, если нужно значение в последней точке - используйте argMax вместо avgIf
  • https://t.me/clickhouse_ru
    Благодарю, попробую
  • Похоже на какой-то deadlock. Можете по логам подробно восстановить последовательность событий? Может быть удастся воспроизвести и починить.
  • @vladislavadv #91313 10:42 PM, 04 Mar 2019
    Разобрались. Оказалось, что 9 часов шел merge больших кусков
  • @vladislavadv #91314 10:42 PM, 04 Mar 2019
    когда мердж закончился - clear column прошел
  • @vladislavadv #91315 10:42 PM, 04 Mar 2019
    осталось понять почему merge занял 9 часов
  • @mfilimonov #91316 10:43 PM, 04 Mar 2019
    Да, многовато. А насколько велик кусок? Может быть диск медленный?
  • @vladislavadv #91317 10:45 PM, 04 Mar 2019
    вот как раз разбираемся
  • @vladislavadv #91318 10:45 PM, 04 Mar 2019
    объема там большие. Вполне может быть 1-2ТБ кусок
  • @mfilimonov #91319 11:04 PM, 04 Mar 2019
    подкручено ограничение на макс. размер куска? В принципе 2 тб за 9 часов - это примерно 60мб/сек. Что конечно не является впечатляющим результатом, но и чем-то из ряда вон выходящим это тоже не назову.
  • https://t.me/clickhouse_ru
    @den_crane #91320 11:10 PM, 04 Mar 2019
    я регулярно наблюдаю как на загруженных селектами на 100% hdd куски по 150ГБ мержатся по 20 часов. Тут ничего удивительного нет, если чтобы просто прочитать 512 байт уходит 250мс.
  • 05 March 2019 (170 messages)
  • @238773844 #91321 01:27 AM, 05 Mar 2019
    как лечить? 2019.03.05 01:22:40.535852 [ 6 ] {} <Trace> DB_NAME.TABLE_NAME (StorageReplicatedMergeTree): Executing log entry to mutate part 20180411_20180411_0_0_0_8 to 20180411_20180411_0_0_0_9
    2019.03.05 01:22:40.536493 [ 6 ] {} <Debug> DB_NAME.TABLE_NAME (SelectExecutor): Key condition: unknown
    2019.03.05 01:22:40.536527 [ 6 ] {} <Debug> DB_NAME.TABLE_NAME (SelectExecutor): MinMax index condition: unknown
    2019.03.05 01:22:40.536542 [ 6 ] {} <Debug> DB_NAME.TABLE_NAME (SelectExecutor): Selected 0 parts by date, 0 parts by key, 0 marks to read from 0 ranges
    2019.03.05 01:22:40.536572 [ 6 ] {} <Trace> InterpreterSelectQuery: FetchColumns -> Complete
    2019.03.05 01:22:40.536641 [ 6 ] {} <Trace> Aggregator: Aggregating
    2019.03.05 01:22:40.536669 [ 6 ] {} <Trace> Aggregator: Aggregation method: without_key
    2019.03.05 01:22:40.536697 [ 6 ] {} <Trace> Aggregator: Aggregated. 0 to 1 rows (from 0.000 MiB) in 0.000 sec. (0.000 rows/sec., 0.000 MiB/sec.)
    2019.03.05 01:22:40.536713 [ 6 ] {} <Trace> Aggregator: Merging aggregated data
    2019.03.05 01:22:40.536747 [ 6 ] {} <Trace> virtual DB::MergingAndConvertingBlockInputStream::~MergingAndConvertingBlockInputStream(): Waiting for threads to finish
    2019.03.05 01:22:40.536789 [ 6 ] {} <Trace> DB_NAME.TABLE_NAME (MergerMutator): Part 20180411_20180411_0_0_0_8 doesn't change up to mutation version 9
    2019.03.05 01:22:40.536839 [ 6 ] {} <Debug> DB_NAME.TABLE_NAME (Data): Cloning part /database/clickhouse/data/DB_NAME/TABLE_NAME/20180411_20180411_0_0_0_8/ to /database/clickhouse/data/DB_NAME/TABLE_NAME/tmp_clone_20180411_20180411_0_0_0_9

    2019.03.05 01:21:56.712125 [ 7 ] {} <Error> DB_NAME.TABLE_NAME (StorageReplicatedMergeTree): DB::StorageReplicatedMergeTree::queueTask()::<lambda(DB::StorageReplicatedMergeTree::LogEntryPtr&)>: Code: 107, e.displayText() = DB::Exception: /database/clickhouse/data/DB_NAME/TABLE_NAME/tmp_clone_20181112_20181130_0_16_1_25/duration_ms.bin doesn't exist, e.what() = DB::Exception, Stack trace:

    0. clickhouse-server(StackTrace::StackTrace()+0x16) [0x568fcb6]
    1. clickhouse-server(DB::Exception::Exception(std::string const&, int)+0x1f) [0x29b94cf]
    2. clickhouse-server(DB::MergeTreeDataPartChecksum::checkSize(std::string const&) const+0x86) [0x51c72d6]
    3. clickhouse-server(DB::MergeTreeDataPartChecksums::checkSizes(std::string const&) const+0x51) [0x51c7581]
    4. clickhouse-server(DB::MergeTreeDataPart::checkConsistency(bool)+0x1d4) [0x51bcc24]
    5. clickhouse-server(DB::MergeTreeData::cloneAndLoadDataPart(std::shared_ptr<DB::MergeTreeDataPart const> const&, std::string const&, DB::MergeTreePartInfo const&)+0x47b) [0x519930b]
    6. clickhouse-server(DB::MergeTreeDataMergerMutator::mutatePartToTemporaryPart(DB::MergeTreeDataMergerMutator::FuturePart const&, std::vector<DB::MutationCommand, std::allocator<DB::MutationCommand> > const&, DB::Context const&)+0x651) [0x51b0181]
    7. clickhouse-server(DB::StorageReplicatedMergeTree::tryExecutePartMutation(DB::ReplicatedMergeTreeLogEntry const&)+0x4ab) [0x512d32b]
    8. clickhouse-server(DB::StorageReplicatedMergeTree::executeLogEntry(DB::ReplicatedMergeTreeLogEntry&)+0x89) [0x512e1d9]
    9. clickhouse-server() [0x512eb50]
    10. clickhouse-server(DB::ReplicatedMergeTreeQueue::processEntry(std::function<std::shared_ptr<zkutil::ZooKeeper> ()>, std::shared_ptr<DB::ReplicatedMergeTreeLogEntry>&, std::function<bool (std::shared_ptr<DB::ReplicatedMergeTreeLogEntry>&)>)+0x41) [0x521faa1]
    11. clickhouse-server(DB::StorageReplicatedMergeTree::queueTask()+0x19a) [0x510572a]
    12. clickhouse-server(DB::BackgroundProcessingPool::threadFunction()+0x396) [0x5162456]
    13. clickhouse-server() [0x5d9675f]
    14. /lib64/libpthread.so.0(+0x7e25) [0x7f55003dbe25]
    15. /lib64/libc.so.6(clone+0x6d) [0x7f54ffbff34d] По этой таблице есть активные мутации которые не не могут исполнится. в моей сборке KILL mutation не работает
    KILL MUTATION WHERE database = 'default' AND table = 'table'
    ;

    Expected QUERY
  • https://t.me/clickhouse_ru
    @SpicyCrack3r #91322 01:48 AM, 05 Mar 2019
    Привет, у нового mergetree по дефолту партиционирование отключено?
  • https://t.me/clickhouse_ru
    @Sharmanshik #91323 02:51 AM, 05 Mar 2019
    Мм, господа, а почему у меня может на маке падать коннект через последний ODBC драйвер с 19.3.5 кликом вот так:

    ➜ ~ cat /tmp/clickhouse-odbc.log
    ../driver/handles.cpp:59 SQLAllocHandle handle_type=1 input_handle=0x0
    ../driver/environment.cpp:72
    2019.03.04 18:49:01
    ../driver/environment.cpp:104 === Driver started === VERSION=1.0.0.20190201 UNICODE=1 ODBC_WCHAR=1 sizeof(SQLTCHAR)=4 sizeof(wchar_t)=4 ODBCVER=351 ODBC_LIBRARIES=/usr/local/lib/libodbc.a;/usr/local/lib/libiodbcinst.a;/usr/local/lib/libltdl.a;/usr/local/lib/libiodbcinst.a;/usr/local/lib/libltdl.a ODBC_INCLUDE_DIRECTORIES=/usr/local/include
    ../driver/attr.cpp:15 impl_SQLSetEnvAttr
    ../driver/attr.cpp:19 SetEnvAttr: 200
    ../driver/attr.cpp:39 Set ODBC version to 2
    ../driver/attr.cpp:61 impl_SQLGetEnvAttr
    ../driver/attr.cpp:65 GetEnvAttr: 200
    ../driver/handles.cpp:79 SQLAllocConnect input_handle=0x7fc742d00580
    ../driver/handles.cpp:22 allocConnect environment=0x7fc742d00580 out_connection=0x7fc74382e5c0
    ../driver/escaping/../utils.h:29 Exception: wstring_convert: to_bytes error
    ../driver/odbc.cpp:1362 SQLErrorW
    ../driver/handles.cpp:112 SQLFreeConnect
    ../driver/handles.cpp:107 SQLFreeEnv
    ../driver/environment.cpp:109 ========== ======== Driver stopped =====================

    это что то известное?
  • https://t.me/clickhouse_ru
    @Sharmanshik #91324 02:55 AM, 05 Mar 2019
    Release 2018-10-17 я помню работал без проблем
  • https://t.me/clickhouse_ru
    @Sharmanshik #91325 03:00 AM, 05 Mar 2019
    Error connecting when using odbcw driver version · Issue #156 · yandex/clickhouse-odbc

    Clickhouse version 18.16.1 ODBC driver version: 1.0.0.20190201 (built with unixodbc) OS: mac OS 10.14 (but also can be reproduced on Linux) I've built driver from source, and when I use lib...

  • https://t.me/clickhouse_ru
    @diafour ↶ Reply to #64045 #91326 06:46 AM, 05 Mar 2019
    Добрый день. Нет ли новостей по поводу этой оптимизации? В PR https://github.com/yandex/ClickHouse/pull/3292 комментарий, что «I was hoping this is a building block for #1344 :)», но не понятно, можно ли ускорить выборку последних записей через LIMIT и ORDER BY DESC, кроме как использовать итерацию по временным окнам?
  • https://t.me/clickhouse_ru
    @Sharmanshik #91327 07:06 AM, 05 Mar 2019
    Я прошу прощения что вклиниваюсь, но раз пошло оживление может кто то подскажет? это нормально что на версии 19.3.5 как минимум select table_name.column from table_name на mergetree работает а на distributed дает exception: unknown identifier ?
  • https://t.me/clickhouse_ru
    @Sharmanshik #91328 07:06 AM, 05 Mar 2019
    tableau генерит именно такой квери (
  • На самом деле вопрос нужно адресовать не мне. А Алексею, например. Могу только высказать свое личное мнение: хотя это важная оптимизация, но она довольно "инвазивная", и существуют всякие workaround. Насколько мне известно, сейчас в работе всякие другие фичеры и плюс много работы в связи со стабилизацией последних версий. Поэтому скорее всего в ближайшие недели ждать этого не стоит. А потом - "поживем-увидим". На недостаток тасков программисты КХ не жалуются :)
  • Звучит не очень "нормально". А на предыдущих версиях работало?
  • https://t.me/clickhouse_ru
    @Sharmanshik #91331 07:14 AM, 05 Mar 2019
    я сразу с этой начал, сейчас начну даунгрейд/проверку
  • https://t.me/clickhouse_ru
    @Sharmanshik #91332 07:17 AM, 05 Mar 2019
    вот такой ексепшн:

    localhost 🙂 select count(connection_rate_distributed.is_cracked) from connection_rate_distributed;

    SELECT count(connection_rate_distributed.is_cracked)
    FROM connection_rate_distributed

    Received exception from server (version 19.3.5):
    Code: 47. DB::Exception: Received from localhost:9000, 127.0.0.1. DB::Exception: Received from af-data-clickhouse-04.afdata.internal:9000, 172.31.36.5. DB::Exception: Unknown identifier: connection_rate_distributed.is_cracked, context: query: 'SELECT count(connection_rate_distributed.is_cracked) FROM connections.connection_rate ' required_names: 'connection_rate_distributed.is_cracked' source_tables: 'connections.connection_rate' table_aliases: private_aliases: column_aliases: public_columns: masked_columns: array_join_columns: source_columns: .

    0 rows in set. Elapsed: 0.046 sec.
  • https://t.me/clickhouse_ru
    @Sharmanshik #91333 07:18 AM, 05 Mar 2019
    почему source_tables: 'connections.connection_rate'
  • https://t.me/clickhouse_ru
    @Sharmanshik #91334 07:56 AM, 05 Mar 2019
    в 19.1.10 еще работает
  • https://t.me/clickhouse_ru
    @proller ↶ Reply to #91323 #91335 08:13 AM, 05 Mar 2019
    Нужен не libodbc.a а libiodbc.a. даже если это симлинк
  • https://t.me/clickhouse_ru
    @Sharmanshik #91336 08:20 AM, 05 Mar 2019
    хм, я делал по мануалу отсюда https://github.com/yandex/clickhouse-odbc/blob/master/MACOS.md
  • https://t.me/clickhouse_ru
    @Sharmanshik #91337 08:21 AM, 05 Mar 2019
    хотя какое то время назад я собирал на пробу из мастера, может я руками наделал какие то симлинки
  • https://t.me/clickhouse_ru
    @Sharmanshik #91338 08:21 AM, 05 Mar 2019
    я перепроверю
  • https://t.me/clickhouse_ru
    @Sharmanshik #91339 08:21 AM, 05 Mar 2019
    подтверждено что работает так?
  • https://t.me/clickhouse_ru
    @Sharmanshik #91340 08:22 AM, 05 Mar 2019
    если да я буду рыть почему у меня не работает
  • https://t.me/clickhouse_ru
    @proller ↶ Reply to #91337 #91341 08:23 AM, 05 Mar 2019
    Там не очень корректное определение odbc - iodbc и надо его исправить
  • https://t.me/clickhouse_ru
    @Sharmanshik #91342 08:38 AM, 05 Mar 2019
    ок, я перепроверю и пересоберу
  • https://t.me/clickhouse_ru
    @Sharmanshik #91343 08:38 AM, 05 Mar 2019
    спасибо
  • https://t.me/clickhouse_ru
    @stress_ins #91344 08:59 AM, 05 Mar 2019
    Доброе утро. Подскажите как лучше автоматически накатить схему на клик? Сразу после установки
  • cat schema.sql | clickhouse-client -mn
  • Похоже он пытается передать имя колонки вместе с названием Distributed таблицы в нижележащую.
  • Ну попробуйте ещё на 18.16, "глубже" можно не спускаться.
  • https://t.me/clickhouse_ru
    @Sharmanshik #91348 09:20 AM, 05 Mar 2019
    На 19.1.10 взлетело, мне пока хватит, не хочется совсем глубоко уходить
  • https://t.me/clickhouse_ru
    @Sharmanshik #91349 09:26 AM, 05 Mar 2019
    Надо бы на это issue открыть я думаю?
  • https://t.me/clickhouse_ru
    @sergebezborodov #91350 09:52 AM, 05 Mar 2019
    Коллеги, привествую!
    избитая тема - подскажите как дела с множественными джойнами?
    можно ожидать в ближайшее время или делать по классике с кучей подзапросов?
  • https://t.me/clickhouse_ru
    @MaximStanovov #91351 09:55 AM, 05 Mar 2019
    А чем так сильно подзапросы не нравятся?
  • https://t.me/clickhouse_ru
    @sergebezborodov #91352 09:56 AM, 05 Mar 2019
    у меня пользователь в интерфейсе клацает фильтра и генерируются запросы, и в случае с подзапросами логика уже весьма нетривиальная получается
  • https://t.me/clickhouse_ru
    @diafour ↶ Reply to #91329 #91353 10:58 AM, 05 Mar 2019
    Спасибо, про примерные планы тоже хотелось узнать.
  • См. https://clickhouse.yandex/docs/en/roadmap/ и список открытых пулл-реквестов
  • https://t.me/clickhouse_ru
    имхо 99% готово (тещу в мастере, нашел мелкий бвг).
  • Надо. И описать как повторить ("в лоб" - не воспроизводится, возможно какие-то настройки).
  • https://t.me/clickhouse_ru
    открою
  • @343647023 #91359 12:28 PM, 05 Mar 2019
    Добрый день
    Поймал ошибку too many parts
    Есть ли возможность указать настройки max_insert_block_size и stream_flush_interval_ms отдельно для выбранной таблицы
    Данные читаю из Кафки
  • https://t.me/clickhouse_ru
    да еще совсем забыл спросить, а как там с lowcardinality в последнем релизе дравера? потому что у меня эти колонки просто не выгребает
  • https://t.me/clickhouse_ru
    @proller #91361 12:53 PM, 05 Mar 2019
    Частично закостылено
  • https://t.me/clickhouse_ru
    @proller #91362 12:58 PM, 05 Mar 2019
    LowCardinality temporary fix #157 (#158) · yandex/clickhouse-odbc@b8cb5f5

    ODBC driver for ClickHouse. Contribute to yandex/clickhouse-odbc development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    @proller #91363 01:02 PM, 05 Mar 2019
    и нормальный фикс будет в самом ClickHouse - https://github.com/yandex/ClickHouse/pull/4381
    clickhouse-odbc #157 : Remove LowCardinality from type by proller · Pull Request #4381 · yandex/ClickHouse

    I hereby agree to the terms of the CLA available at: https://yandex.ru/legal/cla/?lang=en For changelog. Remove if this is non-significant change. Category (leave one): Bug Fix Short description ...

  • https://t.me/clickhouse_ru
    @igor_dia #91364 02:28 PM, 05 Mar 2019
    Всем привет. гошный драйвер от mail.ru умеет вместе с chproxy работать?
    У нас такое возникло: http://foo:bar@proxies_chproxy:8123/mydb: can't ping clickhouse
    При этом
    $ curl -X POST -d 'SELECT 1' http://foo:bar@proxies_chproxy:8123/mydb
    "10.0.151.86:49142": unsupported path: "/mydb"
    $ curl -X POST -d 'SELECT 1' http://foo:bar@proxies_chproxy:8123
    1
    $ curl -X POST -d '' http://foo:bar@proxies_chproxy:8123
    Code: 62, e.displayText() = DB::Exception: Empty query
  • https://t.me/clickhouse_ru
    @igor_dia #91365 02:29 PM, 05 Mar 2019
    такое ощущение, что chproxy все оборачивает в POST-запросы, а для работоспособности мейловского драйвера нужны еще и GET-запросы, так как
    if err != nil || len(resp) < 7 || string(resp[4:7]) != "Ok." {
    return driver.ErrBadConn
    }
  • @karpov_anatoly #91366 02:58 PM, 05 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
    @synthcat #91367 02:59 PM, 05 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
    @synthcat #91368 03:02 PM, 05 Mar 2019
    Добрый вечер, с этим что-то можно сделать, или данные безвозвратно потеряны?
    https://pastebin.com/raw/txfQ0TeB
  • @ztlpn ↶ Reply to #91368 #91369 03:18 PM, 05 Mar 2019
    чему равен точный размер Path.mrk и других .mrk файлов?
  • https://t.me/clickhouse_ru
    @synthcat #91370 03:20 PM, 05 Mar 2019
    3535156 у всех
  • @ztlpn #91371 03:21 PM, 05 Mar 2019
    это килобайты, а в байтах?
  • https://t.me/clickhouse_ru
    @synthcat #91372 03:22 PM, 05 Mar 2019
    байты
  • https://t.me/clickhouse_ru
    @synthcat #91373 03:23 PM, 05 Mar 2019
    ошибся, 3619979920 в байтах, то килобайты
  • @ztlpn #91374 03:23 PM, 05 Mar 2019
    Не может быть :) du же показывает 3.4G - должно быть 3619979920
  • @ztlpn #91375 03:23 PM, 05 Mar 2019
    ага, значит с данными всё в порядке
  • @ztlpn #91376 03:24 PM, 05 Mar 2019
    попробуйте сделать SYSTEM DROP MARK CACHE или перезапустить сервер
  • https://t.me/clickhouse_ru
    @synthcat ↶ Reply to #91376 #91378 03:30 PM, 05 Mar 2019
    не помогло
  • https://t.me/clickhouse_ru
    @Sablast #91379 03:40 PM, 05 Mar 2019
    подскажите, на ReplictedMergeTree делаю rename column через:
    ALTER TABLE name ADD COLUMN new_column AFTER old_column DEFAULT old_column
    Как сделать так чтобы все default значения однозначно проставились чтобы можно было удалить старую колонку?
  • optimize table ... final
  • https://t.me/clickhouse_ru
    @Sablast ↶ Reply to #91380 #91381 03:46 PM, 05 Mar 2019
    както так:
    Storage ReplicatedMergeTree doesn't support FINAL.
  • https://t.me/clickhouse_ru
    @Sablast #91382 03:47 PM, 05 Mar 2019
    а вру, это когда селект делал
  • https://t.me/clickhouse_ru
    @Sablast #91383 03:47 PM, 05 Mar 2019
    а когда optimize table - говорит что нет пароля для пользователя default
  • Найти которая реплика является лидером и запустить запрос на ней.
  • @mfilimonov #91385 03:48 PM, 05 Mar 2019
    (увы никак этот баг не хочет фикситься, хотя вроде уже 2 попытки были)
  • https://t.me/clickhouse_ru
    @Sablast ↶ Reply to #91384 #91386 03:49 PM, 05 Mar 2019
    лидер в конфиге прописывается? из select * from system.cluster можно сделать вывод о лидерстве?
  • ага, оттуда. Он не в конфиге, выбирается динамически.
  • https://t.me/clickhouse_ru
    @Sablast ↶ Reply to #91387 #91388 03:50 PM, 05 Mar 2019
    а если таблица лежит на 3 нодах и у каждой ноды есть 1 реплика, то получается надо 3 раза найти лидера и 3 раза сделать optimize?
  • @mfilimonov #91389 03:51 PM, 05 Mar 2019
    select database, table, replica_name from system.replicas where is_leader;
  • @ztlpn ↶ Reply to #91378 #91391 03:52 PM, 05 Mar 2019
    попробуйте ещё понять, повторяется ли проблема на предыдущих версиях сервера (судя по всему, у вас 19.3, попробуйте 19.1 и 18.16)
  • Да. Ну и есть ещё шанс что с ON CLUSTER сработает (но я не уверен).
  • https://t.me/clickhouse_ru
    @synthcat ↶ Reply to #91391 #91393 03:53 PM, 05 Mar 2019
    Да, сейчас 19.3.5 revision 54415.
    попробую откатиться
  • @mAX3773 #91394 03:54 PM, 05 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
  • @mAX3773 #91396 04:13 PM, 05 Mar 2019
    Товарищи, подскажите пожалуйста!
    Хотелось бы понять насколько применим ClickHouse для такой задачи..

    Сервис видеонаблюдения получает данные от камер в виде голых h264 nal (грубо говоря это кадры).
    Для быстрого запроса из базы данных, удобства бекапа и прочих преимуществ хранения в базе перед хранением на диске в виде файлов хотелось бы попробовать использовать ClickHouse.

    Общий поток с камер на сервер около 70-80 Мбайт/с.
    Количество вставок в секунду около 8-10 тысяч.
    Объем данных на вставку колеблется от нескольких байт до нескольких десятков килобайт.
    Общий объем данных в базе около 70Тб.
    Количество индексов в таблице - id камеры, таймстамп, тип нала.

    Запросов на чтение в разы меньше.
    Изменений данных нет вообще, только если удаление или пересоздание таблицы полностью.

    Задача на чтение в основном выбрать кадры для определенного интервала времени по таймстампу.
  • https://t.me/clickhouse_ru
    @jamal_sale #91397 04:13 PM, 05 Mar 2019
    скажите пжл - команда OPTIMIZE TABLE table FINAL DEDUPLICATE; - подхиодит для дедупликации по первичному ключу? Она не задокументирована, а просто кто-то написал на гитхабе
  • https://t.me/clickhouse_ru
    Команда
    OPTIMIZE TABLE table FINAL
    подходит. Чем вам не подходит?
  • https://t.me/clickhouse_ru
    @jamal_sale #91399 04:26 PM, 05 Mar 2019
    1й раз когда запустил - выполнилась, сожрав +3гб от 18гб таблы. Второй запуск - падает с ошибкой DB::Exception: Unknown log entry type: 0
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #91400 04:27 PM, 05 Mar 2019
    Попробуйте по партициям оптимизнуть
    OPTIMIZE TABLE table PARTITION ... FINAL
  • https://t.me/clickhouse_ru
    не применим вообще. КХ будет 70ТБ перекладывать с место на место постоянно.
  • https://t.me/clickhouse_ru
    ок, спс
  • https://t.me/clickhouse_ru
    @leidruid ↶ Reply to #91401 #91403 04:29 PM, 05 Mar 2019
    Чё это? Ну, помержит несколько раз
  • https://t.me/clickhouse_ru
    @leidruid #91404 04:29 PM, 05 Mar 2019
    Но не постоянно же
  • https://t.me/clickhouse_ru
    @Sablast ↶ Reply to #91392 #91405 04:29 PM, 05 Mar 2019
    спасибо буду пробовать
  • https://t.me/clickhouse_ru
    @leidruid #91406 04:29 PM, 05 Mar 2019
    Если поставить максимальный размер куска поменьше, то пару раз может переместит данные
  • https://t.me/clickhouse_ru
    ну да, непстоянно, раз 7 переложит.
  • https://t.me/clickhouse_ru
    @leidruid #91408 04:30 PM, 05 Mar 2019
    КХ так делает с любыми данными
  • https://t.me/clickhouse_ru
    @leidruid #91409 04:30 PM, 05 Mar 2019
    Чем видеофайлы плохи ?
  • @mAX3773 ↶ Reply to #91401 #91410 04:30 PM, 05 Mar 2019
    Не очень понятно почему..
    70Тб это в месяц со всех камер..они и на обычных файлах перезаписываться раз в месяц точно будут
  • https://t.me/clickhouse_ru
    @leidruid #91411 04:31 PM, 05 Mar 2019
    Основной нюанс заключается в том, что клик ну так себе подходит для сжатых данных
  • https://t.me/clickhouse_ru
    @leidruid ↶ Reply to #91410 #91412 04:31 PM, 05 Mar 2019
    Я бы на вашем месте посмотрел в сторону hadoop (hdfs)
  • https://t.me/clickhouse_ru
    @stovm ↶ Reply to #91412 #91413 04:32 PM, 05 Mar 2019
    Это невероятно медленно
  • https://t.me/clickhouse_ru
    @leidruid ↶ Reply to #91413 #91414 04:32 PM, 05 Mar 2019
    медленно для чего ?
  • https://t.me/clickhouse_ru
    @leidruid #91415 04:33 PM, 05 Mar 2019
    Записи там выйдут не медленнее
  • https://t.me/clickhouse_ru
    @stovm #91416 04:33 PM, 05 Mar 2019
    Чтение
  • https://t.me/clickhouse_ru
    @leidruid #91417 04:34 PM, 05 Mar 2019
    Человеку чтение не очень нужно
  • @mAX3773 #91418 04:36 PM, 05 Mar 2019
    Да, чтение для пользователей вообще практически нет, для системы видеоаналитики не больше 1-4 раз прочитать и то если в реальном времени данные обработать не успели..
  • https://t.me/clickhouse_ru
    @leidruid ↶ Reply to #91418 #91419 04:37 PM, 05 Mar 2019
    посмотрите на hadoop, в clickhouse вам не много профита будет
  • @mAX3773 ↶ Reply to #91419 #91420 04:37 PM, 05 Mar 2019
    да, спасибо, уже читаю)
  • https://t.me/clickhouse_ru
    @stovm #91421 04:39 PM, 05 Mar 2019
    В 2Тб (сутки) в hdfs выбрать что-то за конечное время? Не помню такого
  • https://t.me/clickhouse_ru
    @den_crane #91422 04:42 PM, 05 Mar 2019
    т.е. вы рекомендуете хадуп что бы в 2ТБ файле делать навигацию на кусок 2МБ в середине ???? Мир сошел с ума по-моему.
  • https://t.me/clickhouse_ru
    @stovm #91423 04:43 PM, 05 Mar 2019
    Не я не рекомендую, а отговариваю)
  • https://t.me/clickhouse_ru
    @avkomarov #91424 04:44 PM, 05 Mar 2019
    мне кажется скорее кассандра тут пойдет
  • https://t.me/clickhouse_ru
    @den_crane #91425 04:44 PM, 05 Mar 2019
    а я понял, то был сарказм. Моя рекомендация - BoltDB
  • https://t.me/clickhouse_ru
    @Nordskolian #91426 04:45 PM, 05 Mar 2019
    А можно пошутить про MySql ?
  • https://t.me/clickhouse_ru
    @leidruid ↶ Reply to #91422 #91427 04:51 PM, 05 Mar 2019
    погодите, а откуда взялись 2ТБ файлы ?
  • https://t.me/clickhouse_ru
    @leidruid #91428 04:52 PM, 05 Mar 2019
    Там фреймы, их просто очень много
  • https://t.me/clickhouse_ru
    @Volian #91429 04:53 PM, 05 Mar 2019
    Всем привет! Подскажите, пож-ста, насколько адекватно в Clickhouse создавать внешний hashed Dictionary на 3 млн строк и более? Справочник будет содержать только id и одну строковую переменную. Вариант - добавить расшифровку id в основную таблицу новым столбцом рассматривал, но хочу понять жизнеспособность альтернативы. С Click-ом пока знаком только по документации :(
  • @mAX3773 ↶ Reply to #91428 #91430 04:54 PM, 05 Mar 2019
    Да, все врено!
    кадр по 0-60кб, в секунду около 8-10 тысяч их всего
    хранить файлы по 2Тб не надо)
  • https://t.me/clickhouse_ru
    все отлично будет. (ну памяти съест >500МБ и <1GB)
  • https://t.me/clickhouse_ru
    @emakarov ↶ Reply to #91426 #91432 05:01 PM, 05 Mar 2019
    в контексте обсуждения видео, ради интереса посмотрел на чем работает Youtube
    оказалось вот https://github.com/vitessio/vitess
    GitHub - vitessio/vitess: Vitess is a database clustering system for horizontal scaling of MySQL.

    Vitess is a database clustering system for horizontal scaling of MySQL. - GitHub - vitessio/vitess: Vitess is a database clustering system for horizontal scaling of MySQL.

  • https://t.me/clickhouse_ru
    берите https://github.com/boltdb/bolt
    The goal of the project is to provide a simple, fast, and reliable database
  • https://t.me/clickhouse_ru
    @Volian ↶ Reply to #91431 #91434 05:01 PM, 05 Mar 2019
    Понял. Спасибо!
  • https://t.me/clickhouse_ru
    Not bad
  • https://t.me/clickhouse_ru
    @emakarov #91436 05:03 PM, 05 Mar 2019
    YouTube stores all its videos directly on a file system, it uses MySQL to store all the metadata needed to serve each video, such as user preferences, advertising information, country customization and other needed bits of information.
    с просторов кворы
  • https://t.me/clickhouse_ru
    @boombick ↶ Reply to #91432 #91437 05:04 PM, 05 Mar 2019
    не берите витесс, он оч плохо работает) та версия которую использует youtube и та, которая в паблике, очень отличаются друг от друга :) мы пытались его внедрить на протяжении полугода и так и не смогли. Но это было года полтора назад, сейчас может что и изменилось
  • @mAX3773 ↶ Reply to #91433 #91438 05:06 PM, 05 Mar 2019
    Спасибо, почитаю.. Немного работал с ним когда-то
    Смущает что репозиторий в архиве)
  • https://t.me/clickhouse_ru
    я пошутил, вам надо тупо на ф.с. хранить файлы. Вам не нужна база данных (точнее сама ф.с. и будет в каком-то смысле бд.)
  • На самом деле хранение больших и уже хорошо сжатых объектов - не самая сильная сторона кликхаус. Но если выбирать вам нужно всегда относительно большими диапазонами (скажем по несколько минут) то может и сработать, если некоторые настройки подкрутить. Хотя если честно не очень понимаю чем плохи простые и понятные видеофайлы аккуратно разложенные по папкам.
  • @mAX3773 ↶ Reply to #91439 #91441 05:11 PM, 05 Mar 2019
    сейчас так и делаю, но надоело по файлам ползать нужные куски искать читать/писать аккуратно) хочется удобного интерфейса..
    нагрузка не такая страшная вроде бы.. в статьях хвастаются куда большими цифрами)
    на один сервер больше указанной не будет т.к. видеоаналитика на нем же и больше не вытянет)
  • https://t.me/clickhouse_ru
    ну так сами метаданные о файлах храните в любой бд, хоть в sqlite
  • https://t.me/clickhouse_ru
    @vstepankov #91443 05:13 PM, 05 Mar 2019
    Надобность в КХ у вас очень сомнительная.
    Да, мускуль такой объём тяжело будет ворочать, но лить файлы в КХ - нафиг надо.
    Лейте файлы в ФС, в КХ сохраняйте путь.
    Вам именно морда нормальная нужна и КХ там только для ускорения поиска нужных кадров.
    Имхо
  • @mAX3773 ↶ Reply to #91440 #91444 05:13 PM, 05 Mar 2019
    Понятно, спасибо! Выбирать как раз диапазонами поменьше..
    иногда нужно выгрузить час-два допустим, но это редко..
    куда чаще пользователь просто ткнул на перемотку и вот минуту надо выдрать и ему быстро отдать
  • @mAX3773 ↶ Reply to #91442 #91445 05:14 PM, 05 Mar 2019
    так и делаю, в тарантуле храню и бакенд в нем же на lua..
    но думал КХ поможет все сделать проще и удобнее)
  • Кстати - обычно видеокодеки только ключевые кадры пишут целиком, а потом только всякие дельты. Если вы будете каждый кадр отдельно сохранять - то сильно проиграете в сжатии
  • @mAX3773 ↶ Reply to #91443 #91447 05:16 PM, 05 Mar 2019
    тут как раз речь о том чтобы не создавать файлы по несколько минут, а тупо кадры хранить и налету из них собирать все что нужно, mp4, mpeg-dash и тд
  • @mAX3773 ↶ Reply to #91446 #91448 05:17 PM, 05 Mar 2019
    да, я храню h264 NAL в нем может быть I слайс (ключевой кадр - жирный до 50кб) либо P-B слайсы, который как раз меньше.. но для базы это все просто один кадр грубо говоря.. полный или нет уже не важно
  • https://t.me/clickhouse_ru
    так написанное мной не противоречит.
    От хранения файлов целиком в КХ вы ничего не выиграете по сравнению с тем, что если будете хранить файлы в структуре типа
    /Год/Месяц/День/Час/Минута/*
  • @mAX3773 ↶ Reply to #91449 #91450 05:19 PM, 05 Mar 2019
    удаление большого количества файлов очень долгое... возможно какую-то фс надо выбрать для такого, или затюнить что-то
    я сейчас делаю пачки по 10минут, и уже по ним там ползаю когда запрашивают. чтобы минимизировать количество файлов
  • https://t.me/clickhouse_ru
    @vstepankov #91451 05:20 PM, 05 Mar 2019
    10 минут - это у вас 600 000 файлов.
    Если вы их храните в одной директории, то конечно долгое удаление будет
  • Можно попробовать - вдруг заработает :) Я думаю что если использовать партиционирование например по часам (например по 4/6 часов) сортировать данные по id камеры и номеру кадра, снизить index_granularity и выключить сжатие для колонки с видеокадрами - то может даже и будет работать не сильно хуже чем честные файлики, но с SQL интерфейсом :)
  • @mAX3773 ↶ Reply to #91452 #91453 05:26 PM, 05 Mar 2019
    Да, буду тестить! Спасибо за советы
    База все же дает много удобств..
  • https://t.me/clickhouse_ru
    у вас место в ФС ограничено?
  • @mAX3773 ↶ Reply to #91454 #91455 05:29 PM, 05 Mar 2019
    да, место с некоторым запасом могу выделить, но бесконечно писать не могу
  • @mAX3773 #91456 05:30 PM, 05 Mar 2019
    те это отдельный сервер со своими дисками, а не облако
  • Если камер немного - то можно попробовать по id камеры партиционировать.

    Дайте знать потом - получилось ли что-то из этого. Ваш сценарий использования очень далек от нормального для КХ, поэтому любопытно :)
  • https://t.me/clickhouse_ru
    @vstepankov #91458 05:31 PM, 05 Mar 2019
    Я просто всё равно никак не пойму.
    Если хранить путь к кадрам, как я предлагаю, вы так же будете мутации запускать, чтобы выкинуть устаревшее, а потом когда-нибудь удалите свои файлики.
    Будет вам и удобство и КХ не будет напрягаться с футблом партов и прочих своих внутренних штук.
  • https://t.me/clickhouse_ru
    @vstepankov #91459 05:32 PM, 05 Mar 2019
    а потом в удобное время будете дропать файлы
  • @mAX3773 #91460 05:33 PM, 05 Mar 2019
    на этом же сервере видеокарта для видеоаналитики и хранилище.. пока так
    камер немного потому как видеоаналитика много fps дать не может
    баланс между скоростью сети, местом на диске и fps видеоаналитики вот какой-то такой что 100-500 камер на сервер..
  • https://t.me/clickhouse_ru
    @vstepankov #91461 05:34 PM, 05 Mar 2019
    к тому же, вы хотите в КХ писать нон-стоп, как я понимаю, он этого не любит
  • @mfilimonov #91462 05:38 PM, 05 Mar 2019
    Почему я думаю что может получиться - для видео стандартный и наиболее подходящий формат хранения - это видеофайлы, которые представляют собой последовательно записанные друг за другом кадры. Данные в КХ это тоже - просто записанные друг за другом значения. Поэтому такой файл с данными КХ по сути практически ничем не будет отличаться от видеофайлы, с теми же плюсами (удобное последовательное чтение) и минусами (нужно пропускать ненужные блоки). Весь вопрос только в том - как будет справляться с вставками и не будет ли много лишней работы делать при фоновых слияниях.
  • @mAX3773 ↶ Reply to #91458 #91463 05:39 PM, 05 Mar 2019
    ну хранить путь к кадрам уже как бы и не нужно тогда..
    сейчас я точно знаю где искать конкретный момент времени, по таймстампу и id клиента/камеры знаю в какой файл смотреть и в нем уже мелкий индекс + перебор до нужного кадра.. причем могу сделать это даже в mp4 контейнере.. этот файл в плеере даже играется, но при этом в нем есть atom с кастомными пользовательскими данными в которых мелкий индекс лежит уже внутри файла

    просто если бы КХ или что-то еще было хорошим решением, то сразу бы отпали задачи администрирования типа как бекап данных, репликация на другой сервер, перенос данных и тд.. и из любых приложений удобно было бы доступ получать... сейчас не все так просто)
    допиливать свою систему на файлах под эти задачи тоже вроде бы можно, но очень не хочется.. ведь в базах это уже давно есть, отлажено
  • Учтите что вставлять в КХ нужно относительно большими блоками - идеально примерно по 100-200К строк, и что данные в КХ будут несколько раз перекладываться с места на место создавая доп. нагрузку на диск. (Грубо говоря будете вставлять по минуте данных - а он потом из минутых файлов делать бОльшие - на несколько десятков минут - потом на часы и т.п.)
  • https://t.me/clickhouse_ru
    если вы будете в БД, не обязательно кх, хранить путь к файлам, то вполне можно организовать более эффективное хранение, которое будет более оптимизированное для выборок и удалений, нежели просто раскладка по дате.
    Большая вложенность каталогов это тоже зло.
    А так, взяли хеш по дате + камере, разложили практически красивым деревом, всё сбалансировано, всё работает.
    Ручками только фиг удалишь уже.

    Но вообще, как не вспомнить одну прекрасную статью, где написано, что КХ не панацея, не решение ваших проблем, и вообще писался не для вас(с)
  • короче: хотел сделать TRUNCATE этой таблицы. ( В моем случае это ок думал после транкейта все партиции удалятся). После этойго в process list. стали появляться запросы типа SELECT DISTINCT arrayJoin(extractAll(name, '[\\w_]{2,}')) AS res FROM (SELECT name FROM system.functions UNION ALL SELECT name FROM system.table_engines UNION ALL SELECT name FROM system.formats UNION ALL SELECT name FROM system.table_functions UNION ALL SELECT name FROM system.data_type_families UNION ALL SELECT name FROM system.settings UNION ALL SELECT concat(func.name, comb.name) FROM system.functions AS func CROSS JOIN system.aggregate_function_combinators AS comb WHERE is_aggregate UNION ALL SELECT name FROM system.databases LIMIT 10000 UNION ALL SELECT DISTINCT name FROM system.tables LIMIT 10000 UNION ALL SELECT DISTINCT name FROM system.columns LIMIT 10000) WHERE notEmpty(res), KILL query не помогал. Судя по всему после таймаута CH запускал такой же запрос опять. Принял решение рестартить ноду. Рестарт тоже не прошлел гладко. Сервер не мог корректно завершить работу, висело на собщении “Stopped being leader” как раз бля этой таблицы. Сделал KILL -9 Received termination signal (Terminated) и далее при старте CH визимо заигнорил битые партиции. Именно для этой таблицы я готов мириться с потерей даннхых, но вообще беда =( Эта таблица у меня реплицируемая, но в шарде всего одна репоика. Сделал это на будещее (Может в этом причина?)
  • https://t.me/clickhouse_ru
    ничего непонятно, кто на ком стоял.

    >короче: хотел сделать TRUNCATE этой таблицы.
    TRUNCATE-м чинили проблему и проблема возникла из-за TRUNCATE
  • @238773844 #91468 06:20 PM, 05 Mar 2019
    Прочитайте сообщение на которое я ответил, у меня не проходили мутации по таблице
  • @238773844 #91469 06:23 PM, 05 Mar 2019
    Транкейтом я пытался избавиться от первоначальной проблемы
  • @503988208 #91470 06:52 PM, 05 Mar 2019
    Joined.
  • А в чем вопрос? Лечение той проблемы truncate напоминает лечение головной боли топором :) Приведенные запросы делает clickhouse-client при запуске для инициализации автодополнений
  • @238773844 #91472 07:02 PM, 05 Mar 2019
    Д я это понимаю. Эта таблица содердит временные данные которые я готов был потерять. А как лечить первоночальную проблему? Когда мутации не проходят из-за тоно что CH не может найти чать данных в партиции? DB::Exception: /database/clickhouse/data/DB_NAME/TABLE_NAME/tmp_clone_20181112_20181130_0_16_1_25/duration_ms.bin doesn't exist, e.what() = DB::Exception, Stack trace:
  • @238773844 #91473 07:02 PM, 05 Mar 2019
    detach?
  • @238773844 #91474 07:03 PM, 05 Mar 2019
    Я не спрашиваю почему это произошло(хотя тоже интересно), я спрашиваю как лечить
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    т.е. изначально все работало, никаких потерь данных не было, а нужно было отменить мутацию?

    и этот файл был в порядке в исходной таблице 20181112_20181130_0_16_1_25/duration_ms.bin ?
  • @238773844 #91477 07:12 PM, 05 Mar 2019
    Я его не мог найти, но вроде-бы был файл с этой директории с .tmp суффиксом. Нужно было скопировать директорию что-ли =)
  • @238773844 #91478 07:12 PM, 05 Mar 2019
    В след раз буду умнее
  • @238773844 #91479 07:13 PM, 05 Mar 2019
    > т.е. изначально все работало, никаких потерь данных не было, а нужно было отменить мутацию
  • @238773844 #91480 07:14 PM, 05 Mar 2019
    да, делаю DELETE каждый день, это часть ETL. Удаляю данные по location ( Эта таблица очнь маленькая)
  • https://t.me/clickhouse_ru
    какая версия КХ ?

    отменить мутацию для нереплицированной t.me/clickhouse_ru/62084
    для реплицированной в зукипере удалить
  • @238773844 #91482 07:16 PM, 05 Mar 2019
    ClickHouse client version 18.16.1, спасибо
  • @sr_maks1 #91483 07:30 PM, 05 Mar 2019
    Доброго времени суток!
    Подскажите как посмотреть сколько съел тот или иной запрос.
    Например у меня в логе фигурирует
    2019.03.05 16:40:48.270950 [ 1497167 ] {c2a973a7-3310-4a1b-95f4-2acae830a10c} <Debug> MemoryTracker: Peak memory usage (total): 31.15 MiB.
    2019.03.05 16:40:48.270983 [ 1497167 ] {c2a973a7-3310-4a1b-95f4-2acae830a10c} <Debug> MemoryTracker: Peak memory usage (for query): 14.75 MiB.
    как я понимаю в 4 столбце это id запроса. А вот чем отличается total от for query?
  • https://t.me/clickhouse_ru
    Спасибо
  • @bkosun #91485 07:52 PM, 05 Mar 2019
    Joined.
  • @mminaev ↶ Reply to #91483 #91486 08:01 PM, 05 Mar 2019
    Если я все правильно понял то это происходит здесь https://github.com/yandex/ClickHouse/blob/d45b90b530f53444d601d60080d4c76e0db0feac/dbms/src/Interpreters/ProcessList.cpp#L156 Судя из имени класса - total это суммарное максимально потребление памяти всеми запросами а for query для текущего запроса. А 4 параметр возможно идентификтор соединения
    yandex/ClickHouse

    ClickHouse is a free analytic DBMS for big data. Contribute to yandex/ClickHouse development by creating an account on GitHub.

  • @ingrad #91487 10:27 PM, 05 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
    @Sharmanshik #91488 11:06 PM, 05 Mar 2019
    мм господа, а что будет если я сначала вставлю в distributed с каким либо ключом шардирования, а затем буду вставлять в локальные таблицы в каждом шарде в прозвольном порядке, при запросах в dsitributed эти данные будут доступны?
  • https://t.me/clickhouse_ru
    будут доступны, по умолчанию disitributed читает все шарды (см. новый параметр 19.1.6 optimize_skip_unused_shards)
  • https://t.me/clickhouse_ru
    @Sharmanshik #91490 11:10 PM, 05 Mar 2019
    тобишь шард выбирается при инсерте а при селекте читается со всех так?
  • https://t.me/clickhouse_ru
    @Sharmanshik #91491 11:14 PM, 05 Mar 2019
    спасибо
  • https://t.me/clickhouse_ru
    типа того. https://clickhouse.yandex/docs/ru/operations/table_engines/distributed/

    инсерт зависит от ключа шардирования, и кол-ва шардов.
    и select может читать не со всех optimize_skip_unused_shards / skip_unavailable_shards
  • https://t.me/clickhouse_ru
    @Sharmanshik #91493 11:20 PM, 05 Mar 2019
    да пасусь там спасибо, меня интересует как раз default behaviour, если по дефолту читает со всех то отлично
  • 06 March 2019 (190 messages)
  • @746448527 #91494 02:25 AM, 06 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
    @Sharmanshik #91495 02:26 AM, 06 Mar 2019
    не, никак

    lib ll /usr/local/lib/*odbc*
    lrwxr-xr-x 1 i.morokin admin 68B Mar 5 18:15 /usr/local/lib/libclickhouseodbc.dylib -> ../Cellar/clickhouse-odbc/1.0.0.20190201/lib/libclickhouseodbc.dylib
    lrwxr-xr-x 1 i.morokin admin 65B Mar 5 18:15 /usr/local/lib/libclickhouseodbc.so -> ../Cellar/clickhouse-odbc/1.0.0.20190201/lib/libclickhouseodbc.so
    lrwxr-xr-x 1 i.morokin admin 69B Mar 5 18:15 /usr/local/lib/libclickhouseodbcw.dylib -> ../Cellar/clickhouse-odbc/1.0.0.20190201/lib/libclickhouseodbcw.dylib
    lrwxr-xr-x 1 i.morokin admin 66B Mar 5 18:15 /usr/local/lib/libclickhouseodbcw.so -> ../Cellar/clickhouse-odbc/1.0.0.20190201/lib/libclickhouseodbcw.so
    lrwxr-xr-x 1 i.morokin admin 47B Mar 5 18:10 /usr/local/lib/libiodbc.2.dylib -> ../Cellar/libiodbc/3.52.12/lib/libiodbc.2.dylib
    lrwxr-xr-x 1 i.morokin admin 41B Mar 5 18:10 /usr/local/lib/libiodbc.a -> ../Cellar/libiodbc/3.52.12/lib/libiodbc.a
    lrwxr-xr-x 1 i.morokin admin 45B Mar 5 18:10 /usr/local/lib/libiodbc.dylib -> ../Cellar/libiodbc/3.52.12/lib/libiodbc.dylib
    lrwxr-xr-x 1 i.morokin admin 51B Mar 5 18:10 /usr/local/lib/libiodbcinst.2.dylib -> ../Cellar/libiodbc/3.52.12/lib/libiodbcinst.2.dylib
    lrwxr-xr-x 1 i.morokin admin 45B Mar 5 18:10 /usr/local/lib/libiodbcinst.a -> ../Cellar/libiodbc/3.52.12/lib/libiodbcinst.a
    lrwxr-xr-x 1 i.morokin admin 49B Mar 5 18:10 /usr/local/lib/libiodbcinst.dylib -> ../Cellar/libiodbc/3.52.12/lib/libiodbcinst.dylib
    -rwxr-xr-x 1 11862 admin 2.6M Nov 28 20:36 /usr/local/lib/psqlodbcw.so

    ** Trace finished on Tue Mar 05 18:23:58 2019
    ../driver/handles.cpp:59 SQLAllocHandle handle_type=1 input_handle=0x0
    ../driver/environment.cpp:72
    2019.03.05 18:25:09
    ../driver/environment.cpp:104 === Driver started === VERSION=1.0.0.20190201 UNICODE=1 ODBC_WCHAR=1 sizeof(SQLTCHAR)=4 sizeof(wchar_t)=4 ODBCVER=351 ODBC_LIBRARIES=/usr/local/lib/libiodbc.a;/usr/local/lib/libiodbcinst.a;/usr/local/lib/libltdl.a;/usr/local/lib/libiodbcinst.a;/usr/local/lib/libltdl.a ODBC_INCLUDE_DIRECTORIES=/usr/local/include
    ../driver/attr.cpp:15 impl_SQLSetEnvAttr
    ../driver/attr.cpp:19 SetEnvAttr: 200
    ../driver/attr.cpp:39 Set ODBC version to 3
    ../driver/handles.cpp:59 SQLAllocHandle handle_type=2 input_handle=0x7f882958f8f0
    ../driver/handles.cpp:22 allocConnect environment=0x7f882958f8f0 out_connection=0x7f8829583978
    ../driver/attr.cpp:444 SQLSetConnectOptionW
    ../driver/attr.cpp:93 impl_SQLSetConnectAttr
    ../driver/attr.cpp:97 SetConnectAttr: 103 = 0x1e (8)
    ../driver/odbc.cpp:65 SQLDriverConnectW connection_str_in=0x7f882958db20 : -3 connection_str_out=0x7f882a0ac200 : 2048
    ../driver/connection.cpp:141 Parse DSN: key=server value=35.164.55.174
    ../driver/connection.cpp:141 Parse DSN: key=port value=9090
    ../driver/connection.cpp:141 Parse DSN: key=database value=connections
    ../driver/connection.cpp:141 Parse DSN: key=uid value=default
    ../driver/connection.cpp:141 Parse DSN: key=driver value={ClickHouse}
    44793733536 [0x70000a104000] ../driver/escaping/../utils.h:29 Exception: wstring_convert: to_bytes error
    44793733703 [0x70000a104000] ../driver/odbc.cpp:559 impl_SQLGetDiagRec handle_type: 2, record_number: 1, out_message_max_size: 2048
    44793733738 [0x70000a104000] ../driver/odbc.cpp:559 impl_SQLGetDiagRec handle_type: 2, record_number: 2, out_message_max_size: 2048
    44793734157 [0x70000a104000] ../driver/handles.cpp:90 SQLFreeHandle handleType=2 handle=0x7f882958dc70
    44793734175 [0x70000a104000] ../driver/handles.cpp:90 SQLFreeHandle handleType=1 handle=0x7f882958f8f0
    44793734182 [0x70000a104000] ../driver/environment.cpp:109 ========== ======== Driver stopped =====================
  • https://t.me/clickhouse_ru
    @Sharmanshik #91496 02:27 AM, 06 Mar 2019
    последний odbc под мак не взлетает
  • https://t.me/clickhouse_ru
    @portmare #91497 08:11 AM, 06 Mar 2019
    всем привет!

    что-то никак не пойму, почему не могу создать MV типа AggregatingMergeTree никаким образом
    CREATE MATERIALIZED VIEW tst_metrics.`seconds.mva`
    ENGINE = AggregatingMergeTree() PARTITION BY toDate(received_at) ORDER BY (timestamp, resp, company_id,message_center_id) SETTINGS index_granularity = 8192
    AS SELECT
    multiply(intDiv(toUInt32(received_at), 15), 15000) as timestamp,
    resp,
    company_id,
    message_center_id,
    sumState(weight) as weight_sum
    from stage1.adata
    group by timestamp, resp, company_id,message_center_id
    вылезает ошибка
    Code: 47, e.displayText() = DB::Exception: Unknown identifier: received_at, context: required_names: 'received_at' source_tables: table_aliases: private_aliases: column_aliases: public_columns: masked_columns: array_join_columns: source_columns: , e.what() = DB::Exception
    CREATE MATERIALIZED VIEW tst_metrics.`seconds.mva`
    ENGINE = AggregatingMergeTree(toDate(received_at), (timestamp, resp, company_id, message_center_id), 8192)
    AS SELECT
    multiply(intDiv(toUInt32(received_at), 15), 15000) timestamp,
    resp,
    company_id,
    message_center_id,
    sumState(weight) weight_sum
    from stage1.adata
    group by timestamp, resp, company_id, message_center_id
    а тут вылезает ошибка:
    Code: 36, e.displayText() = DB::Exception: Date column name must be an unquoted string

    MergeTree is a family of storage engines.
    в чем подвох? КХ 19.1.6
  • https://t.me/clickhouse_ru
    У вас отдельно SELECT выполняется?
  • https://t.me/clickhouse_ru
    @portmare #91499 08:17 AM, 06 Mar 2019
    нет, не отдельно, а разве нет так описывается MV?
  • https://t.me/clickhouse_ru
    @portmare ↶ Reply to #91498 #91500 08:25 AM, 06 Mar 2019
    блин, я тугодум, да :)
    конечно отдельно SELECT выполняется
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #91501 08:27 AM, 06 Mar 2019
    Странно, заводите issue
  • @ztlpn #91502 08:44 AM, 06 Mar 2019
    так у вас в селекте нет колонки received_at, вот он и ругается
  • https://t.me/clickhouse_ru
    @portmare ↶ Reply to #91502 #91503 08:47 AM, 06 Mar 2019
    действительно прокатило, а как избежать этой колонки, мне надо аггрегировать по 15 секунд, а там каждую секунду приходит по 3к
  • @ztlpn #91504 08:48 AM, 06 Mar 2019
    сделайте ещё колонку toDate(received_at) as received_at_date и партиционируйте прямо по ней
  • @ztlpn #91505 08:49 AM, 06 Mar 2019
    сделайте = добавьте в select
  • https://t.me/clickhouse_ru
    @portmare #91506 08:49 AM, 06 Mar 2019
    спасибо огромное, попробую
  • https://t.me/clickhouse_ru
    @portmare ↶ Reply to #91504 #91507 08:53 AM, 06 Mar 2019
    круто! работает! 👍
  • https://t.me/clickhouse_ru
    @388240071 #91508 09:03 AM, 06 Mar 2019
    Привет всем. Кто то работал в связке кликхаус и спарк? Интересует, как лучше сделать чтение/запись. Кликхаус выступает как data source для спарка
  • @rnknown ↶ Reply to #91508 #91509 09:04 AM, 06 Mar 2019
    Я работаю. Кафка стриминг, кмк, лучший вариант в данном случае
  • https://t.me/clickhouse_ru
    Запись
    Пишем из каждой partition через RowBinary callback. Знаем, сколько строк во всем DataFrame, который собираемся вставлять. После вставки посылаем запросы с select count() where ..., ожидая пока число строк совпадёт с тем, которое вставляли.

    Чтение
    В ThreadPool отправляем запросы на SELECT .... WHERE sharding_condition. Потом над результатами делаем UNION, получая итоговый DataFrame
  • https://t.me/clickhouse_ru
    @portmare #91511 09:39 AM, 06 Mar 2019
    а каскадные MV не работают?
    kafka -> MV -> table -> AggrMV?
  • https://t.me/clickhouse_ru
    @nicname #91512 09:40 AM, 06 Mar 2019
    нет
  • https://t.me/clickhouse_ru
    Через Null-таблицу, но это на свой страх и риск
  • https://t.me/clickhouse_ru
    @portmare ↶ Reply to #91513 #91514 09:43 AM, 06 Mar 2019
    спасибо!
  • https://t.me/clickhouse_ru
    @portmare #91515 09:43 AM, 06 Mar 2019
    а планируется вообще добавить такую фичу?
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #91515 #91516 09:53 AM, 06 Mar 2019
    Каскадные МВ как-то обсуждали, насколько помню решили делать
  • https://t.me/clickhouse_ru
    @portmare ↶ Reply to #91516 #91517 09:54 AM, 06 Mar 2019
    👍
  • @dmitry_shepelev #91518 10:27 AM, 06 Mar 2019
    Коллеги, а можно ли каким-то образом сохранить в clickhouse строку с символами "? Пробовал экранировать её, но всё равно не срабатывает
  • https://t.me/clickhouse_ru
    @leidruid #91519 10:34 AM, 06 Mar 2019
    \\ ?
  • https://t.me/clickhouse_ru
    @vstepankov #91520 11:32 AM, 06 Mar 2019
    Друзья, подскажите, а как сжатие массивов происходит?
    Т.е. как они на диске лежат, каждый элемент в отдельном файле или все строки в одном файле?
  • https://t.me/clickhouse_ru
    @stufently #91521 11:32 AM, 06 Mar 2019
    вся колонка в одном файле
  • https://t.me/clickhouse_ru
    @stufently #91522 11:32 AM, 06 Mar 2019
    хоть массив хоть не массив в ней
  • https://t.me/clickhouse_ru
    @vstepankov #91523 11:33 AM, 06 Mar 2019
    понял.
    Т.е. если массивы фиксированной длины, то лучше по отдельным полям раскидать
  • @ztlpn #91524 11:33 AM, 06 Mar 2019
    массив в два файла - отдельно уложенные значения массивов подряд и отдельно длины этих массивов
  • https://t.me/clickhouse_ru
    спасибо
  • https://t.me/clickhouse_ru
    @igor_dia #91526 11:48 AM, 06 Mar 2019
    А как переделать структуру "2 шарда, 1 реплика" в "1 шард, 2 реплики"? Как мне указать, на каком серваке данные стирать, а с какого брать?
  • https://t.me/clickhouse_ru
    @igor_dia #91527 11:59 AM, 06 Mar 2019
    Достаточно ли исправить конфиг на машинах, которые хочется затереть, перезапустить кликхаус и подождать, пока вторая нода скачает всё с первой? ну и потом исправить конфиг на ноде с данными и тоже перезапустить
  • https://t.me/clickhouse_ru
    @igor_dia #91528 12:00 PM, 06 Mar 2019
    Только оно как-то очень медленно синкается...
  • https://t.me/clickhouse_ru
    @Shegloff ↶ Reply to #91526 #91529 12:07 PM, 06 Mar 2019
    Создать новый кластер в конфиге, без рестарта, создать реплицированные таблицы, INSERT в_новую SELECT из_старой, создать новую Distributed-таблицу указывающую на новый кластер, старый кластер потом просто удалить из конфига
  • https://t.me/clickhouse_ru
    @igor_dia #91530 12:08 PM, 06 Mar 2019
    А если рестартовать можно, то есть процедура проще?
  • https://t.me/clickhouse_ru
    @Shegloff ↶ Reply to #91530 #91531 12:09 PM, 06 Mar 2019
    у вас была одна реплика, значит таблица была нереплицированная, как у вас вторая нода скачает с первой?
  • https://t.me/clickhouse_ru
    @igor_dia #91532 12:10 PM, 06 Mar 2019
    clickhouse-copier не сумеет?
  • https://t.me/clickhouse_ru
    @Shegloff #91533 12:10 PM, 06 Mar 2019
    INSERT SELECT не проще?
  • https://t.me/clickhouse_ru
    @igor_dia #91534 12:11 PM, 06 Mar 2019
    Для этого надо в код разработчиков лезть и смотреть, где что и как создавалось
  • https://t.me/clickhouse_ru
    @noomckalb #91535 12:15 PM, 06 Mar 2019
    Ребят, привет!

    А в докере табикса есть возможность добавить свой sql запрос по умолчанию?

    Заранее спасибо за ответ!
  • https://t.me/clickhouse_ru
    @igor_dia ↶ Reply to #91535 #91536 12:20 PM, 06 Mar 2019
    Там можно сохранять запросы в отдельной вкладке
  • https://t.me/clickhouse_ru
    @igor_dia #91537 12:22 PM, 06 Mar 2019
    Кстати, в копире нашелся баг:
    clickhouse-copier copier --config zookeeper-servers.xml --base-dir /tmp --task-path /replicate_cluster
    Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = Not found: logger
    При этом в хелпе об этом ничего нет.
  • https://t.me/clickhouse_ru
    @IgorRekun #91538 12:28 PM, 06 Mar 2019
    Ребята, есть какие то особые паттерны для хранения в кликхаусе 1 ко многим?
    Для примера есть пост, к нему от 0 до 1М комментариев, постов в свою очередь тоже много. Лить все комменты в одну табличку?
  • https://t.me/clickhouse_ru
    @ployd #91539 12:33 PM, 06 Mar 2019
    Звучит как кейс не для КХ
  • https://t.me/clickhouse_ru
    @umaxfun #91540 12:33 PM, 06 Mar 2019
    можно денормализовать 🙂
  • https://t.me/clickhouse_ru
    @ployd #91541 12:34 PM, 06 Mar 2019
    ну, денормализовать и (post_id, comment_seq_no)
  • https://t.me/clickhouse_ru
    @ployd #91542 12:34 PM, 06 Mar 2019
    но такое
  • https://t.me/clickhouse_ru
    Чем обычная нормализация не подходит? Да, придёться делать join, но в КХ есть способы оптимизовать: движко Join, словари
  • https://t.me/clickhouse_ru
    Такое по скорости будет?
  • https://t.me/clickhouse_ru
    @ployd #91545 12:39 PM, 06 Mar 2019
    Нормальное будет. Тот кортеж — ключ, если что
  • https://t.me/clickhouse_ru
    @IgorRekun #91546 12:42 PM, 06 Mar 2019
    Комменты сажаем с отдельный тейбл и сортируем по ключу последовательности? В кортеж первичного можно будет посадить второй очередью timestamp?
  • @Shalomchick #91547 12:42 PM, 06 Mar 2019
    Посоветуйте целесообразность использования КХ в следующем проекте: Приложением (.NETCore или . NET Framework) будут опрашиваться ежесекундно (1-3 сек.) приборы ADAM и количество параметров будет около 100-150 шт. В клиентском приложении необходимо показывать как текущие мгновенные значения (sic!) так и различные средние за час, день, месяц и др. Может вместо КХ что-то другое посоветуете? Спасибо!
  • https://t.me/clickhouse_ru
    Ответ зависит от того:
    - чем не устраивает текущее решение и пробовали ли использоват mysql/postgre
    - сколько данных
  • Проект пока в стадии концепции. Хотелось бы получить экспириенс с использованием Column-oriented субд...
  • И да. У меня получается вставка данных OLTP, что для КХ не есть хорошо?
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #91551 12:46 PM, 06 Mar 2019
    Попробуйте решить в лоб, с КХ или нет - не так важно. У вас сейчас нет четких требований по данным, потому сложно что-то советовать
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #91552 12:47 PM, 06 Mar 2019
    Что такое "вставка данных OLTP"?
  • https://t.me/clickhouse_ru
    @ployd ↶ Reply to #91546 #91553 12:47 PM, 06 Mar 2019
    Смотря какие запросы нужны. Если цель — забирать комменты по post_id, то достаточно иметь табличку Comment(post_id, timestamp, ....) с order key = (post_id, timestamp)
  • Хотел сказать - частая вставка данных небольшими порциями.
  • https://t.me/clickhouse_ru
    @IgorRekun #91555 12:50 PM, 06 Mar 2019
    Да, запросы это только забирать коменты, их количество и средние по всем постам юзера. Без извращений)
  • https://t.me/clickhouse_ru
    @ployd ↶ Reply to #91555 #91556 12:52 PM, 06 Mar 2019
    А что за "средние по всем постам юзера"?
  • https://t.me/clickhouse_ru
    @IgorRekun #91557 12:52 PM, 06 Mar 2019
    Среднее количество комментов к посту. За все время и аггрегированно по месяцам.
  • https://t.me/clickhouse_ru
    select count(), toYYYYMM(ts) as month WHERE post_id = ? GROUP BY month with totals
  • https://t.me/clickhouse_ru
    @IgorRekun #91559 12:55 PM, 06 Mar 2019
    Да,спасибо. В моей неискушенной голове это примерно так и выглядело. Знакомые хвалили КХ, но сказали что надо майндсет менять чтобы с ним эффективно работать. У меня только с постгресом опыт)
  • https://t.me/clickhouse_ru
    В общем случае вставлять "большими" вставками не проблема. Просто у КХ есть специфика и без особой надобности нет смысла внедрять. А так - велкам
  • Да, пугает то, что в КХ нельзя часто вставлять данные мелкими порциями, например по 50-100 строк, как пройдет 1 цикл опроса приборов.
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #91562 01:05 PM, 06 Mar 2019
    На самом деле можно. Каждая вставка создает парт на диск, что добавляет работу фоновому мерду и усложняет запрос на чтение свежих данных. Если вам прям нужно так часто вставлять - придёться подкручивать настройки фоновых мерджей. Иначе в дальнейшем будет деградация из-за большого кол-ва партов
  • https://t.me/clickhouse_ru
    @ployd #91563 01:07 PM, 06 Mar 2019
    Угу. Нужен агрегатор между КХ и вами.
  • https://t.me/clickhouse_ru
    @ployd #91564 01:07 PM, 06 Mar 2019
    Либо ещё можно не закрывать реквест с INSERT-ом долгое время, пока данные не накопятся, сервер забуферизует
  • https://t.me/clickhouse_ru
    Длинные коннекты я бы не советовал, а вот взять готовый батчер или написать свой - да
  • https://t.me/clickhouse_ru
    @ployd ↶ Reply to #91565 #91566 01:11 PM, 06 Mar 2019
    А что не так с длинными коннектами?
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #91567 01:12 PM, 06 Mar 2019
    А зачем они нужны если как минимум есть готовые батчеры?
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #91568 01:13 PM, 06 Mar 2019
    Например связь моргнёт между вами и ДЦ. И в батчерах есть сброс по таймауту - его руками писать не нужно
  • https://t.me/clickhouse_ru
    @ployd #91569 01:13 PM, 06 Mar 2019
    Затем, чтобы не использовать батчеры. С батчерами проблема, что нет обратной связи.

    У нас перед записью в КХ "транзакционный" накопитель, кторый умеет на диск скидывать, если кх недоступен. Локально убиваются только те данные, по которым 200 вернулся из КХ с кворумной ставкой
  • https://t.me/clickhouse_ru
    @ployd #91570 01:13 PM, 06 Mar 2019
    В этом кейсе батчер понижает надёжность
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #91571 01:15 PM, 06 Mar 2019
    А чем ваш транзакционный накопитель отличается от батчера?
  • https://t.me/clickhouse_ru
    @ployd #91572 01:15 PM, 06 Mar 2019
    Транзакционностью
  • https://t.me/clickhouse_ru
    @ployd #91573 01:16 PM, 06 Mar 2019
    + если батчер за сетью, то надёжностью сети
  • https://t.me/clickhouse_ru
    @akisin #91574 01:26 PM, 06 Mar 2019
    Коллеги,не могу разобраться с ситуацией: есть распределенная таблица, которая смотрит на 3 шарда, данные на каждом шарде разные. Делаем SELECT из распределенной таблицы и каждый раз получаем разный результат(всего есть 2 записи, поочередно возвращается то одна,то две записи).
    select * from table_2
    where guidch = '0387d447-6fd4-4b9a-b226-a54a5b25e7f0'
    В логах чисто, ошибок нет, версия clickhouse 19.1.6, конфиги тоже все перепроверил. Куда копать?
  • https://t.me/clickhouse_ru
    @molo4ko007 #91576 01:52 PM, 06 Mar 2019
    покажите конфиг кластера
  • https://t.me/clickhouse_ru
    @molo4ko007 #91577 01:52 PM, 06 Mar 2019
    и определения таблиц
  • https://t.me/clickhouse_ru
    @akisin ↶ Reply to #91576 #91578 01:57 PM, 06 Mar 2019
    <yandex>
    <remote_servers>
    <logs>
    <shard>
    <weight>1</weight>
    <internal_replication>false</internal_replication>
    <replica>
    <host>kk-clickhouse-db02</host>
    <port>9000</port>
    </replica>
    <replica>
    <host>kk-clickhouse-db03</host>
    <port>9000</port>
    </replica>
    </shard>
    <shard>
    <weight>1</weight>
    <internal_replication>false</internal_replication>
    <replica>
    <host>kk-clickhouse-db04</host>
    <port>9000</port>
    </replica>
    <replica>
    <host>kk-clickhouse-db05</host>
    <port>9000</port>
    </replica>
    </shard>
    <shard>
    <weight>1</weight>
    <internal_replication>false</internal_replication>
    <replica>
    <host>kk-clickhouse-db06</host>
    <port>9000</port>
    </replica>
    <replica>
    <host>kk-clickhouse-db07</host>
    <port>9000</port>
    </replica>
    </shard>
    </logs>
    </remote_servers>
    </yandex>
  • https://t.me/clickhouse_ru
    @molo4ko007 #91579 01:59 PM, 06 Mar 2019
    реплики пересекаются? такое поведение может быть, если distributed-таблица выбирает из шардов 1,2,3 реплики, которые по факту содержат данные < 3 _разных_ шардов
  • https://t.me/clickhouse_ru
    @molo4ko007 #91580 02:00 PM, 06 Mar 2019
    как создана таблица?
  • https://t.me/clickhouse_ru
    @akisin ↶ Reply to #91577 #91581 02:02 PM, 06 Mar 2019
    Таблица в каждом узле кластера

    CREATE TABLE gis.table_2 (
    pguid String,
    podguid String,
    pebpp_id String,
    pname String,
    p_gun_guid String,
    p_gun_pebpp_id String,
    p_gun_name String,
    regcode String,
    regname String,
    regtofk String,
    regtofkcode String,
    ptcode String,
    has_indirect_members Int32,
    aname String,
    aabbreviation String,
    guidch String,
    guidpay String,
    guidinc String,
    guidsrv String,
    bill_id String,
    discount_value Float64,
    reconcile_payments_status Int32,
    reconcile_incomes_status Int32,
    amount Float64,
    amount_pat Float64,
    amount_inc Float64,
    register_date DateTime,
    open_date DateTime,
    close_date DateTime,
    status Int32,
    is_active Int32,
    kbk String,
    type Int32
    ) Engine = ReplicatedMergeTree('/ch/tables/{shard}/table_2', '{replica}')
    PARTITION BY toDate(register_date)
    ORDER BY guidch;

    Распределенная таблица.

    CREATE TABLE gis.table_2 (
    pguid String,
    podguid String,
    pebpp_id String,
    pname String,
    p_gun_guid String,
    p_gun_pebpp_id String,
    p_gun_name String,
    regcode String,
    regname String,
    regtofk String,
    regtofkcode String,
    ptcode String,
    has_indirect_members Int32,
    aname String,
    aabbreviation String,
    guidch String,
    guidpay String,
    guidinc String,
    guidsrv String,
    bill_id String,
    discount_value Float64,
    reconcile_payments_status Int32,
    reconcile_incomes_status Int32,
    amount Float64,
    amount_pat Float64,
    amount_inc Float64,
    register_date DateTime,
    open_date DateTime,
    close_date DateTime,
    status Int32,
    is_active Int32,
    kbk String,
    type Int32
    ) Engine = Distributed(logs, gis, table_2, rand()) ;
  • https://t.me/clickhouse_ru
    @akisin ↶ Reply to #91579 #91582 02:04 PM, 06 Mar 2019
    А как это проверить?
  • https://t.me/clickhouse_ru
    @molo4ko007 #91583 02:07 PM, 06 Mar 2019
    кстати, а как это CREATE TABLE gis.table_2 и там, и там? одна распределенная таблица на отдельном хосте?
  • https://t.me/clickhouse_ru
    @akisin ↶ Reply to #91583 #91584 02:10 PM, 06 Mar 2019
    Да, распределенная таблица на отдельной ноде
  • https://t.me/clickhouse_ru
    @molo4ko007 #91585 02:11 PM, 06 Mar 2019
    а макросы правильно проставлены?
  • https://t.me/clickhouse_ru
    @akisin #91586 02:11 PM, 06 Mar 2019
    да, проверял
  • https://t.me/clickhouse_ru
    @ram00X #91587 02:21 PM, 06 Mar 2019
    Добрый день! Подскажите, пожалуйста, есть запрос:

    SELECT
    SUM(sign) AS divisor,
    if(toUInt8(divisor), SUM(amt * sign) / divisor, toDecimal128(0, 4)) AS result
    FROM tmp

    divisor = 0, amt типа Decimal128(4)

    Получаю ошибку DB::Exception: Division by zero.

    Как обойти?
  • https://t.me/clickhouse_ru
    @Nordskolian #91588 02:22 PM, 06 Mar 2019
    where
    value_with_zero != 0
  • https://t.me/clickhouse_ru
    @Nordskolian #91589 02:23 PM, 06 Mar 2019
    или это так не работает хД ?
  • https://t.me/clickhouse_ru
    @ram00X ↶ Reply to #91588 #91590 02:26 PM, 06 Mar 2019
    агрегат под WHERE?
  • https://t.me/clickhouse_ru
    @Nordskolian #91591 02:27 PM, 06 Mar 2019
    топорно, но если деление идёт после агрегации то можно наверное вынести деление в следующий запрос и там проверить на 0
    или в HAVING проверить
  • https://t.me/clickhouse_ru
    @ochumelec #91592 02:28 PM, 06 Mar 2019
    ребят, а кто-то знает как при таком инсерте заменить одно поле с date на текущую дату? желательно чтобы не перечислять все остальные поля, так как там их овердофига

    INSERT INTO log_database.reports SELECT * FROM default.reports;
  • https://t.me/clickhouse_ru
    @ochumelec #91595 02:30 PM, 06 Mar 2019
    @ztlpn не подскажите?
  • https://t.me/clickhouse_ru
    для этого есть алтер апдейт
  • https://t.me/clickhouse_ru
    @ochumelec #91597 02:32 PM, 06 Mar 2019
    это как?
  • https://t.me/clickhouse_ru
    @ochumelec #91598 02:34 PM, 06 Mar 2019
    суть такая, мне нужно скопировать данные из одной базы в другую, но только у поля date заменить дату на сегодняшнюю
  • https://t.me/clickhouse_ru
    @ochumelec #91599 02:34 PM, 06 Mar 2019
    таблички идентичные
  • @ztlpn #91600 02:35 PM, 06 Mar 2019
    Можно писать одновременно какое-то поле и звёздочку, но тогда колонок больше, чем нужно. А убрать какую-то колонку из звёздочки вроде бы нельзя. Так что наверно всё-таки придётся перечислить все поля.
  • https://t.me/clickhouse_ru
    @igor_dia #91601 02:36 PM, 06 Mar 2019
    А как узнать, к кому старается подключиться КХ? В логах:
    2019.03.06 14:34:51.698318 [ 45 ] {} <Error> ServerErrorHandler: Poco::Exception. Code: 1000, e.code() = 104, e.displayText() = Connection reset by peer
    2019.03.06 14:34:52.080308 [ 46 ] {} <Error> ServerErrorHandler: Poco::Exception. Code: 1000, e.code() = 104, e.displayText() = Connection reset by peer
    2019.03.06 14:35:17.058880 [ 47 ] {} <Error> ServerErrorHandler: Poco::Exception. Code: 1000, e.code() = 104, e.displayText() = Connection reset by peer
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    ALTER TABLE [db.]table UPDATE column1 = expr1 [, ...] WHERE filter_expr
    там будет вот про такую конструкцию
  • https://t.me/clickhouse_ru
    @ram00X ↶ Reply to #91591 #91605 02:39 PM, 06 Mar 2019
    не ну через отдельный запрос не интересно, мне интересно почему он пытается расчитать выражение не подходящее под условие
  • https://t.me/clickhouse_ru
    Мне нужно до вставки заменить
  • @ztlpn ↶ Reply to #91605 #91607 02:40 PM, 06 Mar 2019
    ClickHouse не умеет short-circuit условных выражений. То есть для if сначала вычисляются левая и правая ветки для всех строк, а потом склеиваются в зависимости от значения условия. Так проще и в большинстве случаев быстрее.
  • https://t.me/clickhouse_ru
    @ram00X ↶ Reply to #91607 #91608 02:41 PM, 06 Mar 2019
    т.е. единственный выход только через подзапрос?
  • @ztlpn #91609 02:43 PM, 06 Mar 2019
    кривовато, но можно сделать, чтобы там, где divisor=0, он был бы равен например 1 :)
  • https://t.me/clickhouse_ru
    > Изменение столбцов, которые используются при вычислении первичного ключа или ключа партиционирования, не поддерживается.
  • https://t.me/clickhouse_ru
    раскрывайте звёздочку
  • https://t.me/clickhouse_ru
    @ram00X ↶ Reply to #91609 #91612 02:43 PM, 06 Mar 2019
    =)))
  • https://t.me/clickhouse_ru
    тогда если человеку лень могу предложить ему
    сделать alter add и добавить колонку с дефолт датой нужной
  • @kinzarra #91614 02:44 PM, 06 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
  • @kinzarra #91616 02:44 PM, 06 Mar 2019
    Всем привет!
  • https://t.me/clickhouse_ru
    Таблиц много. Полей ещё больше, не Охота
  • @kinzarra #91618 02:44 PM, 06 Mar 2019
    Ребята, не заводится стандартный Tabix
  • @kinzarra #91619 02:44 PM, 06 Mar 2019
    Include not found: networks
    Пишет в статусе
  • https://t.me/clickhouse_ru
    поручите это какому-нибудь скрипту
  • @kinzarra #91621 02:45 PM, 06 Mar 2019
    Include not found: clickhouse_compression
  • https://t.me/clickhouse_ru
    вытащи из схемы таблицы все поля и регулярками в питоне или тырнетах или в саблайме подгони в инсерт, должно быть не трудно =)
    ну и потом ручками одно поле заменить на нужную дату
  • https://t.me/clickhouse_ru
    SELECT
    if(toUInt8(2),1/1,1/0) as text
    подобный запрос выполняется, но для 0 он возвращает inf возможно нужно просто этот момент обработать ?
  • @ztlpn #91624 02:52 PM, 06 Mar 2019
    в этом запросе float а не decimal
  • @kinzarra #91625 02:52 PM, 06 Mar 2019
    ребят, как завести clickhouse
  • @kinzarra #91626 02:53 PM, 06 Mar 2019
    никак не получается
  • https://t.me/clickhouse_ru
    @akisin ↶ Reply to #91574 #91627 02:55 PM, 06 Mar 2019
    Нашли проблему, данные на нодах разные, отсюда и разные результаты.
  • @kinzarra #91628 03:04 PM, 06 Mar 2019
    Include not found: clickhouse_remote_servers
  • @kinzarra #91629 03:04 PM, 06 Mar 2019
    Что за ошибка?
  • @kinzarra #91630 03:04 PM, 06 Mar 2019
    кто знает?
  • Не настроены clickhouse_remote_servers, нет xml файла. Если нет репликации можно закоментировать
  • @kinzarra ↶ Reply to #91631 #91633 03:38 PM, 06 Mar 2019
    спасибо разобрался))
  • @582983487 #91634 03:43 PM, 06 Mar 2019
    доброго времени дня,
    загружаем в distributed ReplicatedMergeTree таблицу несколько сот файлов через cat file_XXX.tsv | clickhouse-client --query="INSERT INTO tmp.table FORMAT TSV" параллельно в несколько десятков потоков и получаем дубликаты, добавили в таблицу поле с именем файла и партиционировали по нему, видно что первые несколько десятков файлов загружаются нормально, а потом начинают появляться дубликаты, и концу - в почти во всех партициях есть дубли
    никто с таким не сталкивался - как с этим бороться
  • https://t.me/clickhouse_ru
    @jamal_sale #91635 03:50 PM, 06 Mar 2019
    добрый вечер. А подскажите пжл какой нибудь эффекивный способ удалить дубли, может готовыми командами КХ? очевидный вариант создать новую таблу без дублей, затем перелить, удалив - не оч красивое решение.
  • https://t.me/clickhouse_ru
    @jamal_sale #91636 03:51 PM, 06 Mar 2019
    OPTIMIZE TABLE FINAL DEDUPLICATE; - не дает нужного результата
  • https://t.me/clickhouse_ru
    что вы делаете при ошибке в 'cat file_XXX.tsv | clickhouse-client --query=' ? повторяете? в КХ нет транзакций и атомарности.
    distributed ReplicatedMergeTree -- у вас один шард и одна реплика?
    партиционировали по нему -- что это значит? partition by filename ?
  • https://t.me/clickhouse_ru
    alter delete ?

    >OPTIMIZE TABLE FINAL DEDUPLICATE; - не дает нужного результата
    один шард? размер парта? таблица replacing ?
  • Оптимизация даст результат только конкретной таблицы и конкретной ноды. Если tbl - таблица на ноде, а tbls - дистрибуция, то оптимизировать нужно на каждой ноде конкретную таблицу, т.е. tbl.
  • нет - не повторяем, кластер - 4 машины, 2 шарды, 2 реплики, да partition by filename - чтобы можно было детачить и удалять в случае неуспеха
  • https://t.me/clickhouse_ru
    так и делаю. То есть для каждой локальной таблы, но ничего не меняется.
  • И ошибок нет, а у вас лог в режиме трейса?
  • https://t.me/clickhouse_ru
    так дубликаты у вас есть внутри 1-го шарда?
  • https://t.me/clickhouse_ru
    вообще ничего. Очень странная команда
  • https://t.me/clickhouse_ru
    @jamal_sale #91645 03:58 PM, 06 Mar 2019
    OPTIMIZE TABLE t_local PARTITION 2019-03-05 FINAL DEDUPLICATE;

    OPTIMIZE TABLE t_local PARTITION (2019 - 3) - 5 FINAL DEDUPLICATE

    Ok.

    0 rows in set. Elapsed: 0.009 sec.
  • https://t.me/clickhouse_ru
    @jamal_sale #91646 03:58 PM, 06 Mar 2019
    и 0 эффекта
  • https://t.me/clickhouse_ru
    имя партиции смотрите в system.parts оно либо 20190305 либо '2019-03-05' либо 201903
  • https://t.me/clickhouse_ru
    да, верно. спс. но результат тот же, увы
  • https://t.me/clickhouse_ru
    @jamal_sale #91649 04:03 PM, 06 Mar 2019
    OPTIMIZE TABLE t_local PARTITION 20190305 FINAL DEDUPLICATE

    Ok.

    0 rows in set. Elapsed: 0.049 sec.
  • https://t.me/clickhouse_ru
    все это странно, я бы поискал ошибку у себя в коде, залогировав cat file_XXX.tsv | clickhouse-client --query
    потом попробовал лить прямо в ReplicatedMergeTree на одном шарде, возможно ошибка в описании кластера, но тяжело понять как так ошибится, чтобы дубликаты появлялись не сразу.
  • https://t.me/clickhouse_ru
    вопрос снят. Спасибо @BlackMerlinKR Как озказалось не работает для обычных mergeTree
  • спасибо - будем экспериментировать - кстати удачно в соседнем сообщении увидел слово DEDUPLICATE - выполнил с ним OPTIMIZE - как минимум дубли получается убрать - плохо что этого в документации нет
    да - запросы логировали - в них в written_rows совпадает с кол-вом строк в файле, хотя счас нашел несколько дублированных инсертов
  • https://t.me/clickhouse_ru
    @hachhll #91653 04:37 PM, 06 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
    @hide100 #91654 04:43 PM, 06 Mar 2019
    Нельзя же для параметра движка использовать DateTime, как нибудь так MergeTree(toDate(dateTime_colum),(ID,toDate(dateTime_colum)),8192) ?
  • https://t.me/clickhouse_ru
    формально это вообще не про дубли.

    есть движок replacingmergetree , в нем есть понятие версии, новая версия записи в нем перетирает старую.
    почитайте, и потренируйтесь [ select from table ] vs [ select from table final ]

    OPTIMIZE TABLE FINAL вызывает процесс слияния который оставляет последнуюю версию (кроме случаев [длинный список] )

    DEDUPLICATE-устаревшая фигня которая вообще ни на что не влияет.
  • https://t.me/clickhouse_ru
    в новом синтаксисе
    create table aaaa (поля)
    partition by toYYYYMMDD(some_datetime_column)

    для месячных партиций (по старому)
    partition by toYYYYMM(some_datetime_column)
  • https://t.me/clickhouse_ru
    @hide100 #91657 04:51 PM, 06 Mar 2019
    Спасибо.А он же этот столбец всё равно создаст явно или не явно, то есть лучше новый столбец завести?
  • https://t.me/clickhouse_ru
    никто ничего не создаст, откуда такие фантазии?

    where dateTime_colum >= будет исключать партиции из-за максимального и минимального значений (атрибутов партиции) поля dateTime_colum (по которому партиционировано)
    индекс (order by) будет работать из-за монотонности? toYYYYMM(some_datetime_column) -> some_datetime_column
  • @681399095 #91659 04:55 PM, 06 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
    @hide100 #91660 05:00 PM, 06 Mar 2019
    Спасибо, просто предположение, в импале если подобным методом создавать партиции, появляются новые столбцы. По итогу не заводить новый столбец под дату, а выводить для партицирования из тс - есть ок?
  • https://t.me/clickhouse_ru
    Да, ок
  • https://t.me/clickhouse_ru
    @hide100 #91662 05:03 PM, 06 Mar 2019
    Окей, тогда спасибо
  • у нас и 2-я таблица с replacingmergetree есть - там тоже дубли появляются, но в ней OPTIMIZE ... FINAL дубли убирал, а на просто mergetree OPTIMIZE FINAL не проводил к дедупликации, а после добавления DEDUPLICATE - дубли исчезли (я прада пока только на одной партиции оппробовал) - чудеса, кликхаус 19.1.6
  • https://t.me/clickhouse_ru
    OK, это интересно, я думал что deduplicate атавизм для replacing , был момент когда оставались версии (дубли) если они были в одном (последнем) парте.
  • @210324702 #91665 07:04 PM, 06 Mar 2019
    /stat
  • @kinzarra #91667 08:24 PM, 06 Mar 2019
    ребята, привет всем! как изменить тип колонки?
  • @kinzarra #91668 08:24 PM, 06 Mar 2019
    ALTER TABLE default.table MODIFY COLUMN username Nullable(FixedString(64))
  • @kinzarra #91669 08:24 PM, 06 Mar 2019
    не работает
  • Ошибка какая?
  • @kinzarra #91671 08:25 PM, 06 Mar 2019
    Code: 44, e.displayText() = DB::Exception: ALTER of key column username must be metadata-only
  • https://t.me/clickhouse_ru
    @rheinx ↶ Reply to #91671 #91672 08:25 PM, 06 Mar 2019
    колонка в ключе? Покажи show create table
  • @kinzarra #91673 08:26 PM, 06 Mar 2019
    CREATE TABLE default.table (id Int32, username FixedString(8)) ENGINE = MergeTree PARTITION BY tuple()
    ORDER BY
    username SETTINGS index_granularity = 8192
  • @carrolcox #91674 08:30 PM, 06 Mar 2019
    Поле типа Nullable нельзя включать в индексы, а у вас tuple партицирование
  • @carrolcox #91675 08:31 PM, 06 Mar 2019
    Кроме того использование Nullable может снижать производительность
  • @carrolcox #91676 08:33 PM, 06 Mar 2019
    Можно добавить колонку с датой и сделать партицирование по ней?
  • @carrolcox #91677 08:34 PM, 06 Mar 2019
    Или принципиально нужна такая схема
  • @kinzarra ↶ Reply to #91676 #91678 08:36 PM, 06 Mar 2019
    не, все хорошо, спсибо
  • @kinzarra #91679 08:38 PM, 06 Mar 2019
    инсертить лучше массивом или по одной?
  • @kinzarra #91680 08:38 PM, 06 Mar 2019
    строке
  • https://t.me/clickhouse_ru
    @den_crane #91681 08:49 PM, 06 Mar 2019
    https://clickhouse.yandex/docs/ru/query_language/insert_into/
    Замечания о производительности¶
    INSERT сортирует входящие данные по первичному ключу и разбивает их на партиции по месяцам. Если вы вставляете данные за разные месяцы вперемешку, то это может значительно снизить производительность запроса INSERT. Чтобы избежать этого:

    Добавляйте данные достаточно большими пачками. Например, по 100 000 строк.
    Группируйте данные по месацам самостоятельно перед загрузкой в ClickHouse.
  • По практике могу сказать, что построчно тратит столько же ресурсов, что балком
  • @carrolcox #91683 08:54 PM, 06 Mar 2019
    А вот время экономится
  • @carrolcox #91684 08:56 PM, 06 Mar 2019
    Так что, если данных много, подбирайте пачку из диапазона 50к-200к строк
  • 👍
  • А предсортировка всё ещё помогает ускорить импорт? Или в 19.3.6 не актуально?
  • @carrolcox #91687 08:58 PM, 06 Mar 2019
    При составном ключе партицирования
  • https://t.me/clickhouse_ru
    @den_crane #91688 09:03 PM, 06 Mar 2019
    ну если партиции сделаны например partition by ( toYYYYMMDD(), a % 13 ) order by ttt,X
    то надо стараться чтобы в инсерте были данные которые лягут в одну партицию ( toYYYYMMDD(), a % 13 )
    иначе нарушается атомарность инсерта и получается много мелких инсертов

    и лучше их предсортировать по (ttt,X) тогда КХ-у проще сортировать
  • 07 March 2019 (239 messages)
  • А есть вообще кейсы с использованием КХ на таких настройках? Уж очень КХ хочется использовать...
  • https://t.me/clickhouse_ru
    @Sharmanshik #91690 05:48 AM, 07 Mar 2019
    всем привет вопрос по поводу обычного view, допустим у меня есть view as select * from table если я делаю select * from view where date = 'somedate' а в оригинальной таблице primary key по date это ограничит выборку из оригинальной таблицы или все же сначала будет сделан select * из оригинала а затем where date из результата?
  • https://t.me/clickhouse_ru
    @Sharmanshik #91691 05:52 AM, 07 Mar 2019
    увидел, спасибо
  • @serlex777 #91692 06:03 AM, 07 Mar 2019
    привет! подскажите, а не появилась в кх возможность пронумеровать строки в группе в порядке сортировки? спасибо
  • https://t.me/clickhouse_ru
    @MrKMV #91693 06:32 AM, 07 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
    @Sharmanshik #91694 06:35 AM, 07 Mar 2019
    попробую все же сформулировать при запросах в distributed из Табло вылазит вот такая ошибка:

    HTTP status code: 404 Received error: Code: 47, e.displayText() = DB::Exception: Unknown identifier:

    тра та та набор полей в таблице которые точно есть, а затем:

    masked_columns: array_join_columns: source_columns: , e.what() = DB::Exception
    Unable to calculate the sort for the field 'Country'. The display may not show correct data.

    а изначально ругнулось на: distributed_product_mode deny после чего я попробовал и local и global, но это никчему не привело.

    при этом из локальной таблицы тот же репорт нормально строится впрочем как и из custom sql вида select * from distributed

    куда копать? табло же само генерит эти квери...
  • https://t.me/clickhouse_ru
    @Sharmanshik #91696 06:44 AM, 07 Mar 2019
    помогло но как то не до конца
  • https://t.me/clickhouse_ru
    @avointsev #91697 07:00 AM, 07 Mar 2019
    Доброе утро,
    подскажите как корректно наполнить materialized view
    с движком AggregatingMergeTree
    Нужно сделать view на таблице в большим кол-вом данных (>3Тб)
    При попытке создать view с populate операция создания падает по памяти, даже с опциями сброса на диск результатов группировки (max_bytes_before_external_group_by ), это без учета того что часть данных не попадет во view во время создания.

    Нашел в истории чата что можно сделать через промежуточную таблицу с Null движком.
    Может кто-нибудь дать пример ?
  • https://t.me/clickhouse_ru
    @alarinskii #91698 07:30 AM, 07 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #91699 07:33 AM, 07 Mar 2019
    Вариант с таблицей с движком Null используется для того чтобы не хранить исходные данные. А вы пробовали отдельно создать таблицу с движком Aggregate, и залить данные через INSERT... SELECT?
  • https://t.me/clickhouse_ru
    @kmarenov #91700 07:36 AM, 07 Mar 2019
    Привет! Столкнулись с такой проблемой: сделали materialized view, в которую вставляются данные из Distributed таблицы, но данные в mat view попадают только те, которые вставляются на ту шарду, где находится mat view.
    Можно ли как-то сделать, чтобы в mat view попадали данные из Distributed таблицы со всех серверов, а не только с того же, где находится mat view?
  • https://t.me/clickhouse_ru
    Матвью создана на каждом шарде?
  • https://t.me/clickhouse_ru
    @kmarenov #91702 07:41 AM, 07 Mar 2019
    Она создана на каждом шарде, но на каждом шарде она должна содержать полный набор данных, то есть она не должна быть Distributed. То есть в нашей ситуации не должно зависеть: есть mat view на других шардах или нет. А это влияет как-то?
  • https://t.me/clickhouse_ru
    @kmarenov #91703 07:42 AM, 07 Mar 2019
    В select запросе указана именно Distributed таблица, а не та, над которой она работает.
  • https://t.me/clickhouse_ru
    @kmarenov #91704 07:43 AM, 07 Mar 2019
    Но по факту вставка в mat view идет только из таблицы, которая работает под Distributed на текущей шарде
  • https://t.me/clickhouse_ru
    @kmarenov #91705 07:46 AM, 07 Mar 2019
    Я понимаю, что не понятно, как триггерить с этой шарды вставку на других шардах в Distributed таблицу. Но мало ли: вдруг как-то можно решить это.
  • https://t.me/clickhouse_ru
    @kmarenov #91706 07:47 AM, 07 Mar 2019
    А можно какой-то ключ шардирования придумать, чтобы все данные попадали на все шарды?
  • https://t.me/clickhouse_ru
    @shursh ↶ Reply to #90699 #91707 07:47 AM, 07 Mar 2019
    Могу поделиться чартом
  • https://t.me/clickhouse_ru
    @kmarenov ↶ Reply to #91706 #91708 07:47 AM, 07 Mar 2019
    Хотя не факт что это поможет тут
  • @yurifal ↶ Reply to #91694 #91709 07:47 AM, 07 Mar 2019
    версия ODBC драйвера какая?
  • https://t.me/clickhouse_ru
    @Sharmanshik #91710 07:48 AM, 07 Mar 2019
    релиз от 2018
  • https://t.me/clickhouse_ru
    Это называется репликации. Вы точно не путаете шардирование данных и репликации?
  • https://t.me/clickhouse_ru
    @Sharmanshik #91712 07:48 AM, 07 Mar 2019
    последний
  • @yurifal #91713 07:48 AM, 07 Mar 2019
    попробуйте предпоследний
  • https://t.me/clickhouse_ru
    @Sharmanshik #91714 07:48 AM, 07 Mar 2019
    потому что 2019 на маке не функционален
  • https://t.me/clickhouse_ru
    @Sharmanshik #91715 07:48 AM, 07 Mar 2019
    предпоследний 2018?
  • @yurifal #91716 07:48 AM, 07 Mar 2019
    октябрьский
  • https://t.me/clickhouse_ru
    Скорее всего вы вставляете в distributed таблицу и она направляет данные на соответствующиц шард в матвью. Чтобы матвью была полная и везде, вам нужна репликация
  • https://t.me/clickhouse_ru
    v1.0.0.20181017 я на этом и сижу
  • @yurifal ↶ Reply to #91718 #91719 07:52 AM, 07 Mar 2019
    а код Табло можете записать (Performance Recording)?
  • https://t.me/clickhouse_ru
    @Sharmanshik #91720 07:52 AM, 07 Mar 2019
    попутно, если я там где табло использует поле Country напрямую делаю Group из этого поля и подставляю в rows этот лист начинает работать
  • https://t.me/clickhouse_ru
    @Sharmanshik #91721 07:53 AM, 07 Mar 2019
    беда в том что и в других местах такое проскакивает и так просто не чинится
  • https://t.me/clickhouse_ru
    сейчас попробую
  • https://t.me/clickhouse_ru
    @kmarenov ↶ Reply to #91717 #91723 07:53 AM, 07 Mar 2019
    Смысл в том, что таблица шардированная, а mat view, который делает select из этой таблицы - нешардированный, и должен на одной своей шарде содержать результат агрегации из всех данных шардированной таблицы. А по факту туда попадают данные, которые вставялются только на ту шарду, где находится mat view, а нужно, чтобы попадали данные со всех шард.
  • https://t.me/clickhouse_ru
    @Sharmanshik #91724 07:54 AM, 07 Mar 2019
    есть место еще где сделан brakedown_by в виде case если параметр такой то подставить поле такое то, для группировки и вот там та же фигня:
    Unable to calculate the sort for the field 'breakdown_by'. The display may not show correct data.
  • @yurgers #91725 07:54 AM, 07 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
    Так а у матвью селект идёт из какой таблицы? Которая дистрибьютед?
  • https://t.me/clickhouse_ru
    @kmarenov ↶ Reply to #91726 #91727 08:03 AM, 07 Mar 2019
    да
  • https://t.me/clickhouse_ru
    @kmarenov #91728 08:03 AM, 07 Mar 2019
    но данные попадают все равно не из distributed таблицы только с этой шарды
  • https://t.me/clickhouse_ru
    Оформите issue с описанием схем таблиц и настройками шарда - нужно больше деталей
  • https://t.me/clickhouse_ru
    Уточните, пожалуйста, как мне поможет таблица Aggregate ? Она же вдальйшем не будет обновлять данные при вставке в исходную таблицу, как MA . А если использовать ее как промежуточную , то затем создавать Aggregating view поверх Aggregating table ?!?!

    Я хотел сделать Null таблицу аналогичную исходной таблице , поверх Null таблицы сделать Aggregating MA и сделать INSERT... SELECT из исходной таблицы в null
    так чтоб данные попали только в Aggregating MA
    но как после завершения вставки переназначить Aggregating MA на исходную талицу ?
  • @ZPGDD #91731 08:13 AM, 07 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
    Запрос создания Aggregating МА:
    1. Создаёт таблицу типа Aggregating
    2. Создаёт матвью, триггер на инсерт из исходной таблицы на таблицу из пункта 1.
    Но для вашего случая, когда pooulate не срабатывает можно руками создать таблицу с движком Aggregating и матвью, смотрящую на эту таблицу. И после сделать INSERT.. SELECT
  • https://t.me/clickhouse_ru
    вобщем проблема проявляется на tableau desktop на маке с октябрьским драйвером
  • https://t.me/clickhouse_ru
    @Sharmanshik #91734 08:17 AM, 07 Mar 2019
    я залил workbook на сервер там он открывается и работает нормально
  • https://t.me/clickhouse_ru
    @Sharmanshik #91735 08:19 AM, 07 Mar 2019
    с одной стороны это плохо потому что у нас вся дата на маках и им надо как то править воркбуки, с другой стороны можно просить рихтовать на локальной таблице и перед заливкой просить сменить таблицу на distributed как временное решение
  • https://t.me/clickhouse_ru
    @Sharmanshik #91736 08:19 AM, 07 Mar 2019
    ное если то же самое воспроизведется на linux драйвере будет грустно потому что мы переползаем с windows версии табло на linux
  • https://t.me/clickhouse_ru
    @avointsev #91737 08:25 AM, 07 Mar 2019
    Tima т.е у меня будет цепочка исходная таблица -> aggredate table - > обычное MA . так ?

    В этой схеме есть минус что aggredate table как и MA займут место на диске, это вдвое больше ожидаемого , от 3Тб исходной таблицы это будет ощутимо

    и как вручную создать тригер на исходной таблице для вставки в aggredate table ? не нашел этого в документации (
  • @kinzarra #91738 08:27 AM, 07 Mar 2019
    Ребята, привет! Как лучше всего записывать в базу из питона?
  • https://t.me/clickhouse_ru
    @emakarov ↶ Reply to #91738 #91739 08:28 AM, 07 Mar 2019
    через clickhouse-driver
  • @kinzarra #91740 08:29 AM, 07 Mar 2019
    Да, только никак не устанавливается cityhash
  • @kinzarra #91741 08:29 AM, 07 Mar 2019
    Какая-то проблемная библиотека
  • https://t.me/clickhouse_ru
    @emakarov #91742 08:29 AM, 07 Mar 2019
    pip install clickhouse-driver - никогда проблем не было..
  • @kinzarra #91744 08:37 AM, 07 Mar 2019
    Вот такая уже много часов убил на эту тему
  • @kinzarra #91745 08:37 AM, 07 Mar 2019
    не хочет устанавливать
  • @kinzarra #91746 08:38 AM, 07 Mar 2019
    именно clickhouse-cityhash
  • https://t.me/clickhouse_ru
    @emakarov #91747 08:39 AM, 07 Mar 2019
    ааа windows...ничем не могу помочь тогда
  • https://t.me/clickhouse_ru
    @burunduk3 #91748 08:42 AM, 07 Mar 2019
    Я не настоящий сварщик (что-то делал под виндой больше дюжины лет назад, когда ещё школьником был), но cl.exe — бинарник MSVC (или как там майкросовтовский недокомпилятор называется). Возможно, предполагается, что его надо поставить (если ещё не) и добавить в пути.
  • https://t.me/clickhouse_ru
    Нет, у вас будет так же как и просто при создании матвью, только таблица с агрегатами создается явно
    Вместо
    table -> матвью -> .inner_table (c движком AggregatingMergeTree)

    У вас будет
    table -> матвью -> agg_table (c движком AggregatingMergeTree)

    То что я писал выше, про триггер в моей схеме - это матвью, смотрящая на явно созданую таблицу с AggregatingMergeTree
  • @pavlov_m #91750 09:16 AM, 07 Mar 2019
    День добрый. Версия 19.3.6.
    Как отключить part_log ? Он в конфигах закоменчен в preprocessed перепроверил. там тоже его нет.
    Но лог записывается все равно
  • https://t.me/clickhouse_ru
    @avointsev #91751 09:29 AM, 07 Mar 2019
    Tima
    правильно я понимаю что это будет что-то вроде этого
    create table agg_table (col_date date, col_int Uint16 , AggregateFunction (count, UInt16, UInt32) as col_agg ) ENGINE = AggregatingMergeTree Partition by toDate(col_date) order by col_date ;
    create MATERIALIZED VIEW agg_mva to agg_table AS select col_date , col_int , countState from table_source group by col_date, col_int order by col_date ;
    insert into agg_table (col_date, col_int , col_agg) select col_date , col_int , countState from table_source group by col_date, col_int order by col_date ;
  • @yurifal ↶ Reply to #91736 #91752 09:31 AM, 07 Mar 2019
    я никого не видел, кто смог поженить Tableau Server for Linux и clickhouse-odbc (любой версии). Если у Вас получится -- буду рад узнать подробности.
  • https://t.me/clickhouse_ru
    @Sharmanshik #91753 09:40 AM, 07 Mar 2019
    А вот это прискорбно
  • https://t.me/clickhouse_ru
    @Sharmanshik #91754 09:41 AM, 07 Mar 2019
    Если все так, то это будет такой дилбрейкер
  • https://t.me/clickhouse_ru
    @Sharmanshik #91755 09:41 AM, 07 Mar 2019
    Ну скоро узнаем
  • @Nvarchar495 #91756 09:44 AM, 07 Mar 2019
    Я поженил. В чем проблема?
  • @Nvarchar495 #91757 09:45 AM, 07 Mar 2019
    Odbc драйвер поставили на Windows server?
  • https://t.me/clickhouse_ru
    @rshmyrev #91758 09:46 AM, 07 Mar 2019
    Joined.
  • @yurifal ↶ Reply to #91756 #91759 09:51 AM, 07 Mar 2019
    то есть книга / источник, опубликованные на Tableau Server for Linux работает (отрисовываются worksheets / dashboards / можно открыть в режиме Web edit)?
  • https://t.me/clickhouse_ru
    @Sharmanshik #91760 09:57 AM, 07 Mar 2019
    @yurifal а в чем кстати сложности? ну тоесть я публиковал workbook сделанный на маке на вин сервер и он работал. в чем конкретно были проблемы с Linux табло?
  • https://t.me/clickhouse_ru
    @Sharmanshik #91761 09:57 AM, 07 Mar 2019
    не видит драйвер?
  • https://t.me/clickhouse_ru
    @Sharmanshik #91762 09:57 AM, 07 Mar 2019
    или видит но не работает
  • @yurifal ↶ Reply to #91760 #91763 10:01 AM, 07 Mar 2019
    Connect from Tableau Server for Linux · Issue #152 · yandex/clickhouse-odbc

    Hi dev team, Here below is the description of the problem with connecting Tableau Server for Linux to CH via ODBC. The environment: (CH) -- ClickHouse v.18.16.1 in Docker container on macOS Mojave ...

  • https://t.me/clickhouse_ru
    @Sharmanshik #91764 10:11 AM, 07 Mar 2019
    печаль
  • https://t.me/clickhouse_ru
    @Sharmanshik #91765 10:14 AM, 07 Mar 2019
    ну я попробую, может что то накопаю, а на сколько функционален jdbc?
  • https://t.me/clickhouse_ru
    @websitelytics #91766 10:31 AM, 07 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
    @bobrovskiy_roman #91767 10:34 AM, 07 Mar 2019
    Joined.
  • @yurifal ↶ Reply to #91765 #91768 10:34 AM, 07 Mar 2019
    для Табло -- пока что практически никакой. хотя коннект под linux есть 🙂
  • https://t.me/clickhouse_ru
    @bobrovskiy_roman #91769 10:46 AM, 07 Mar 2019
    Есть странное поведение кликхауса. Один скрипт с запросами (A) кушает 10 ядер, и выполняется за T времени. 2A кушают 20 ядер, но выполняются за 2T, хотя за 2T по идее должно быть 4A
  • https://t.me/clickhouse_ru
    @bobrovskiy_roman #91770 10:46 AM, 07 Mar 2019
    какими вычислениями занимаются ядра?
  • https://t.me/clickhouse_ru
    @stufently #91771 10:47 AM, 07 Mar 2019
    Распаковкой данных наверно
  • https://t.me/clickhouse_ru
    @SpicyCrack3r #91772 10:57 AM, 07 Mar 2019
    Всем привет, подскажите как быть. Мне нужно хранить дескрипторы картинок, но для сравнения нужно расчитавать евклидово расстояние, получается чтобы найти объекты нужно фулскан сделать?
  • @343647023 #91773 11:04 AM, 07 Mar 2019
    Всем привет, есть ли возможность делать распределенные запросы к системным таблицам?
    Создал distributed табличку, которая смотрит на системную, но похоже что данные читаются только из локальной системной таблички
  • https://t.me/clickhouse_ru
    ну хоть они и данные распаковывают, с 20 ядрами то все равно должно было быть 2 процесса одновременно выполнится
  • https://t.me/clickhouse_ru
    Раньше было можно, думаю и сейчас сильно
  • https://t.me/clickhouse_ru
    Ну если данных много и упирается в пропускную способность то будет в два раза дольше
  • https://t.me/clickhouse_ru
    @stufently #91777 11:06 AM, 07 Mar 2019
    Вы же видите что происходит вдс время выполнения запроса и можете сами сделать вывод правильный а не заставлять нас гадать на кофейной гуще
  • https://t.me/clickhouse_ru
    ну проблема что эти запросы даже не последовательно выполняются, а ждут пока выполнятся параллельно
  • https://t.me/clickhouse_ru
    @bobrovskiy_roman #91779 11:32 AM, 07 Mar 2019
    если бы через T выплевывался бы один запрос, а через второе T второй - то не так страшно было бы
  • https://t.me/clickhouse_ru
    @bobrovskiy_roman #91780 11:32 AM, 07 Mar 2019
    а они оба выдаются через 2T
  • https://t.me/clickhouse_ru
    @MaximStanovov #91781 11:37 AM, 07 Mar 2019
    Привет, кто-то решал задачу стримминга или периодичекого копирования новых данных из PSQL в ClickHouse? Есть какие-то простые решения?
  • https://t.me/clickhouse_ru
    @stovm ↶ Reply to #91773 #91783 11:38 AM, 07 Mar 2019
    Через remote. Вот примерчик:
    SELECT database,
    table,
    any(engine),
    sum(rows),
    formatReadableSize(sum(bytes))
    FROM remote('host1,host2,host3',system, parts)
    WHERE database IN ('default')
    GROUP BY database,
    table
    order by sum(bytes) desc;
  • https://t.me/clickhouse_ru
    Ну вы запустите и посмотрите что они делают
  • https://t.me/clickhouse_ru
    @bobrovskiy_roman #91785 11:40 AM, 07 Mar 2019
    по потокам,
  • https://t.me/clickhouse_ru
    @bobrovskiy_roman #91786 11:41 AM, 07 Mar 2019
    ну т.е это никак не ускорить?
  • https://t.me/clickhouse_ru
    @stufently #91787 11:41 AM, 07 Mar 2019
    Ну вы смотрите как запрос идёт в консоли
  • https://t.me/clickhouse_ru
    @stufently #91788 11:41 AM, 07 Mar 2019
    А не пс
  • https://t.me/clickhouse_ru
    @bobrovskiy_roman #91789 11:42 AM, 07 Mar 2019
    а что я должен там увидеть?
  • https://t.me/clickhouse_ru
    @bobrovskiy_roman #91790 11:43 AM, 07 Mar 2019
    20 rows in set. Elapsed: 6.150 sec. Processed 244.29 million rows, 21.53 GB (39.72 million rows/s., 3.50 GB/s.)
    это при двух запусках
  • https://t.me/clickhouse_ru
    @bobrovskiy_roman #91791 11:43 AM, 07 Mar 2019
    20 rows in set. Elapsed: 3.260 sec. Processed 244.29 million rows, 21.53 GB (74.95 million rows/s., 6.60 GB/s.)
    это при одном
  • https://t.me/clickhouse_ru
    @bobrovskiy_roman #91792 11:44 AM, 07 Mar 2019
    результаты одинаковые
  • https://t.me/clickhouse_ru
    @bobrovskiy_roman #91793 11:44 AM, 07 Mar 2019
    а вот скорость
  • ок, спасибо
  • @kinzarra #91795 11:50 AM, 07 Mar 2019
    Скажите, пожалуйста, а стоит ли использовать foreign key в clickhouse?
  • @mobydi #91796 11:51 AM, 07 Mar 2019
    Привет
    Помогите разобраться с перформансом.
    Результаты теста такие:
    1 mil lines =23 sec
    4 mil lines = 35 sec
    11.5 mil lines = 90sec
    21 mil lines=140sec

    The spark application seems to wait after clickhouse server for most of the time:
    PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
    11741 clickho+ 20 0 30.645g 7.501g 44212 S 122.5 3.0 13:53.46 clickhouse-serv
    17544 andrei 20 0 8623208 587076 34052 S 5.0 0.2 0:28.46 java

    Датасет: https://clickhouse.yandex/tutorial.html

    time ./spark-2.4.0-bin-hadoop2.7/bin/spark-submit --jars clickhouse-jdbc-0.1-SNAPSHOT-jar-with-dependencies.jar --executor-memory 20G clickhouse_test.py

    #!/usr/bin/python
    from pyspark import SparkContext
    from pyspark.sql import SQLContext
    sc = SparkContext("local", "first app")
    sqlContext = SQLContext(sc)
    dataframe=sqlContext.read.format("jdbc").option("url", "jdbc:clickhouse://localhost:8123/datasets").option("driver", "ru.yandex.clickhouse.ClickHouseDriver").option("dbtable", "ontime").load()
    dataframe.show(10)
    Tutorial | ClickHouse Documentation

    ClickHouse Tutorial What to Expect from This Tutorial? By going through this tutorial, you’ll learn how to set up a simp

  • @antonio_antuan #91797 11:51 AM, 07 Mar 2019
    а как вы это сделаете?)
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #91781 #91798 11:51 AM, 07 Mar 2019
    Они все простые, берете данные которых нет в КХ и пишите в него через пайп psql|clickhouse-client
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #91795 #91799 11:52 AM, 07 Mar 2019
    ФК нет в КХ, вы не сможете их использовать
  • https://t.me/clickhouse_ru
    @synthcat ↶ Reply to #91395 #91800 11:55 AM, 07 Mar 2019
    что еще в итоге можно сделать?
  • @kinzarra #91801 12:05 PM, 07 Mar 2019
    получается, что join нельзя даже сделать?
  • @antonio_antuan #91802 12:06 PM, 07 Mar 2019
    foreign key и джоин это не одно и то же
  • @antonio_antuan #91804 12:08 PM, 07 Mar 2019
    foreign key это просто некоторое ограничение, позволяющее гарантировать целостность и консистентность данных. Его наличие или отсутствие (например, в postgres) никак не влияет на возможность делать join.
  • https://t.me/clickhouse_ru
    @774908332 #91805 12:15 PM, 07 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
    а в mysql он насстолько тормозной что уже при миллиона записей приходится его выкидывать
  • https://t.me/clickhouse_ru
    Есть еще узкие места - диск / память / энтропия / сеть
  • https://t.me/clickhouse_ru
    Таблица с engine = odbc
  • @mobydi ↶ Reply to #91796 #91809 12:37 PM, 07 Mar 2019
    есть предположения куда посмотреть ?
  • https://t.me/clickhouse_ru
    Просто ищете по индексу (order by) в окрестности итеративно и все. Сейчас кто-то комитит zcurve индекс -- тоже поможет, кмк.
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    На sql запрос.
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @rheinx #91816 01:12 PM, 07 Mar 2019
    Ребят, а где мождно информации об индексах больше получить? Может на каком нибудь митапе рассказывали?
  • https://t.me/clickhouse_ru
    @boombick #91817 01:13 PM, 07 Mar 2019
    в исходниках ;)
  • https://t.me/clickhouse_ru
    Даже если вы не упираетесь в диск и сеть, и упираетесь в CPU, то скорее всего у вас такие запросы, которые просто не выигрывают от HyperThreading, и для ClickHouse это вполне логично, поскольку он итак очень хорошо утилизирует процессор и в том числе довольно неплохо избегает простоя конвейера при ожидании памяти, например.
  • @493579735 #91819 01:17 PM, 07 Mar 2019
    Joined.
  • @209510860 #91820 01:18 PM, 07 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #91816 #91821 02:10 PM, 07 Mar 2019
    Больше чем в документации?
  • https://t.me/clickhouse_ru
    @kshvakov #91822 02:11 PM, 07 Mar 2019
    Что нужно знать об архитектуре ClickHouse / Алексей Зателепин (Яндекс)

    Приглашаем на Saint HighLoad ++ 2021 20 и 21 сентября 2021, Санкт-Петербург, DESIGN DISTRICT DAA in SPB Программа, билеты и подробности - https://clck.ru/VmKaW -------- РИТ++ 2017, Backend Conf Тезисы: http://backendconf.ru/2017/abstracts/2803.html ClickHouse - высокопроизводительная аналитическая база данных с открытыми исходниками, разработанная в Яндексе. Изначально ClickHouse создавался для задач Яндекс.Метрики, но постепенно нашёл множество применений как внутри Яндекса, так и в других компаниях. Я расскажу, как ClickHouse устроен внутри с акцентом на то, какие у выбранной архитектуры следствия с точки зрения прикладного разработчика. Будут затронуты следующие темы: - Как ClickHouse хранит данные на диске и выполняет запрос, почему такой способ хранения позволяет на несколько порядков ускорить аналитические запросы, но плохо подходит для OLTP и key-value нагрузки. - Как устроена репликация и шардирование, как добиться линейного масштабирования и что делать с eventual consistency. - Как диагностировать…

  • https://t.me/clickhouse_ru
    https://groups.google.com/forum/#!topic/clickhouse/y_Gx27UAd1U
    нашел кое что интересное, спасибо
  • https://t.me/clickhouse_ru
    @rheinx ↶ Reply to #91822 #91824 02:13 PM, 07 Mar 2019
    ага, спасибо посмотрю.
  • https://t.me/clickhouse_ru
    @kshvakov #91825 02:13 PM, 07 Mar 2019
    еще для понимания есть вот такое видео https://events.yandex.ru/lib/talks/5800/
  • @milovidov_an #91831 02:52 PM, 07 Mar 2019
    Появилась вакансия C++ разработчика ClickHouse: https://yandex.ru/jobs/vacancies/dev/dev_clickhouse/
    Разработчик ClickHouse

    Яндекс — одна из ведущих ИТ-компаний с офисами в 21 городе России. Создаёт сервисы для прямых пользователей и бизнеса. В команду ищет профессионалов, которые ценят открытость и свободу и стремятся менять мир к лучшему. Вам это близко? Откликайтесь на вакансии.

  • None
  • https://t.me/clickhouse_ru
    @athathot ↶ Reply to #91831 #91833 02:53 PM, 07 Mar 2019
    змеи искусители :)
  • https://t.me/clickhouse_ru
    @ad0x01 #91834 02:53 PM, 07 Mar 2019
    ))))
  • https://t.me/clickhouse_ru
    Каскадирования у мат вью нету. Навешивайте все вью на Кафка таблицу.
  • @sonsergey #91836 02:53 PM, 07 Mar 2019
    Требования пугают =)
  • https://t.me/clickhouse_ru
    @athathot #91837 02:53 PM, 07 Mar 2019
    коллегу яндекс отхантил, тот теперь говорит. что жаль. что в яндексе нет капсульных спален
  • https://t.me/clickhouse_ru
    @orloffv ↶ Reply to #91836 #91838 02:53 PM, 07 Mar 2019
    м?
  • https://t.me/clickhouse_ru
    @athathot #91839 02:53 PM, 07 Mar 2019
    и полкового борделя :)
  • https://t.me/clickhouse_ru
    из гугла отхантил?
  • https://t.me/clickhouse_ru
    @athathot ↶ Reply to #91840 #91841 02:54 PM, 07 Mar 2019
    из Джета
  • Очень общие, не понятно к чему готовиться
  • https://t.me/clickhouse_ru
    @orloffv ↶ Reply to #91842 #91843 02:54 PM, 07 Mar 2019
    вроде проще некуда.
    смотришь репозиторий и готовишься)))
  • https://t.me/clickhouse_ru
    @boombick #91844 02:56 PM, 07 Mar 2019
    на собеседовании надо будет закрыть ишью))
  • https://t.me/clickhouse_ru
    @Yaqslee #91846 02:57 PM, 07 Mar 2019
    Joined.
  • багофича. :) Обычно несложно переделать чтобы всё из единственного источника заполнялось.
  • https://t.me/clickhouse_ru
    фича.
    Только одна кафка таблица. Все 42 вью смотрят на одну таблицу.
    Вью не читают кафка таблицу, они получают пуши.
  • https://t.me/clickhouse_ru
    проблема в доке КХ. 🙁
    Там написано что прочитать данные из кафка таблицы можно один раз. И это видимо взрывает людям мозх.
  • https://t.me/clickhouse_ru
    Вью не читают кафка таблицу, они получают пуши.
  • https://t.me/clickhouse_ru
    @alibekam ↶ Reply to #91831 #91855 02:59 PM, 07 Mar 2019
    Надеюсь перед ним поставят задачу сделать встроенную кластеризацию и выпилить zookeeper в /dev/null
  • https://t.me/clickhouse_ru
    ооо, боже, я челюсть вывернул от смеха.
  • У вас нет в планах выпустить видео-туториал с примерами разработки Clickhouse? Что-то вроде видео-воркшопа с best practices по разработке функциональности Clickhouse...

    Думаю, было бы полезно для тех кто хочет присоединиться к open source разработке.
  • @profile_undefined #91858 03:04 PM, 07 Mar 2019
    @milovidov_an
  • @ztlpn ↶ Reply to #91855 #91859 03:05 PM, 07 Mar 2019
    Если у вас есть на примете разработчик, которому такое по плечу, то конечно скиньте ему эту вакансию :)
  • https://t.me/clickhouse_ru
    @ployd #91860 03:05 PM, 07 Mar 2019
    А когда CH на раст уже перепишут?
  • https://t.me/clickhouse_ru
    @ployd ↶ Reply to #91855 #91861 03:05 PM, 07 Mar 2019
    А вот это спорный вопрос
  • https://t.me/clickhouse_ru
    @ployd #91862 03:06 PM, 07 Mar 2019
    Скорее лучше иметь возможность выбрать, zk/встроенное/etcd
  • эх, у меня тут статус админа, поэтому вроде положено быть серьезным (хотя бы немного). Но да, представить себе как новый член команды с энтузиазмом берется выпиливать ту часть системы, которая как раз обычно "просто работает" не создавая проблем, при том что много других вещей для работы... Действительно звучит забавно. :) Дополнительные руки нужны, есть чем заняться и без "выпиливания зукипера" :)
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @alibekam ↶ Reply to #91862 #91865 03:13 PM, 07 Mar 2019
    не, не нужно, нужен один - железно работающий и конфигурируемый парой-тройкой команд, а не медитацией над конфигурацией.
  • https://t.me/clickhouse_ru
    @ployd #91866 03:14 PM, 07 Mar 2019
    Суть в том, что удобно такую конфигурацию держать отдельно и для нескольких сервисов сразу
  • https://t.me/clickhouse_ru
    яндекс облако.
  • https://t.me/clickhouse_ru
    @ployd #91868 03:14 PM, 07 Mar 2019
    А что там будет — пофигу
  • https://t.me/clickhouse_ru
    @ployd #91869 03:14 PM, 07 Mar 2019
    zk неплохой выбор, т.к. как минимум кафка ещё сажается туда же
  • https://t.me/clickhouse_ru
    @salttan ↶ Reply to #91773 #91870 03:16 PM, 07 Mar 2019
    Можно и distributed табличку создать, главное кластер описать правильно
  • https://t.me/clickhouse_ru
    @774908332 #91871 03:25 PM, 07 Mar 2019
    Привет!
    Я только начинаю работать с clickhouse. Пытаюсь установить clickhouse и каждый раз получаю ошибку при установке
    $ clickhouse-client
    ClickHouse client version 19.3.6.
    Connecting to localhost:9000 as user default.
    Code: 210. DB::NetException: Connection refused (localhost:9000, 127.0.0.1)

    Подскажите, пожалуйста, сталкивались ли вы с подобным.
  • @profile_undefined #91872 03:26 PM, 07 Mar 2019
    Возможно, у вас уже 9000 порт занят.
  • @odainic #91873 03:26 PM, 07 Mar 2019
    Всем привет. Подскажите как посмотреть историю запросов или например все CREATE TABLE из консоли?
  • https://t.me/clickhouse_ru
    Это чистая только что созданная виртуалка
  • https://t.me/clickhouse_ru
    а вы запустили службу?
    service clickhouse-server start

    что показывает
    ps -ef|grep clickhouse
  • https://t.me/clickhouse_ru
    clickhouse-server.service - ClickHouse Server (analytic DBMS for big data)
    Loaded: loaded (/etc/systemd/system/clickhouse-server.service; enabled; vendor preset: enabled)
    Active: activating (auto-restart) (Result: exit-code) since Thu 2019-03-07 15:28:08 UTC; 6s ago
    Process: 3772 ExecStart=/usr/bin/clickhouse-server --config=/etc/clickhouse-server/config.xml (code=exited, status=232/ADDRESS_FAMILIES)
    Main PID: 3772 (code=exited, status=232/ADDRESS_FAMILIES)
  • https://t.me/clickhouse_ru
    @proller ↶ Reply to #91876 #91877 03:30 PM, 07 Mar 2019
    что в /var/log/clickhouse-server/clickhouse-server.log ?
  • https://t.me/clickhouse_ru
    @774908332 #91878 03:30 PM, 07 Mar 2019
    Запустить, я запиустила, но после запуска статус как указано выше
  • https://t.me/clickhouse_ru
    Пусто там
  • https://t.me/clickhouse_ru
    journalctl -u clickhouse-server.service
  • https://t.me/clickhouse_ru
    Hint: You are currently not seeing messages from other users and the system.
    Users in groups 'adm', 'systemd-journal' can see all messages.
    Pass -q to turn off this notice.
    -- Logs begin at Thu 2019-03-07 15:10:55 UTC, end at Thu 2019-03-07 15:11:38 UTC. --
    -- No entries --
  • https://t.me/clickhouse_ru
    @den_crane #91882 03:33 PM, 07 Mar 2019
    sudo journalctl -u clickhouse-server.service
  • https://t.me/clickhouse_ru
    @alibekam #91883 03:34 PM, 07 Mar 2019
    sudo
  • https://t.me/clickhouse_ru
    @774908332 #91884 03:37 PM, 07 Mar 2019
  • https://t.me/clickhouse_ru
    @alibekam #91885 03:38 PM, 07 Mar 2019
    У Вас права на /var/lib/clickhouse не заданы, ch не может запуститься
  • https://t.me/clickhouse_ru
    Это через users.xml надо следать?
  • https://t.me/clickhouse_ru
    sudo ls -ld /var/lib/clickhouse/
    sudo chown clickhouse.clickhouse /var/lib/clickhouse/
    sudo service clickhouse-server start
  • https://t.me/clickhouse_ru
    @774908332 #91888 03:45 PM, 07 Mar 2019
    Кажется, вся проблема в том, что у меня в /var/lib
    нет clickhouse
  • https://t.me/clickhouse_ru
    @774908332 #91889 03:47 PM, 07 Mar 2019
    sudo ls -ld /var/lib/clickhouse/
    ls: cannot access '/var/lib/clickhouse/': No such file or directory
  • https://t.me/clickhouse_ru
    @alibekam #91890 03:47 PM, 07 Mar 2019
    Печалька
  • У любого достаточно большого проекта список незакрытых ишью обычно исчитывается сотнями. У etcd или consul - тоже сотни.
    https://github.com/etcd-io/etcd/issues
    https://github.com/hashicorp/consul/issues

    Это говорит не о качестве продукта (там 100 незакрытых багов - какой ужас), а о том что сотни и тысячи людей его использовали в самых разных обстоятельствах, и наступили на все возможные грабли. Если речь о сроках исправления - то рук не хватает всегда и везде, а если вы когда-то работали над большим проектом - то должны понимать - что сам факт "наличия граблей", не означает что их оттуда всегда можно легко убрать не разрушив какие-то другие части системы.
    etcd-io/etcd

    Distributed reliable key-value store for the most critical data of a distributed system - etcd-io/etcd

  • https://t.me/clickhouse_ru
    @molo4ko007 #91892 03:50 PM, 07 Mar 2019
    а матвью можно над replicated? то есть если у меня реплики А и Б, и матвью над ними (МА и МБ), при репликации с А на Б, например, не будет двойной записи?
  • https://t.me/clickhouse_ru
    @molo4ko007 #91893 03:51 PM, 07 Mar 2019
    в матвью ^
  • Так или иначе - вопрос zookeeper / etcd / consul - это просто очередная "религиозная война". Как и в любой такой войне смысла в ней - ноль, а любые попытки "окончательного решения" путём "выпиливания" чего бы то ни было - обычно ни к чему хорошему не приводят.
  • https://t.me/clickhouse_ru
    @alibekam ↶ Reply to #91891 #91895 03:59 PM, 07 Mar 2019
    Вообще я не про это, но в отличии от etcd и consul - zookeeper тащит за собой ещё и jvm в котором ещё вагон (даже состав) багов (тоже самое касается и kafka vs nats).
    Но не суть, я лишь выразил надежду. А так пока отдаю предпочтение scylladb - у неё кластер "в коробке".

    Не у всех, как у яндекс, 100-500 серверов под боком.
  • https://t.me/clickhouse_ru
    @andrei_tserakhau #91896 04:01 PM, 07 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
    можно создать

    sudo mkdir /var/lib/clickhouse/
    sudo mkdir /var/log/clickhouse/
    sudo chown clickhouse.clickhouse /var/lib/clickhouse/
    sudo chown clickhouse.clickhouse /var/log/clickhouse/
    sudo service clickhouse-server start

    А вообще какой линукс? Убунту? Нет ли лога как вы ставили? Каталог должен был создаться.
  • На вкус и цвет товарищей нет.

    А проблема с "кластером из коробки", и 100-500 серверов не понятна.

    Я например у себя локально для экспериментов регулярно поднимаю кластер КХ в docker-compose на едиственной машине. А стейджингу у нас хватает "кластера" из 2 стареньких серверов (я не в Яндексе работаю, если что - пусть мой админский статус не вводит в заблуждение).
  • https://t.me/clickhouse_ru
    Ubuntu 18.4 Ставлю по описанию тут https://clickhouse.yandex/docs/en/getting_started/
    deb http://repo.yandex.ru/clickhouse/deb/stable/ main/
    If you want to use the most recent version, replace stable with testing (this is not recommended for production environments).

    Then run these commands to actually install packages:

    sudo apt-get install dirmngr # optional
    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv E0C56BD4 # optional
    sudo apt-get update
    sudo apt-get install clickhouse-client clickhouse-server
  • https://t.me/clickhouse_ru
    Спасибо большое! Все заработало.
  • https://t.me/clickhouse_ru
    MV получают буфер от insert (репликация никак не влияет), саму таблицу MV не читает (кроме стадии populate). Поэтому таблица может иметь движок Null и быть пустой.

    Стандартная схема: создаете MV там же где и таблицы, MV тоже replicated.
    Т.е. MV получает вставляемый блок, вычисляет select , кладет в репликейтид таблицу (ее можно создать явно, заранее). Данные MV реплицируются на другую ноду.
  • 18.04? Попробовал в докере - всё создалось.
  • https://t.me/clickhouse_ru
    @orloffv ↶ Reply to #91901 #91903 04:21 PM, 07 Mar 2019
    а есть таблица distributed? та же самая схема?
  • https://t.me/clickhouse_ru
    @alibekam ↶ Reply to #91898 #91904 04:21 PM, 07 Mar 2019
    Не, не к месту поговорка.
    Кластер "из коробки" это когда вы не по всем хостам ch и зукиперам бегаете в случае чего (ну и перед этим пилите кучу скриптов для zabbix/prometey/etc), а когда вы на любом узле кластера можете ввести например ceph status и получить информацию о его состоянии, когда вы можете [де]промоутить любой узел через cli как это делается например в pve или nats.

    Про 100-500 серверов - https://clickhouse.yandex/docs/ru/operations/tips/#zookeeper - "Не запускайте ZooKeeper на тех же серверах, что и ClickHouse. Потому что ZooKeeper очень чувствителен к задержкам, а ClickHouse может использовать все доступные системные ресурсы.", https://stackoverflow.com/questions/50437481/confusing-zookeeper-memory-usage

    Про эксперименты - без комментариев (не о них речь).
    Confusing Zookeeper Memory usage

    I have an instance of zookeeper that has been running for some time... (Java 1.7.0_131, ZK 3.5.1-1), with -Xmx10G -XX:+UseParallelGC. Recently there was a leadership change, and the memory usage o...

  • https://t.me/clickhouse_ru
    не понял вопроса, В смысле запись через distributed ?
  • https://t.me/clickhouse_ru
    @orloffv ↶ Reply to #91905 #91906 04:23 PM, 07 Mar 2019
    да
  • https://t.me/clickhouse_ru
    тоже самое, там хитро, distributed делает инсерт в локальные таблицы и этот инсерт инициирует пуш в MV
  • https://t.me/clickhouse_ru
    @kbespalov #91908 04:25 PM, 07 Mar 2019
    А пуш в MV асинхронный? Если не пройдет, то основной insert тоже упадёт?
  • Это тоже вопрос "религии". Я например люблю видеть конфиги. Конретные и понятные. Захочу - на другой сервер скопирую, захочу - откоментирую какую-то строку. Это очень в духе unix. Когда все через cli или через веб-морду - всё слишком эфемерно и к тому же нужно всякие команды помнить. Например в на хосте с редис-слейвом никогда не помню как проверить адрес мастера, а в Couchbase всё через веб-морду и не понятно как проверить "что поломалось" из шелла.

    Видеть статусы всякие в КХ можно (нескложно - просто нужно в таблицы из базы system смотреть, если хочется - можно с одного сервера на всех серверах сразу).
  • https://t.me/clickhouse_ru
    нет атомарности, синхронно, сначала все вью по алфавиту или паралленьно, потом таблица.

    например вставляем 2млн записей одним инсером.
    Есть три MV (A, B, C) -- имена по алфавиту и таблица T.

    первый (блок) миллион (max_insert_block_size) вставился успешно в A,B,C и Т
    второй блок вставился в A,B . Тут отвалился зукипер, в С пусто, в Т тоже пусто.

    таже байда есть вставка 1млн в несколько партиций (на границе месяца).
    Есть возможность паралленьной заливки во вью (parallel_view_processing), там как получится так и получится.
  • https://t.me/clickhouse_ru
    @kbespalov #91911 04:37 PM, 07 Mar 2019
    да это не страшно если будет явно ошибка и поретраить можно и в итоге сойдется
  • https://t.me/clickhouse_ru
    @kbespalov #91912 04:37 PM, 07 Mar 2019
    я больше беспокоился что сначала в таблицу а потом асинхронно в MV и там уже не поймешь состояние insert (ретраить или нет)
  • https://t.me/clickhouse_ru
    @alibekam ↶ Reply to #91909 #91913 04:47 PM, 07 Mar 2019
    Да какая тут религия и дух unix, речь о эксплуатации. В эксплуатации - за "захочу" можно больно по жопе получить.
    Все конфиги - только под контролем версий, деплой узла только сценарием, ввод в эксплуатацию новой ноды - по плану, не нужно команды/параметры помнить их надо в управление конфигурациями вписывать и деплоить.
    Вся "радость" начинается когда надо разрешать различные ситуации, типа io в пол упало, начало выжираться озу, oomkiller планомерно убивает процессы, у ядра уже pid_max выжран.
    Про возможности ch в плане языка запросов - просвещён, не утруждайтесь.
  • https://t.me/clickhouse_ru
    почти понял. пример: записываю в реплику А, данные появляются в МА, а также реплицируются в Б. Как данные попадают в МБ? череб А->Б->МБ или А->МА->МБ?
  • @VitalVas #91915 04:50 PM, 07 Mar 2019
    А это нормально?
    capability: warning: `clickhouse-serv' uses 32-bit capabilities (legacy support in use)
  • @ztlpn ↶ Reply to #91914 #91916 04:51 PM, 07 Mar 2019
    второе (если у вас вьюшки тоже реплицированы)
  • https://t.me/clickhouse_ru
    спасибо
  • https://t.me/clickhouse_ru
    @molo4ko007 #91918 05:13 PM, 07 Mar 2019
    а за счет чего это работает? точнее, почему данные при попадании в Б не попадут в МБ? просто интересно
  • https://t.me/clickhouse_ru
    репликация не делает insert , она скачивает бинарный парт
  • https://t.me/clickhouse_ru
    @molo4ko007 #91920 05:16 PM, 07 Mar 2019
    Понял
  • По прежнему не понимаю чего вы хотите от Кликхауса в плане управления кластером если у вас его oomkiller убивает, или "в потолок" по файлам упираетесь. Короче, мало конструктивный диалог получился, но продолжать не будем. Может в следующий раз получится лучше. Хорошего Вам вечера.
  • https://t.me/clickhouse_ru
    @andrei_tserakhau #91922 05:34 PM, 07 Mar 2019
    привет, подскажите пожалуйста в чем разница в форматах DDL:
    CREATE TABLE test_db.foo_table on cluster `foo_cluster` ( purchase_id String, day Date)
    ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/test_db.foo_table', '{replica}', day, purchase_id, 8192)
    и
    CREATE TABLE test_db.foo_table on cluster `foo_cluster` ( purchase_id String, day Date)
    ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/test_db.foo_table', '{replica}')
    order by (purchase_id) partition by day SETTINGS index_granularity = 8192
  • https://t.me/clickhouse_ru
    Разница в order by, уберите скобочки:

    CREATE TABLE test_db.foo_table on cluster `foo_cluster` ( purchase_id String, day Date)
    ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/test_db.foo_table', '{replica}')
    order by purchase_id partition by day SETTINGS index_granularity = 8192
  • https://t.me/clickhouse_ru
    @andrei_tserakhau #91924 05:40 PM, 07 Mar 2019
    а не подскажите на что это влияет?
  • https://t.me/clickhouse_ru
    первый устаревший, и не позволяет партиционировать произвольно.

    И кстати '{replica}', day, purchase_id, 8192)
    соотвествует месяцу, поэтому вам надо = partition by toYYYYMM(day)
  • @proehavshiy #91926 05:42 PM, 07 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
    @den_crane #91927 05:43 PM, 07 Mar 2019
    Т.е. устаревшее

    CREATE TABLE test_db.foo_table on cluster foo_cluster ( purchase_id String, day Date)
    ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/test_db.foo_table', '{replica}', day, purchase_id, 8192)

    эквивалентно

    CREATE TABLE test_db.foo_table on cluster foo_cluster ( purchase_id String, day Date)
    ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/test_db.foo_table', '{replica}')
    partition by toYYYYMM(day) order by (purchase_id) SETTINGS index_granularity = 8192
  • https://t.me/clickhouse_ru
    @andrei_tserakhau #91928 05:45 PM, 07 Mar 2019
    спасибо! сейчас попробую так.
  • https://t.me/clickhouse_ru
    сначала надо понять как так получилось, и затем либо удалить в зукипере мусор от старых экспериментов либо написать create table правильно.
  • https://t.me/clickhouse_ru
    а подскажи partition by day || partition by toYYYYMM(day)
    в чем тут разница?
  • https://t.me/clickhouse_ru
    дневные партиции vs месячные партиции
    если вы не знаете зачем вам дневные партиции, используйте помесячные.
  • https://t.me/clickhouse_ru
    @andrei_tserakhau #91936 05:53 PM, 07 Mar 2019
    я просто словил чтото странное.
    я вставляю в табличку PARTITION BY day 1317570 записей, на выходе
    SELECT count(*)
    FROM test_db.ver12345_test

    ┌─count()─┐
    │ 2618424 │
    └─────────┘

    Только что попробовал PARTITION BY toYYYYMM(day) и на выходе

    SELECT count(*)
    FROM test_db.ver123456_test

    ┌─count()─┐
    │ 1317570 │
    └─────────┘
    получилось нужное кол-во строчек. Не подскажите почему так?
  • https://t.me/clickhouse_ru
    ошибка у вас. Полностью вывод всех команд покажите. Партиционирование здесь не влияет.
  • https://t.me/clickhouse_ru
    дада, я верю, просто не могу понять куда даже смотреть :(. Вставляю батчами по 200к строк.
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #91904 #91941 05:58 PM, 07 Mar 2019
    Вот тут вы правы, у КХ очень все "бедно" с тулингом, нужен некий clickhouse-cli кторый заавтоматизирует часть рутинных операций чтоб не приходилось бегать по машинам, я даже как-то начинал делать, но потом приоритеты поменялись. Насчет ZK - это, к счастью или сожалению, достаточно неплохое решение которое позволяет делать 2-е штуки: с гарантией хранить то что в него записали, поверх ЗК легко реализовывать выборы/распределенные блокировки и все то что написано в его рецептах. Все это можно встроить в КХ, но на это нужно время как на разработку, так и на вылавливание багов, второе сильно критично. Так что выкидывание ЗК не сильно приоритетно, хотя сейчас и есть возможность попробовать прикрутить etcd/consul etc и попробовать
  • https://t.me/clickhouse_ru
    при этом что странно смена PARTITION BY toYYYYMM(day) дубли убрала :(. какая то магия.
    Попробую собрать вывод команд.
  • https://t.me/clickhouse_ru
    @salttan ↶ Reply to #91910 #91943 06:10 PM, 07 Mar 2019
    все так, только сначала в таблицу, потом во вью
  • https://t.me/clickhouse_ru
    да, вы правы, я ошибся.

    create table testX ( A Int64) engine=MergeTree order by tuple();
    create MATERIALIZED view testXA engine=MergeTree order by tuple() as select * from testX;
    create MATERIALIZED view testXB engine=MergeTree order by tuple() as select throwIf(A=20000000) from testX;
    create MATERIALIZED view testXC engine=MergeTree order by tuple() as select * from testX;
    insert into testX select number from numbers(100000000) settings max_block_size=10000;
    DB::Exception: Value passed to 'throwIf' function is non zero: while pushing to view dw.testXB

    select count() from testX
    21000000

    select count() from testXA
    21000000

    select count() from testXB
    19950000

    select count() from testXC
    19950000
  • https://t.me/clickhouse_ru
    @den_crane #91946 06:55 PM, 07 Mar 2019
    truncate table testX;
    truncate table testXA;
    truncate table testXB;
    truncate table testXC;
    clickhouse-client --parallel_view_processing=1
    select count() from testXC
    21000000
  • https://t.me/clickhouse_ru
    @alibekam ↶ Reply to #91941 #91947 07:56 PM, 07 Mar 2019
    Возможно пришла пора повысить приоритет, https://github.com/yandex/ClickHouse/issues/479#issuecomment-467279591
    Consul instead ZooKeeper · Issue #479 · yandex/ClickHouse

    ZooKeeper - need Java VM on every znode, no service discovery, etc ... Consul - one binary, and other https://www.consul.io/intro/ and https://www.consul.io/intro/vs/zookeeper.html How about add su...

  • @roman_kolchin #91948 08:50 PM, 07 Mar 2019
    Joined.
  • 08 March 2019 (153 messages)
  • https://t.me/clickhouse_ru
    @wawaka #91949 02:48 AM, 08 Mar 2019
    можно ли быть уверенным, что ReplacingMergeTree оставляет только дубликаты, которые были добавленны последними? (без использования поля ver)
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #91947 #91950 03:46 AM, 08 Mar 2019
    Зачем? Тулзы никак от этого не зависят, они внезапно не появятся при добавлении consul/etcd etc, а вот проблем это поднакинет, нужно будет поддерживать еще какие-то стораджи. Возможно кто-то и добавит поддержку, но это явно не приоритетная задача. По issue: наличие JVM - да, дополниельная зависимость, service discovery - все данные в ZK есть.
    PS: как по мне то сейчас логичнее попробовать https://github.com/etcd-io/zetcd и если с ним есть проблемы то порешать их на стороне zetcd
  • https://t.me/clickhouse_ru
    @Sharmanshik #91951 06:14 AM, 08 Mar 2019
    зукипер работает и кушать не просит, тем более там где начинается кафка (грефневая) зукипер все равно имеет емсто быть, почините плиз odbc драйвер ( даже под виндой есть проблемы с distributed таблицами (((
  • https://t.me/clickhouse_ru
    @Sharmanshik #91952 06:16 AM, 08 Mar 2019
    зачем чинить то что не поломалось, когда есть что чинить и так...
  • ZK и Consul не одно и то же, не нужно путать сервис координатор и сервис дискавери
  • https://t.me/clickhouse_ru
    @Sharmanshik #91954 07:42 AM, 08 Mar 2019
    Мм, тут вроде был похожий вопрос, но может я и ошибаюсь, если у меня есть на каждой ноде materialized view который смотрит на локальную таблицу, и есть distributed который смотрит на все такие таблицы на шардах, то если я делаю инсерт в distributed, разве мат вью не должен наполняться? Я почему то был под впечателением что должен. Потому что у меня не наполняется.
  • https://t.me/clickhouse_ru
    @Sharmanshik #91955 07:43 AM, 08 Mar 2019
    или не должен?
  • А у меня в результате наполнения распределенной таблицы вылетает вставка с ошибкой.
  • Думаю, должен.
  • https://t.me/clickhouse_ru
    @Sharmanshik #91958 07:46 AM, 08 Mar 2019
    Но почему то не наполняется
  • https://t.me/clickhouse_ru
    @Sharmanshik #91959 07:47 AM, 08 Mar 2019
    При том что если инсертнуть не в дистрибютед а просто в локальную то все окей
  • @571805847 #91960 07:47 AM, 08 Mar 2019
    А вы мп используете для чего?
  • https://t.me/clickhouse_ru
    @Sharmanshik #91961 07:47 AM, 08 Mar 2019
    Мп?
  • @571805847 #91962 07:48 AM, 08 Mar 2019
    Материальное представление
  • https://t.me/clickhouse_ru
    @Sharmanshik #91963 07:48 AM, 08 Mar 2019
    Результат селекта из мердж три в самминг
  • @571805847 #91964 07:48 AM, 08 Mar 2019
    Я пытался сделать на мп предрассчет группировок
  • @571805847 #91965 07:48 AM, 08 Mar 2019
    А, вы просто сворачивает данные из нод?
  • https://t.me/clickhouse_ru
    @Sharmanshik #91966 07:49 AM, 08 Mar 2019
    Ну я хочу на каждой ноде сворачивать из локальной таблицы в локальный мв мп
  • https://t.me/clickhouse_ru
    @Sharmanshik #91967 07:49 AM, 08 Mar 2019
    А инсертить допустим в дистрибутед
  • https://t.me/clickhouse_ru
    @Sharmanshik #91968 07:50 AM, 08 Mar 2019
    Мне почему то казалось что это должно работать
  • Вот и у меня такая же мечта. Чтоб распределением по нодам занимался КХ, а сбоку можно было бы еще что-то сделать.
  • https://t.me/clickhouse_ru
    @Sharmanshik #91970 07:51 AM, 08 Mar 2019
    Ну тоесть я могу инсертить и на каждой ноде отдельно
  • https://t.me/clickhouse_ru
    @Sharmanshik #91971 07:51 AM, 08 Mar 2019
    Просто иногда бывает нужно загнать руками кусок данных
  • https://t.me/clickhouse_ru
    @Sharmanshik #91972 07:52 AM, 08 Mar 2019
    Ну и плюс на каждой ноде инсертить это надо ещё дополнительно строить
  • https://t.me/clickhouse_ru
    @Sharmanshik #91973 07:52 AM, 08 Mar 2019
    Странно конечно
  • https://t.me/clickhouse_ru
    @Sharmanshik #91974 07:52 AM, 08 Mar 2019
    Может я что то не то делаю
  • https://t.me/clickhouse_ru
    @Sharmanshik #91975 07:52 AM, 08 Mar 2019
    Или включить надо дополнительно что то
  • @571805847 #91976 07:53 AM, 08 Mar 2019
    Если получится я сообщу вариант использования.
  • https://t.me/clickhouse_ru
    @bitgorbovsky #91977 07:53 AM, 08 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
    @Sharmanshik #91978 07:53 AM, 08 Mar 2019
    Аналогично )
  • https://t.me/clickhouse_ru
    @Sharmanshik #91979 07:53 AM, 08 Mar 2019
    Спасибо
  • https://t.me/clickhouse_ru
    https://github.com/yandex/ClickHouse/issues/467

    написано что должно работать
    How to use `Distributed` with `MaterializedView` · Issue #467 · yandex/ClickHouse

    CREATE TABLE IF NOT EXISTS insert_view(...) ENGINE = Null; CREATE MATERIALIZED VIEW data_local ENGINE = AggregatingMergeTree(..., sumState(num1) as num1,sumState(num2) as num2,sumState(num3) as num...

  • https://t.me/clickhouse_ru
    @Sharmanshik #91981 09:27 AM, 08 Mar 2019
    и работает, видимо я где то намудрил при создании таблиц, так что вопрос снят, спасибо
  • https://t.me/clickhouse_ru
    @aytugankh #91982 10:44 AM, 08 Mar 2019
    Joined.
  • @kinzarra #91983 10:57 AM, 08 Mar 2019
    Всем привет! Ребята, вчера странная тема возникла, на Гугл клауде проапгрейдил сервер и поменялся только ip (эфемерный), ничего не поменялось, сам ClickHouse как был так и остался, все папки на месте, НО!! База данных вся почистилась, то есть таблицы все на месте, но данные пропали. Как так?
  • https://t.me/clickhouse_ru
    @xammett #91984 11:02 AM, 08 Mar 2019
    скорее всего конфиг сбросился на дефолтный
  • @kinzarra #91985 11:08 AM, 08 Mar 2019
    И что это может стереть данные?
  • https://t.me/clickhouse_ru
    @siregaadm #91986 11:08 AM, 08 Mar 2019
    Joined.
  • @kinzarra #91987 11:08 AM, 08 Mar 2019
    Странно
  • @kinzarra #91988 11:09 AM, 08 Mar 2019
    А как избежать?
  • https://t.me/clickhouse_ru
    @Sharmanshik #91989 11:09 AM, 08 Mar 2019
    мм а точно данные пропали?
  • @kinzarra #91990 11:09 AM, 08 Mar 2019
    Ну я вижу, что да
  • https://t.me/clickhouse_ru
    @Sharmanshik #91991 11:09 AM, 08 Mar 2019
    свободное место на диске?
  • https://t.me/clickhouse_ru
    @alibekam ↶ Reply to #91953 #91992 11:09 AM, 08 Mar 2019
    Это миф. Назначение и набор функций сопоставимы, различие только в алгоритмах обеспечения консенсуса, а гарантии обеспечения консистентности - одинаково ограничены.
  • @kinzarra #91993 11:09 AM, 08 Mar 2019
    Но структура на месте
  • @kinzarra ↶ Reply to #91991 #91994 11:10 AM, 08 Mar 2019
    Ну там не так много данных и там есть место
  • https://t.me/clickhouse_ru
    @Sharmanshik #91995 11:10 AM, 08 Mar 2019
    и в вар либ кликхаусе или где оно там
  • https://t.me/clickhouse_ru
    @Sharmanshik #91996 11:10 AM, 08 Mar 2019
    что есть?
  • @kinzarra ↶ Reply to #91995 #91997 11:10 AM, 08 Mar 2019
    ??
  • https://t.me/clickhouse_ru
    @Sharmanshik #91998 11:10 AM, 08 Mar 2019
    сами файлы базы в каком состоянии? и они есть или их нет?
  • https://t.me/clickhouse_ru
    @symstriker #91999 11:11 AM, 08 Mar 2019
    может с обновой пути сбросились какие-то? не видит куда дата сложена
  • @kinzarra ↶ Reply to #91999 #92000 11:13 AM, 08 Mar 2019
    Стоп, а как же тогда структура сохранилась
  • @kinzarra #92001 11:13 AM, 08 Mar 2019
    схема
  • @kinzarra ↶ Reply to #91998 #92002 11:13 AM, 08 Mar 2019
    честно не знаю, не могу сказать, в какой паке лежит?
  • https://t.me/clickhouse_ru
    @Sharmanshik #92003 11:14 AM, 08 Mar 2019
    по дефолту /var/lib/clickhouse или посмотреть в config.xml если мне память не изменяет
  • https://t.me/clickhouse_ru
    Скорее всего что то с конфигом. При обновлении инсталятор задает вопрос, закинуть новый дефолтный конфиг или оставить старый. Скорее всего ты выбрал закинуть новый конфиг, и что то сломалось
  • https://t.me/clickhouse_ru
    @Sharmanshik #92005 11:15 AM, 08 Mar 2019
    Гугл клауде проапгрейдил сервер и поменялся только ip (эфемерный),

    я подозреваю апгрейд был инстанса
  • https://t.me/clickhouse_ru
    @Sharmanshik #92006 11:15 AM, 08 Mar 2019
    а не софта
  • https://t.me/clickhouse_ru
    @Sharmanshik #92007 11:15 AM, 08 Mar 2019
    или таки софта?
  • https://t.me/clickhouse_ru
    @denissa182 #92008 11:15 AM, 08 Mar 2019
    Глянь для начала что творится в директориях:
    /etc/clickhouse-server/
    и /var/lib/clickhouse
  • https://t.me/clickhouse_ru
    @siregaadm #92009 11:21 AM, 08 Mar 2019
    Всем привет.

    Если не затруднит, нужен совет знающих.
    Задача такая: в системе учета есть документы поступления товаров (разные типы документов генерируют приход) и документы расхода товаров (тоже разнотипные типа продажи, списания и т.п.). В каждом документе указано кол-во и цена. Расход делается по методу ФИФО, соответственно тек. цена продукта должна браться из того документа поступления, на котором на данный момент находится указатель ФИФО. Пример:
    + поступило 3 шт по цене 5
    + поступило 4 шт по цене 6
    - 2 шт по цене 5 (так как по ФИФО расходуем первую закупку, и в конце операции от нее еще осталась 1 шт)
    - 2 шт по цене 5 и 6 (1 шт добрали из первой закупки по цене 5 и 1 шт - из второй по цене 6)

    и т.д. расход всё время догоняет приход и цена рассчитывается в зависимости от того, товары какой закупки мы расходуем в каждом конкретном расходе.

    Сложность задачи несколько возрастает из-за того, что юзер например может удалить любой из документов расхода-прихода, и указатель ФИФО соответственно может сдвинуться вперед или назад.

    Цель: быстро уметь сводить по продукту все его приходы/расходы и определять где сейчас находится указатель.

    Могли бы вы подсказать или дать направление, типичная ли это задача для КликХауза? Если да, то должен ли я использовать тут какой-то из специализированных движков (AggregatingMerge?) или дефолтный Merge тут лучше? Или может надо иметь 2 таблицы - одна со всеми приходами и другая со всеми расходами - и как-то динамически запросом накладывать все расходы на все приходы.

    Спасибо.
  • КХ очень для этого подходит, вот только сделать партиальный учет на нем... пока не видел реализаций.
  • @kinzarra ↶ Reply to #92005 #92011 11:23 AM, 08 Mar 2019
    инстанса
  • @kinzarra ↶ Reply to #92008 #92012 11:25 AM, 08 Mar 2019
    /var/lib/clickhouse - такой нет
    /etc/clickhouse-server/ - ну мой старый конфиг и users.xml
  • https://t.me/clickhouse_ru
    Инсталяция случайно не в докере?
  • @kinzarra #92014 11:26 AM, 08 Mar 2019
    нет, не в докере
  • @kinzarra #92015 11:26 AM, 08 Mar 2019
    я докер пока плохо знаю не лезу
  • https://t.me/clickhouse_ru
    Это странно, может конечно я не знаком со всеми нюансами кликхауса, но вроде как во всех дистрах он создает директории для БД по пути /var/lib/clickhouse

    У меня сейчас доступа нет к серверу, но думаю где-то в конфиге это значение можно предопределить
  • @kinzarra ↶ Reply to #92016 #92017 11:44 AM, 08 Mar 2019
    понял, спасибо, буду думать в след раз сделаю бекап партиции
  • https://t.me/clickhouse_ru
    @denissa182 #92018 11:45 AM, 08 Mar 2019
    Народ, поделитесь практиками, как бекапите clickhouse и автоматизируете этот процесс?
  • https://t.me/clickhouse_ru
    @denissa182 #92019 11:47 AM, 08 Mar 2019
    Ну в принципе автоматизировать как его я понимаю, но вот в отличии от той же mongodb или mariadb насколько понимаю у кликхауса нет утилит для бекапа
  • https://t.me/clickhouse_ru
    Поищи, я кидал кусок скрипта для бекапа
  • https://t.me/clickhouse_ru
    Там на основе FREEZE сделано
  • https://t.me/clickhouse_ru
    Чет не вижу
  • https://t.me/clickhouse_ru
    Хм... Ладно, ща на работу залезу, ещё раз кину...
  • https://t.me/clickhouse_ru
    Окей, спс.
  • https://t.me/clickhouse_ru
    do_backup() {
    QUERY="SELECT database, table, partition FROM system.parts WHERE active GROUP BY partition, table, database ORDER BY database ASC, table ASC, partition ASC FORMAT CSV"
    CMD="/usr/bin/clickhouse-client"

    trap "echo 'cleanup shadow'; touch /var/lib/clickhouse/shadow/BAK && rm -rf /var/lib/clickhouse/shadow/*" 0

    echo "create shadow"
    for row in $(echo "$QUERY" | "$CMD"); do
    db="$(echo $row | cut -f1 -d',' | sed -e 's/\"//g')"
    table="$(echo $row | cut -f2 -d',' | sed -e 's/\"//g')"
    part="$(echo $row | cut -f3 -d',' | sed -e 's/\"//g' -e s/\'//g)"
    echo "ALTER TABLE ${db}.${table} FREEZE PARTITION '${part}';"
    done | $CMD -n

    echo "make file backup"
    /opt/backup/server_backup
    }
  • https://t.me/clickhouse_ru
    server_backup - отдельный скрипт, который сохраняет файлы в хранилище.
  • https://t.me/clickhouse_ru
    По-хорошему, разбор строки на поля можно было бы сделать по-другому, но было лень разбираться.
  • https://t.me/clickhouse_ru
    @denissa182 #92028 11:57 AM, 08 Mar 2019
    Спасибо, гляну
  • https://t.me/clickhouse_ru
    На всякий случай: писалось на bash, а не каком-то другом sh
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #92018 #92030 12:18 PM, 08 Mar 2019
    Есть вот такая утилита https://github.com/AlexAkulov/clickhouse-backup .
    GitHub - AlexAkulov/clickhouse-backup: Tool for easy ClickHouse backup and restore with cloud storages support

    Tool for easy ClickHouse backup and restore with cloud storages support - GitHub - AlexAkulov/clickhouse-backup: Tool for easy ClickHouse backup and restore with cloud storages support

  • https://t.me/clickhouse_ru
    @madm1ke #92031 12:18 PM, 08 Mar 2019
    Привет!
    Обнаружил странную багофичу. Если на репликах несколько таблиц, часть из которых - семплированы, а часть - нет, то пользоваться settings.parallel_replicas_count > 1 становится невозможно - запросы падают на несемплированных таблицах.

    Есть предложение вот тут
    https://github.com/yandex/ClickHouse/blob/master/dbms/src/Storages/MergeTree/MergeTreeDataSelectExecutor.cpp#L371
    изменить условие
    bool use_sampling = relative_sample_size > 0 || settings.parallel_replicas_count > 1;
    на
    bool use_sampling = relative_sample_size > 0 || (settings.parallel_replicas_count > 1 && data.supportsSampling());

    Вопрос - сделано это было по недосмотру, или осознанно, с какой-то целью?
    ClickHouse/ClickHouse

    ClickHouse is a free analytic DBMS for big data. Contribute to ClickHouse/ClickHouse development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    Да я уже накопировал ей) Сейчас хочется более лучше понимать этот процесс
  • https://t.me/clickhouse_ru
    @iK0nst #92033 01:05 PM, 08 Mar 2019
    Кто-то в курсе, есть ли способ из mssql делать нативные выборки из кх? Смысл - надо почикать исторические данные из сикеля за 15 лет, а это миллиарды строк, но их нельзя удалять и они должны быть доступны всегда. Вот хочется невозможного, но вдруг есть какие-то фокусы?)
  • https://t.me/clickhouse_ru
    @rheinx ↶ Reply to #92033 #92034 02:10 PM, 08 Mar 2019
    в PG для этого есть механизм Foreign Data Wrapper. Посмотрите про mssql, там я думаю должно быть что-то похожее.
  • https://t.me/clickhouse_ru
    @iK0nst ↶ Reply to #92034 #92035 02:10 PM, 08 Mar 2019
    Хм, не знал. Спасибо за наводку, погляжу
  • https://t.me/clickhouse_ru
    @ldviolet ↶ Reply to #91831 #92036 02:41 PM, 08 Mar 2019
    Ретроградская вакансия без Rustlang.
  • https://t.me/clickhouse_ru
    @nikitosiusis #92037 02:48 PM, 08 Mar 2019
    и вилки нет
  • Попробуйте табличной функцией odbc() затащить в КХ.
  • @mfilimonov #92039 02:52 PM, 08 Mar 2019
    (если я правильно понял в каком направлении вы хотите забирать данные)
  • Есть инструкция для разработчиков:
    https://github.com/yandex/ClickHouse/blob/master/dbms/tests/instructions/developer_instruction_ru.md
  • @milovidov_an #92041 03:05 PM, 08 Mar 2019
    А также видео с обзором архитектуры: https://www.youtube.com/watch?v=g5CDi8Nbut4
    И, отдельно, про MergeTree и репликацию:
    https://www.youtube.com/watch?v=C17XU8JXdcU
  • @milovidov_an #92042 03:05 PM, 08 Mar 2019
    Лайв стрим, где решается какая-то задача - ещё пока не докатились до этого.
  • Есть аналог ClickHouse на Rust: https://github.com/cswinter/LocustDB
    Разрабатывается энтузиастом из DropBox. Будем наблюдать - и, конечно, брать все хорошие идеи.
    GitHub - cswinter/LocustDB: Massively parallel, high performance analytics database that will rapidly devour all of your data.

    Massively parallel, high performance analytics database that will rapidly devour all of your data. - GitHub - cswinter/LocustDB: Massively parallel, high performance analytics database that will ra...

  • https://t.me/clickhouse_ru
    @ployd #92044 03:08 PM, 08 Mar 2019
    Ну, аналог это не кликхаус, мы же понимаем =(
  • а Кликхаус переписанный на руст - всё ещё Кликхаус? :)
  • https://t.me/clickhouse_ru
    @ployd ↶ Reply to #92045 #92046 03:10 PM, 08 Mar 2019
    Если API тот же, принцип работы тот же и тесты проходят, то да, это кликхаус.
  • https://t.me/clickhouse_ru
    @vstepankov #92047 03:10 PM, 08 Mar 2019
    принцип утки?
  • https://t.me/clickhouse_ru
    @ployd #92048 03:11 PM, 08 Mar 2019
    Именно
  • https://t.me/clickhouse_ru
    @den_crane #92049 03:11 PM, 08 Mar 2019
    насколько я помню LocustDB это in-memory база. Он запросы по данным с диска не умел (умел персистить для рестарта).
  • Эх, любите же вы устранять "фатальные недостатки" :)
  • @mfilimonov #92051 03:11 PM, 08 Mar 2019
    То зукипер надо устранить, то C++ :)
  • https://t.me/clickhouse_ru
    @ployd ↶ Reply to #92050 #92052 03:12 PM, 08 Mar 2019
    Ну, хочется меньше потенциальных CVE. Речь не о RIIR (rewrite it in rust) ради RIIR
  • https://t.me/clickhouse_ru
    видимо, умеет со второй половины 2018 точно

    Storage backend

    LocustDB has support for persisting data to disk and running queries on data stored on disk.
  • https://t.me/clickhouse_ru
    @nikitosiusis #92054 03:12 PM, 08 Mar 2019
    оно использует роксдб)
  • https://t.me/clickhouse_ru
    @ldviolet ↶ Reply to #92051 #92055 03:35 PM, 08 Mar 2019
    Скорее заменить зукипер растовым вариантом, а там как пойдет.
  • https://t.me/clickhouse_ru
    @nikitosiusis #92056 03:42 PM, 08 Mar 2019
    уже же была попытка заменить его zetcd
  • https://t.me/clickhouse_ru
    @nikitosiusis #92057 03:42 PM, 08 Mar 2019
    там что-то пошло не так
  • https://t.me/clickhouse_ru
    @ldviolet #92058 03:44 PM, 08 Mar 2019
    Проблема наверное в etcd и сырости zetcd.
  • https://t.me/clickhouse_ru
    @kshvakov #92059 03:49 PM, 08 Mar 2019
    Проблема не в etcd, а в zetcd, штуки разные и внутри там идет натягивание совы на глобус. В принципе, если есть интерес, можно довести штуку до ума. Но, опять же, это только добавить "подземного стука" при траблшутинге проблем с КХ
  • @profile_undefined #92060 03:54 PM, 08 Mar 2019
    @milovidov_an спасибо за ответ!
  • https://t.me/clickhouse_ru
    @kshvakov #92061 03:58 PM, 08 Mar 2019
    Кстати, где-то была задача на создание обобщенного интерфейса, но пока везде ZK (https://github.com/yandex/ClickHouse/search?p=1&q=ZooKeeper&unscoped_q=ZooKeeper). Можно этот самый интерфейс сделать и заиспользовать ZooKeeper, если все ОК то можно имплементировать бекенды для чего угодно.
    yandex/ClickHouse

    ClickHouse is a free analytic DBMS for big data. Contribute to yandex/ClickHouse development by creating an account on GitHub.

  • @mfilimonov #92062 04:01 PM, 08 Mar 2019
    Сейчас взаимодействие с ZooKeeper разделено на два интерфейса: "бэкенд" и "фронтенд". ClickHouse использует фронтенд, который называется просто ZooKeeper (но внутри может быть что угодно). Фронтенд использует бэкенд через абстрактный интерфейс IKeeper. Этот интерфейс содержит минимум методов, необходимых для взаимодействия с ZooKeeper или другой системой. У IKeeper сейчас есть одна реализация - ZooKeeperImpl.

    Всё это усложнение нужно для того, чтобы постепенно сделать то, что вы хотите - возможность работать не только с ZooKeeper. Но для начала сделаем реализацию IKeeper для тестирования - чтобы проще проверять всякие необычные сценарии.

    PS. Мы открыли чат для контрибьюторов ClickHouse - чтобы можно было задавать вопросы по кодовой базе:
    https://t.me/joinchat/B44Vi1T-PQA97S02SBwXIw
  • Это уже сделано. Там этот "обобщенный интерфейс" назван ровно так же как единственная его имплементация, т.е. зукипер :)
  • @mfilimonov #92064 04:05 PM, 08 Mar 2019
    В принципе можно пробовать сделать альтернативные бэкенды, если у кого-то есть на это время и силы. Только насколько я понимаю там и так нужно реализовать абстракции из мира зукипера в другой системе.
  • @mfilimonov #92065 04:05 PM, 08 Mar 2019
    По поводу zetcd. Он может работать (хоть и неэффективно). Сейчас не работает, потому что присылает неожиданный ответ на multi транзакцию. Исправить будет легко (можно как на стороне zetcd, так и на стороне ClickHouse).
  • https://t.me/clickhouse_ru
    похоже на правду, cc @proller @milovidov_an
  • https://t.me/clickhouse_ru
    @strangeqargo #92067 04:38 PM, 08 Mar 2019
    перетащу в кодовую базу
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #92063 #92068 04:49 PM, 08 Mar 2019
    Ну, не очень то он и обобщенный, очень много ZK зависимого, вот пример https://github.com/yandex/ClickHouse/blob/a0d8743c4c1249f1e2394c6eb47bbbfcc83c502d/dbms/src/Storages/MergeTree/ReplicatedMergeTreeBlockOutputStream.cpp#L63 . И как раз чтоб реализовывать функциональность в других бекендах нудно бы спрятать все эти выборы лидеров/кворум и т.д. за инерфейс
    yandex/ClickHouse

    ClickHouse is a free analytic DBMS for big data. Contribute to yandex/ClickHouse development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #92065 #92069 04:51 PM, 08 Mar 2019
    zetcd посмотрю и поправлю если пробдема в multi )
  • https://t.me/clickhouse_ru
    @kshvakov #92070 05:09 PM, 08 Mar 2019
    @milovidov_an, а в чем неожиданный ответ от zetcd при multi запросе, как фоспроизвести, я у них по коду нашел тесты на multi, возможно они что-то не покрывают?
  • https://t.me/clickhouse_ru
    @nikitosiusis #92071 05:11 PM, 08 Mar 2019
    в гитхабе есть иссуе про зетцд
  • https://t.me/clickhouse_ru
    @ldviolet ↶ Reply to #92071 #92072 05:30 PM, 08 Mar 2019
    И фикс вроде есть https://github.com/etcd-io/zetcd/pull/102
    Issue98fix by hokie228 · Pull Request #102 · etcd-io/zetcd

    This fixes the encoding of a partial response to a multi-op request where one succeeds but another fails. The current implementation returns an error with no response, but Kafka expects Zookeeper ...

  • https://t.me/clickhouse_ru
    @kshvakov #92073 05:38 PM, 08 Mar 2019
    Выглядит хорошо.
  • @bkosun #92074 06:01 PM, 08 Mar 2019
    Привет!

    Есть MariaDB 10.3, пробую установить clickhouse-mysql (https://github.com/Altinity/clickhouse-mysql-data-reader)

    yum install -y clickhouse-mysql

    Получаю ошибку:
    Error: Package: clickhouse-mysql-0.0.20180319-1.noarch (Altinity_clickhouse)
    Requires: mysql-community-devel
    You could try using --skip-broken to work around the problem
    You could try running: rpm -Va --nofiles --nodigest

    Не получится работать с MariaDB?
  • Requires: mysql-community-devel
  • @bkosun #92076 06:52 PM, 08 Mar 2019
    Я понимаю, но такой пакет для MariaDB отсутствует, а установщик требует именно mysql-community-devel
  • MariaDB = MySQL
  • @bkosun #92078 06:57 PM, 08 Mar 2019
    yum install mysql-community-devel
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
    * base: mirror.sale-dedic.com
    * epel: ru.download.ispsystem.com
    * extras: mirror.reconn.ru
    * ispsystem-5.191: ru.download.ispsystem.com
    * ispsystem-base: ru.download.ispsystem.com
    * remi-php56: mirror.reconn.ru
    * remi-safe: mirror.reconn.ru
    * updates: centos.mirror.gnu.fi
    Altinity_clickhouse/x86_64/signature | 833 B 00:00:00
    Altinity_clickhouse/x86_64/signature | 1.0 kB 00:00:00 !!!
    Altinity_clickhouse-source/signature | 836 B 00:00:00
    Altinity_clickhouse-source/signature | 1.0 kB 00:00:00 !!!
    No package mysql-community-devel available.
    Error: Nothing to do
  • @bkosun #92079 06:59 PM, 08 Mar 2019
    Там по идее должно хватить mysql-devel, этот пакет установлен установлен:

    yum install mysql-devel
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
    * base: mirror.sale-dedic.com
    * epel: ru.download.ispsystem.com
    * extras: mirror.reconn.ru
    * ispsystem-5.191: ru.download.ispsystem.com
    * ispsystem-base: ru.download.ispsystem.com
    * remi-php56: mirror.reconn.ru
    * remi-safe: mirror.reconn.ru
    * updates: centos.mirror.gnu.fi
    Package MariaDB-devel-10.3.13-1.el7.centos.x86_64 already installed and latest version
    Nothing to do

    Но установщик хочет именно mysql-community-devel
  • https://t.me/clickhouse_ru
    https://github.com/larsks/fakeprovide (погуглил для себя)
    larsks/fakeprovide

    A tool for generating "fake" rpm packages to resolve otherwise intractable dependency issues. - larsks/fakeprovide

  • https://t.me/clickhouse_ru
    @strangeqargo #92081 06:59 PM, 08 Mar 2019
    как раз для случая когда пакет есть, а вендор зафакапил его проверку, видимо
  • GitHub - Altinity/clickhouse-mysql-data-reader: utility to read mysql data

    utility to read mysql data. Contribute to Altinity/clickhouse-mysql-data-reader development by creating an account on GitHub.

  • @bkosun ↶ Reply to #92081 #92083 07:02 PM, 08 Mar 2019
    Хмм.. спасибо, буду пробовать, если не получится установить нужные зависимости.
  • https://github.com/Altinity/clickhouse-mysql-data-reader#pypi-installation

    Следуйте пошагово, вы похоже не добавили нужные репы в систему...
    GitHub - Altinity/clickhouse-mysql-data-reader: utility to read mysql data

    utility to read mysql data. Contribute to Altinity/clickhouse-mysql-data-reader development by creating an account on GitHub.

  • @bkosun ↶ Reply to #92082 #92085 07:03 PM, 08 Mar 2019
    А установка этого пакета не нарушит работу MariaDB?
  • @bkosun #92086 07:04 PM, 08 Mar 2019
    Я устанавливал через RPM
  • Не должна. Вы же из марии будете копировать в КХ?
  • @bkosun #92088 07:05 PM, 08 Mar 2019
    Да, просто этот пакет размещен на dev.mysql.com
  • @bkosun #92089 07:10 PM, 08 Mar 2019
    Попробовал установить - не получилось, куча ошибок о конфликте:

    Transaction check error:
    file /usr/share/mysql/charsets/Index.xml from install of mysql-community-common-5.7.25-1.el7.x86_64 conflicts with file from package MariaDB-common-10.3.13-1.el7.centos.x86_64
    file /usr/share/mysql/charsets/armscii8.xml from install of mysql-community-common-5.7.25-1.el7.x86_64 conflicts with file from package MariaDB-common-10.3.13-1.el7.centos.x86_6
    ....
  • @238773844 #92090 10:12 PM, 08 Mar 2019
    можно ли из трейс логов убрать пароли/логины которые прилетают через JDBC подкключения и оставить план запроса?
  • @238773844 #92091 10:17 PM, 08 Mar 2019
    + хотел в моинторигне настроить сбор статистики по партициям, создал юзера для маониторинга без доступа в базкам. метрики оно собираает, только вот не видит записей в system.parts =( Давать доступ на базки для юзаера для мониторинга не хочется =(. Имеет ли смысл сабмитить импрувмент в git?
  • @238773844 #92092 10:19 PM, 08 Mar 2019
    И вообще кто и что мониторит? Какие трешхолды ставите?
  • https://t.me/clickhouse_ru
    @ldviolet ↶ Reply to #92081 #92093 10:32 PM, 08 Mar 2019
    clickhouse-mysql.spec есть
  • https://t.me/clickhouse_ru
    @ldviolet ↶ Reply to #92089 #92094 10:40 PM, 08 Mar 2019
    Requires: mysql-community-devel
    замени на mysql-compat-client
  • https://t.me/clickhouse_ru
    @ldviolet #92095 10:41 PM, 08 Mar 2019
    ./pack/clickhouse-mysql.spec (mysql-community-devel -> mysql-compat-client)
    https://github.com/Altinity/clickhouse-mysql-data-reader#dev-installation
    GitHub - Altinity/clickhouse-mysql-data-reader: utility to read mysql data

    utility to read mysql data. Contribute to Altinity/clickhouse-mysql-data-reader development by creating an account on GitHub.

  • @bkosun #92096 10:45 PM, 08 Mar 2019
    Такого пакета тоже нет:

    yum install mysql-compat-client
    ...
    No package mysql-compat-client available.
    Error: Nothing to do

    Но я уже сделал замену mysql-community-devel на mysql-devel и установил вручную, сервис установился, но запустить пока что не получилось.

    #service clickhouse-mysql start
    Starting clickhouse-mysql
    Traceback (most recent call last):
    File "/usr/bin/clickhouse-mysql", line 6, in <module>
    from pkg_resources import load_entry_point
    File "/usr/lib/python3.4/site-packages/pkg_resources/__init__.py", line 3095, in <module>
    @_call_aside
    File "/usr/lib/python3.4/site-packages/pkg_resources/__init__.py", line 3079, in _call_aside
    f(*args, **kwargs)
    File "/usr/lib/python3.4/site-packages/pkg_resources/__init__.py", line 3108, in _initialize_master_working_set
    working_set = WorkingSet._build_master()
    File "/usr/lib/python3.4/site-packages/pkg_resources/__init__.py", line 570, in _build_master
    ws.require(__requires__)
    File "/usr/lib/python3.4/site-packages/pkg_resources/__init__.py", line 888, in require
    needed = self.resolve(parse_requirements(requirements))
    File "/usr/lib/python3.4/site-packages/pkg_resources/__init__.py", line 774, in resolve
    raise DistributionNotFound(req, requirers)
    pkg_resources.DistributionNotFound: The 'mysqlclient' distribution was not found and is required by clickhouse-mysql
    /
    ERROR: unable to start clickhouse-mysql
    Check log file(s)
    /var/log/clickhouse-mysql/clickhouse-mysql.log

    А при попытке установить mysqlclient:

    Command "/usr/bin/python3.4 -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-bd6uicmz/mysqlclient/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-record-lddqwqq2/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-install-bd6uicmz/mysqlclient/
  • https://t.me/clickhouse_ru
    @ldviolet #92097 10:49 PM, 08 Mar 2019
    Сейчас попробую сбилдить в контейнере минуту.
  • @bkosun #92098 10:51 PM, 08 Mar 2019
    👌
  • @bkosun #92099 11:56 PM, 08 Mar 2019
    @ldviolet помог решить вопрос в ЛС, достаточно было установить python34-mysql (пакет mysqlclient подтянется автоматически)

    В итоге:

    1. Установил clickhouse-mysql-data-reader по этой инстркции https://github.com/Altinity/clickhouse-mysql-data-reader#dev-installation

    Обратите внимание! Перед установкой нужно вручную подправить зависимости (mysql-community-devel -> mysql-devel)

    https://github.com/Altinity/clickhouse-mysql-data-reader/blob/57934187175822bddc0800eda47322d5efc4f2ff/pack/clickhouse-mysql.spec#L24

    2. После установки вручную установил пакеты:

    yum install python-devel
    yum install python34-mysql

    3. Profit

    Всем спасибо за помощь! :)
    GitHub - Altinity/clickhouse-mysql-data-reader: utility to read mysql data

    utility to read mysql data. Contribute to Altinity/clickhouse-mysql-data-reader development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    @ldviolet #92100 11:57 PM, 08 Mar 2019
    *-devel нужен только в момент сборки/тестинга пакета в CI/CD.
  • @bkosun #92102 11:59 PM, 08 Mar 2019
    Да, спасибо за уточнение :)
  • 09 March 2019 (41 messages)
  • Вот тут:
    https://github.com/yandex/ClickHouse/issues/777#issuecomment-382612686

    Unexpected op_num received at the end of results for multi transaction (Marshalling error)

    Посмотрите функцию ZooKeeperMultiResponse::readImpl - что она ожидает, что отвечает ZooKeeper и что отвечает zetcd.
    clickhouse core dumped when try work over zetcd · Issue #777 · yandex/ClickHouse

    i create repo https://github.com/Slach/clickhouse-zetcd for reproducing stand clickhouse + zetcd latest clickhouse Dockerimage core dumped after run following query sudo docker-compose run clickhou...

  • @milovidov_an #92104 01:00 AM, 09 Mar 2019
    Пример того, что отвечает ZooKeeper приведён наверху в комментарии

    Example of multi response
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #92104 #92106 05:38 AM, 09 Mar 2019
    Спасибо
  • https://t.me/clickhouse_ru
    @hide100 #92107 06:06 AM, 09 Mar 2019
    Влияет ли на производительность количество партиций? Например будет ли разница между (day,id) и (month,id), селекты раз в 10 секунд за последние 12 часов(1.5к) по каждому id(счётчику).
  • Да, довольно сильно. Если сильно крупные партии сделать - то будет много лишних данных сканировать (если конечно по первичному индексу не заузит выборку). Если слишком мелкие - то будет слишком много файлов/каталогов и файловая система начнет жутко тормозить.
  • @mfilimonov #92109 06:51 AM, 09 Mar 2019
    Обычно id счетчика лучше добавлять не в ключ партиционирования, а на первом месте в первичном ключе
  • https://t.me/clickhouse_ru
    @hide100 #92110 08:38 AM, 09 Mar 2019
    Спасибо, то есть если пачки приходят раз в 30 сек по 1 на каждый счётчик, то при использовании id в ключе партицирования приведет к мелким пачкам из 1 записи и все встанет. Лучше будет id primary key, а партицировать по YYYYMMDD, order by dateTime.
  • @random_id #92111 02:02 PM, 09 Mar 2019
    Ребята, по скрину подскажите пожалуйста что за тулза
  • @xboston ↶ Reply to #92111 #92117 02:21 PM, 09 Mar 2019
    VKCOM/lighthouse

    Lightweight interface for ClickHouse. Contribute to VKCOM/lighthouse development by creating an account on GitHub.

  • Спасибо друг 👍
  • @random_id #92119 03:06 PM, 09 Mar 2019
    @xboston
    Фалькон ещё контрибьютишь?
  • @xboston ↶ Reply to #92119 #92120 03:07 PM, 09 Mar 2019
    Опа =)
    Не, давно уже нет
  • :)
  • Только я не понимаю, почему при вопросах с фастхттп не написали команде фастхттп, а сделали костыль? 😁
  • https://t.me/clickhouse_ru
    Не подскажете, команда fasthttp это кто :)?
  • https://t.me/clickhouse_ru
    @yourock88 #92124 04:59 PM, 09 Mar 2019
    Я так сделал, потому что сначала решил попробовать доработать fasthttp, чтобы добавить туда поддержку стримов, увидел, что там очень много работы, и, поскольку основной задачей было уменьшить расход памяти, сделал костыль, о чем честно рассказал. Патчить fasthttp было бы намного затратнее по ресурсам, хотя я так изначально и планировал
  • Например, я 🙂
  • Исторически, у нас же буферизация тоже не просто так была сделана — это помогает в TFB, где небольшой хттп пайплайн, но можно придумать опцию, чтобы её убирать и стримить чаще наружу. Плюс я недавно сделал опцию, которая позволяет сэкономить тонну горутин и памяти — просто оставляет соединение после hijack открытым, а значит ты можешь пихнуть соединение в epoll или ещё что-то такое, а из хендлера просто выйти)
  • @madgopher #92128 05:15 PM, 09 Mar 2019
    Тут развернуться можно)
  • https://t.me/clickhouse_ru
    Я не помню деталей сейчас, если честно, но вроде у вас есть тикет про то, что хорошо бы добавить возможность стримить тело запроса, как и тело ответа тоже. Потому что в моем случае как раз большие ответы и большие тела запросов это не редкость :)
  • По-моему уже давно нет 🙃
  • https://t.me/clickhouse_ru
    А не подскажете тогда, как мне в fasthttp стримить ответ пользователю вместо буферизации? Мне по сути в этом месте нужно проксирование через fasthttp без буферизации.
  • https://t.me/clickhouse_ru
    @yourock88 #92132 05:58 PM, 09 Mar 2019
    Я вижу как минимум этот issue: https://github.com/valyala/fasthttp/issues/411 , и он до сих пор открыт.
    Reponse body io.Reader · Issue #411 · valyala/fasthttp

    Hey guys. How to set custom response body writer? I've tried to use SetBodyStream, but i don't see any body readers from response which i need to pass in io.Reader. P.S I'm ...

  • Там вопрос о чтении response, а не о записи)
  • https://t.me/clickhouse_ru
    Для проксирования мне нужно и то и другое 🙂
  • Я сейчас не у ноута, как буду опять у него — подскажу
  • https://t.me/clickhouse_ru
    Спасибо
  • А, у вас же прокся, точно
    Можно будет и попатчить по пути фаст, сделать опцию на эту тему
  • https://t.me/clickhouse_ru
    @siregaadm #92138 07:18 PM, 09 Mar 2019
    Господа, товарищи, появился вопрос - сейчас играюсь с materialized view (Summing) поверх исходной mergeTree таблицы, и обнаружил, что если в исходной таблице провести мутацию, то это не отражается во вью.
    В связи с этим вопрос: это я что-то не так делаю, или это так и задумано или это еще не доделано? Если последнее, то когда можно ожидать, что будет доделано?
    Заранее благодарен за внимание и ответ.
  • @githubreleases_bot #92139 b o t 07:27 PM, 09 Mar 2019
    yandex/ClickHouse was tagged: v19.4.0.49-stable
    Link: https://github.com/yandex/ClickHouse/releases/tag/v19.4.0.49-stable
    Release notes:
    v19.4.0.49-stable
    yandex/ClickHouse

    ClickHouse is a free analytic DBMS for big data. Contribute to yandex/ClickHouse development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    @siregaadm #92140 07:32 PM, 09 Mar 2019
    Спасибо, попробую эту версию
  • https://t.me/clickhouse_ru
    @yarlanzey #92141 07:33 PM, 09 Mar 2019
    Это бот, он просто сказал о новой версии)
  • https://t.me/clickhouse_ru
    @siregaadm #92142 07:34 PM, 09 Mar 2019
    Аа)
  • https://t.me/clickhouse_ru
    @siregaadm #92143 07:35 PM, 09 Mar 2019
    Не обратил внимание на автора поста). Думал, что кто-то просто очень немногословен
  • В общем случае невозможно "поправить" данные в матвью при мутации в оригинальной таблице. Поэтому нет и не предвидится. Запускайте ещё одну мутацию на матвью вручную.
  • https://t.me/clickhouse_ru
    @siregaadm #92145 08:29 PM, 09 Mar 2019
    Понятно. Хотя вроде даже и очевидно, что нельзя - матвью как правило содержит агрегаты над исходной таблицей, и как исходная мутация должна сказаться на этом произвольном селекте, совсем не очевидно...
  • https://t.me/clickhouse_ru
    тут на днях было хорошее объяснение откуда и когда матвью берёт данные.
    было сказано, что берет из буфера при вставке.
    Отсюда сразу логически вытекает, что все остальные процессы, КРОМЕ вставки в таблицу - на матвью не действуют
  • https://t.me/clickhouse_ru
    то что внутренняя таблица хранящая данные MV никак не связана с оригинальной таблицей -- это преимущество.

    плюшки:
    * можно писать в одну MV из нескольких таблиц
    * можно хранить данные в MV вечно, а в оригинальной таблице -- короткий срок
    * можно не хранить данные в оригинальной таблице (engine = null)
    * можно хранить данные данные в MV на другой ноде
    * можно сделать нешардированное MV над шардированной таблицей (убер фича!!! маленькие агрегаты можно читать на любой ноде)
    * можно шардировать данные MV по другому ключу шардирования
  • https://t.me/clickhouse_ru
    @siregaadm #92148 08:41 PM, 09 Mar 2019
    Да, я понимаю. MV - это как полноценная таблица, наполняющаяся через insert trigger в род. таблице, который содержит в себе наш кастомный селект. Это если проводить аналогию с обычными БД
  • 10 March 2019 (23 messages)
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #92148 #92150 05:43 AM, 10 Mar 2019
    Только ваш кастомный селект будет применен не в родительской таблице, а ровно к тем данным что вы вставляете
  • @oleg_kozlyuk #92151 08:14 AM, 10 Mar 2019
    Можно заинсертить имеющиеся данные если указать POPULATE при создании MV: https://clickhouse.yandex/docs/en/query_language/create/#create-view
  • Можно, но неудобно. Если исходных данных много, то будет долго и идущие в фоне инсерты не попадут в MV ЕМНИП. УДобнее просто создать без POPULATE и ручками сделать backfill, вставляя нужные данные с помощью INSERT ... SELECT.
  • @oleg_kozlyuk #92153 08:29 AM, 10 Mar 2019
    А инсерт тоже можно сделать? Не знал. Тогда вообще замечательно
  • @mfilimonov #92154 08:33 AM, 10 Mar 2019
    Имхо удобнее всего создавать матвью в существующую таблицу (синтаксис `CREATE MATERIALIZED VIEW ... TO ...`). Тогда все очень понятно кто и куда и что копирует. И никаких "непонятных" .inner таблиц.
  • плюшки:
    * можно писать в одну MV из
    нескольких таблиц

    Увы, но писать можно только в таблицу, в которую грузит мат представление, но вы не сможете объеденить несколько таблиц на этапе подготовки данных, к сожалению.
  • @romamolochko #92156 11:24 AM, 10 Mar 2019
    Joined.
  • @730413284 #92157 12:18 PM, 10 Mar 2019
    Joined.
  • @dosereda #92158 01:30 PM, 10 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
    я про https://gist.github.com/den-crane/005633470c70877dd28c00211cd9fcfb

    create materialized view MVA to storeABC as select A ABC from tableA;
    create materialized view MVB to storeABC as select B ABC from tableB;
    create materialized view MVC to storeABC as select C ABC from tableC;
  • "Писать в одну MV" для МЕНЯ значит:
    create mat. view xxx as
    select * from tab1
    join tab2 on tab1.id=tab2.id_code;
  • @571805847 #92161 01:54 PM, 10 Mar 2019
    Довольно сложный механизм... на мой взгляд, конечно.
  • https://t.me/clickhouse_ru
    Ну естественно в этом случае работает только при вставке в левую таблицу.
    Оно же просто по памяти будет падать если сделать и для правой (например сделать еще одну MV в которой написать таблицы наоборот).
  • Давайте начнем с того, что для КХ это просто невозможно.
  • @571805847 #92166 02:02 PM, 10 Mar 2019
    @den_crane Давайте перестанем натягивать одежды реляционных СУБД на КХ.
  • https://t.me/clickhouse_ru
    это возможно, просто нафиг не нужно
    create table tableL (A String, L String) Engine=MergeTree order by tuple();
    create table tableR (A String, R String) Engine=MergeTree order by tuple();
    create table storeLR(A String, L String, R String) Engine=MergeTree order by tuple();
    create materialized view MVL to storeLR as select A,L,R from tableL join tableR using A;
    create materialized view MVR to storeLR as select A,L,R from tableR join tableL using A;
    insert into tableL values('A', 'A');
    insert into tableR values('A', 'B');
    insert into tableL values('A', 'C');
    insert into tableR values('A', 'D');

    select * from storeLR
    ┌─A─┬─L─┬─R─┐
    │ A │ A │ B │
    │ A │ C │ B │
    │ A │ C │ D │
    │ A │ A │ D │
    └───┴───┴───┘
  • Здорово! И зачем предлагает его как рабочее средство решения проблем и тем более называть это "плюшкой"?
  • @571805847 #92173 02:12 PM, 10 Mar 2019
    Плюшка это что-то приятное и полезное.
  • https://t.me/clickhouse_ru
    вы неправильно меня поняли, плюшкой я назвал возможность 'union all'
    create materialized view MVA to storeABC as select A ABC from tableA;
    create materialized view MVB to storeABC as select B ABC from tableB;
    create materialized view MVC to storeABC as select C ABC from tableC;

    и я этим пользуюсь, например в ОДНО summing MV кладутся данные, которые вырастают и абсолютно разных таблиц, с разной структурой.
  • Mea culpa. Вероятно, это у меня не верное восприятие.
  • https://t.me/clickhouse_ru
    Любопытная фича. Спасибо за наводку
  • @geokott #92178 03:10 PM, 10 Mar 2019
    Joined.
  • @maxulan #92179 05:12 PM, 10 Mar 2019
    Joined.
  • 11 March 2019 (235 messages)
  • https://t.me/clickhouse_ru
    @idcooldi #92182 04:42 AM, 11 Mar 2019
    Всем привет, подскажите какую в основном информацию хранят в clickhouse? Часто пишут стек PostgreSQL и ClickHouse, как идет разделение и выбор храненнимой информации?
  • https://t.me/clickhouse_ru
    @stufently #92183 05:28 AM, 11 Mar 2019
    В основном таймсериес
  • https://t.me/clickhouse_ru
    @stufently #92184 05:28 AM, 11 Mar 2019
    Вместо постгреса можно любую скл базу вписать часто
  • https://t.me/clickhouse_ru
    @hoha_ftf #92185 05:29 AM, 11 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
    @hoha_ftf #92186 05:30 AM, 11 Mar 2019
    /stat@combot
  • https://t.me/clickhouse_ru
    @success_dca #92188 05:57 AM, 11 Mar 2019
    Joined.
  • @400010943 #92189 06:32 AM, 11 Mar 2019
    Joined.
  • @400010943 #92190 06:34 AM, 11 Mar 2019
    Всем привет!
    Подскажите пожалуйста, будет ли автоматический решардинг, если да то в каком обозримом желательно будущем?
    Спасибо!
  • https://t.me/clickhouse_ru
    @stufently #92191 06:37 AM, 11 Mar 2019
    а зачем он ? у вас же ноды не динамически появляются, а без этого у вас и так данные будут равномерно распределены
  • https://t.me/clickhouse_ru
    @stufently #92192 06:38 AM, 11 Mar 2019
    а при добавлении новых можно руками запустить решардинг
  • https://t.me/clickhouse_ru
    @stufently #92193 06:38 AM, 11 Mar 2019
    если очень надо просто в деплой сервера встройте запуск решардинга сами, это буквально две строчки кода
  • https://t.me/clickhouse_ru
    @molo4ko007 #92194 06:57 AM, 11 Mar 2019
    А как вы делаете решардинг?
  • https://t.me/clickhouse_ru
    @stufently #92195 07:03 AM, 11 Mar 2019
    у меня оно само делается так как старые данные чистятся
  • https://t.me/clickhouse_ru
    @stufently #92196 07:03 AM, 11 Mar 2019
    а так кх копир же есть для этого
  • https://t.me/clickhouse_ru
    @AlexTru_1 #92197 07:37 AM, 11 Mar 2019
    всем привет! Подскажите пожалуйста в каких случаях при джойне двух таблиц кх возвращае 0 вместо поля, по которому делается джоин? я так понял вроде так он джойнит все null значения?
  • https://t.me/clickhouse_ru
    @alexey_laptev #92198 07:41 AM, 11 Mar 2019
    Может сможет кто сходу подсказать по репликации

    3 виртуалки, на каждой кликхаус и зуукипер, по статусам все работает, конфиги прописаны

    а репликация не работает, в логах зуукпипера записи похожи на правду

    раньше работало, сейчас только шард и реплику через макрос добавил

    куда копать? )
  • https://t.me/clickhouse_ru
    @alexey_laptev #92199 07:43 AM, 11 Mar 2019
    ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/ch_log', '{replica}') PARTITION BY toYYYYMM(created_at)
  • https://t.me/clickhouse_ru
    в чём заключается неработа и что по этому поводу в логах?
  • https://t.me/clickhouse_ru
    @alexey_laptev #92201 07:45 AM, 11 Mar 2019
    в реплику 1 добавляешь запись, в реплику 2 не добавляется
  • https://t.me/clickhouse_ru
    @alexey_laptev #92202 07:45 AM, 11 Mar 2019
    какие логи посмотреть?
  • https://t.me/clickhouse_ru
    @alexey_laptev #92203 07:46 AM, 11 Mar 2019
    /usr/bin/java
    ZooKeeper JMX enabled by default
    Using config: /home/zookeeper/zookeeper-3.5.4-beta/bin/../conf/zoo.cfg
    Client port found: 2181. Client address: localhost.
    Mode: follower
  • https://t.me/clickhouse_ru
    логи кх их там всего два
  • https://t.me/clickhouse_ru
    а ну тут очевидно что вы подняли свой зукипер для каждого кх , откуда они должны тогда знать о друг друге , дорогой друг магии не существует, эфира тоже
  • https://t.me/clickhouse_ru
    @alexey_laptev #92206 07:48 AM, 11 Mar 2019
    там через hosts прописано, но вижу зацепку
  • https://t.me/clickhouse_ru
    @stufently #92207 07:57 AM, 11 Mar 2019
    что через хостс прописано ? все зукиперы должны быть в одном кластере
  • https://t.me/clickhouse_ru
    @alexey_laptev #92208 08:02 AM, 11 Mar 2019
    разбираемся, проблема немного в другом, скажу потом
  • @rnknown #92209 08:06 AM, 11 Mar 2019
    никто не сталкивался с подобной проблемой? https://github.com/yandex/ClickHouse/issues/4533
    How could i extract the values of nested json object from kafka? · Issue #4533 · yandex/ClickHouse

    I have json message in kafka: { "trace_id":"", "time":"", "properties":{ "device_id":"", "othercol":"" } } ...

  • А можно линк на доку?
  • https://t.me/clickhouse_ru
    ну в гугле documentation clickhouse
  • https://t.me/clickhouse_ru
    2019.03.11 08:16:34.224073 [ 10 ] {} <Error> us_prod.ch_log (StorageReplicatedMergeTree): DB::StorageReplicatedMergeTree::queueTask()::<lambda(DB::StorageReplicatedMergeTree::LogEntryPtr&)>: Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = Host not found: ….

    обращется не туда что выдает hostname -f и interserver_http_host пока что
  • https://t.me/clickhouse_ru
    @stufently #92213 08:30 AM, 11 Mar 2019
    дайте нормальные имена
  • https://t.me/clickhouse_ru
    @alexey_laptev #92214 08:30 AM, 11 Mar 2019
    вобщем ощущение что не подхватывает hostname -f и interserver_http_host

    прописал в hosts то что он ищет и заработало
  • https://t.me/clickhouse_ru
    @alexey_laptev #92215 08:31 AM, 11 Mar 2019
    берет старое значение
  • https://t.me/clickhouse_ru
    @dusze #92216 08:39 AM, 11 Mar 2019
    Joined.
  • @yaea12 #92217 09:47 AM, 11 Mar 2019
    Коллеги, подскажите плз, при бэкапе БД – имеет ли смысл дополнительно сжимать данные каким-нибудь gzip'ом – или же они уже хранятся в сжатом виде и это ничего не даст?
  • https://t.me/clickhouse_ru
    Они уже сжаты
  • https://t.me/clickhouse_ru
    У меня - примерно 4:1 сжатие по сравнению с сырыми данными.
  • https://t.me/clickhouse_ru
    Дополнительное сжатие может и даст пару процентов, но это маловероятно.
  • @yaea12 #92221 09:50 AM, 11 Mar 2019
    Отлично, спасибо)
  • Того не стоит, разве чтоб одним архивом было
  • @yaea12 ↶ Reply to #92222 #92223 10:03 AM, 11 Mar 2019
    Для этого есть tar 🙂
    К тому же, встроенный в эту утилиту: https://github.com/AlexAkulov/clickhouse-backup
    GitHub - AlexAkulov/clickhouse-backup: Tool for easy ClickHouse backup and restore with cloud storages support

    Tool for easy ClickHouse backup and restore with cloud storages support - GitHub - AlexAkulov/clickhouse-backup: Tool for easy ClickHouse backup and restore with cloud storages support

  • https://t.me/clickhouse_ru
    Там уже добавили поддержку архивирования7
  • https://t.me/clickhouse_ru
    Вижу что добавили.
  • https://t.me/clickhouse_ru
    А подскажите, по какому принципу работает эта стратегия? Не совсем понимаю значения данных свойств:

    overwrite_strategy: "always"
    part_size: 5242880

    и

    backup:
    strategy: tree
    backups_to_keep: 0
  • @VadimKasich #92228 10:15 AM, 11 Mar 2019
    Всем привет! Словил странное поведение КХ

    select count() from action_distributed where date = '2019-03-10' and toHour(dateTime) = 1 and toMinute(dateTime) = 51 format Vertical

    SELECT count()
    FROM action_distributed
    WHERE (date = '2019-03-10') AND (toHour(dateTime) = 1) AND (toMinute(dateTime) = 51)
    FORMAT Vertical

    Row 1:
    ──────
    count(): 3294

    1 rows in set. Elapsed: 0.027 sec. Processed 2.54 million rows, 10.58 MB (92.94 million rows/s., 386.41 MB/s.)

    ----------------------------------------------------

    select count() from action_distributed where date = '2019-03-10' and dateTime >= '2019-03-10 01:50:00' and dateTime < '2019-03-10 02:00:00' format Vertical

    SELECT count()
    FROM action_distributed
    WHERE (date = '2019-03-10') AND (dateTime >= '2019-03-10 01:50:00') AND (dateTime < '2019-03-10 02:00:00')
    FORMAT Vertical

    Row 1:
    ──────
    count(): 0

    1 rows in set. Elapsed: 0.019 sec. Processed 2.54 million rows, 14.74 MB (135.80 million rows/s., 786.73 MB/s.)

    В чем может быть проблема?

    ClickHouse server version 19.1.6 revision 54413
  • https://t.me/clickhouse_ru
    @sahaquielx #92229 10:23 AM, 11 Mar 2019
    Добрый день, ставил ли кто-то clickhouse из https://repo.yandex.ru/clickhouse/rpm/stable/x86_64/ ?
    Очень смущает Transaction check error:
    file / from install of clickhouse-client-19.4.0-2.noarch conflicts with file from package filesystem-3.2-25.el7.x86_64
  • @1115100 #92230 11:00 AM, 11 Mar 2019
    Joined.
  • @dosereda #92231 11:05 AM, 11 Mar 2019
    Всем привет, а я застрял на этапе установки - в настоящий момент пытаюсь перенести данные на SMB хранилище. в результате storage подмантировал как /mnt/smb, выставляю права: chown clickhouse:clickhouse /mnt/smb/clickhouse/, далее в конфиге правлю раздел: <!-- Path to data directory, with trailing slash. -->
    <path>/mnt/smb/clickhouse/</path> но, не взлетает 🙁 Что я упустил?
  • https://t.me/clickhouse_ru
    @partamonov #92232 11:05 AM, 11 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
    @Terminator637 #92233 11:07 AM, 11 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
    Упустили посмотреть в логи
  • @dosereda ↶ Reply to #92234 #92235 11:08 AM, 11 Mar 2019
    Логов нет, я перед запуском потер оба лога, и они заного не создались
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #92236 11:09 AM, 11 Mar 2019
    Попробуйте заново создать сами файлы логов, может оно не может создавать само
  • https://t.me/clickhouse_ru
    Что-то в /var/log/messages есть?
  • @dosereda ↶ Reply to #92237 #92238 11:13 AM, 11 Mar 2019
    Что-то поменялось, теперь лог сгенерировался: Effective user of the process (clickhouse) does not match the owner of the data (root). - буду биться с правами. при том, что рекурсивно уже нужные выставлял. Главное, что нет иных подводных камней.
  • https://t.me/clickhouse_ru
    @dusze #92239 11:14 AM, 11 Mar 2019
    Коллеги, приветствую. Есть вопрос по установке
  • https://t.me/clickhouse_ru
    @Terminator637 #92240 11:14 AM, 11 Mar 2019
    Всем привет! Подскажите, пожалуйста, есть ли какие-либо альтернативы движку Kafka для буферизированного стриминга в Clickhouse?
  • https://t.me/clickhouse_ru
    @dusze #92241 11:16 AM, 11 Mar 2019
    Конфиг с 3мя шардами.

    Блок конфига выглядит так:

    <remote_servers>
    <!-- Two shards, two replica -->
    <pulse>
    <!-- shard 01 -->
    <shard>
    <!-- replica 01_01 -->
    <replica>
    <host>mark-core01</host>
    <port>9000</port>
    </replica>

    <!-- replica 01_02 -->
    <replica>
    <host>mark-core03</host>
    <port>9000</port>
    </replica>
    </shard>

    <!-- shard 02 -->
    <shard>
    <!-- replica 02_01 -->
    <replica>
    <host>mark-core04</host>
    <port>9000</port>
    </replica>

    <!-- replica 02_02 -->
    <replica>
    <host>mark-core05</host>
    <port>9000</port>
    </replica>
    </shard>
    </pulse>
    <pulse_shard_1>
    <!-- shard 01 -->
    <shard>
    <!-- replica 01_01 -->
    <replica>
    <host>mark-core01</host>
    <port>9000</port>
    </replica>

    <!-- replica 01_02 -->
    <replica>
    <host>mark-core03</host>
    <port>9000</port>
    </replica>
    </shard>
    </pulse_shard_1>
    <pulse_shard_2>
    <!-- shard 02 -->
    <shard>
    <!-- replica 02_01 -->
    <replica>
    <host>mark-core04</host>
    <port>9000</port>
    </replica>

    <!-- replica 02_02 -->
    <replica>
    <host>mark-core05</host>
    <port>9000</port>
    </replica>
    </shard>
    </pulse_shard_2>

    </remote_servers>

    В логе

    2019.03.11 14:13:09.827829 [ 1 ] {} <Error> Application: DB::Exception: Cannot create table from metadata file /var/lib/clickhouse/metadata/test//test.sql, error: DB::Exception: No macro shard in config, stack trace:
    0. clickhouse-server(StackTrace::StackTrace()+0x16) [0x5d9fdc6]
    1. clickhouse-server(DB::Macros::expand(std::string const&, unsigned long, std::string const&, std::string const&) const+0x6bc) [0x5d96f3c]
    2. clickhouse-server(DB::Macros::expand(std::string const&, std::string const&, std::string const&) const+0x19) [0x5d97079]
    3. clickhouse-server(DB::StorageReplicatedMergeTree::StorageReplicatedMergeTree(std::string const&, std::string const&, bool, std::string const&, std::string const&, std::string const&, DB::ColumnsDescription const&, DB::IndicesDescription const&, DB::Context&, std::string const&, std::shared_ptr<DB::IAST> const&, std::shared_ptr<DB::IAST> const&, std::shared_ptr<DB::IAST> const&, std::shared_ptr<DB::IAST> const&, DB::MergeTreeData::MergingParams const&, DB::MergeTreeSettings const&, bool)+0x2c2) [0x5697b72]
    4. clickhouse-server() [0x57cec27]
    5. clickhouse-server(std::_Function_handler<std::shared_ptr<DB::IStorage> (DB::StorageFactory::Arguments const&), std::shared_ptr<DB::IStorage> (*)(DB::StorageFactory::Arguments const&)>::_M_invoke(std::_Any_data const&, DB::StorageFactory::Arguments const&)+0x14) [0x57d0c74]
    6. clickhouse-server(DB::StorageFactory::get(DB::ASTCreateQuery&, std::string const&, std::string const&, std::string const&, DB::Context&, DB::Context&, DB::ColumnsDescription const&, bool, bool) const+0x1a3) [0x56407e3]
    7. clickhouse-server(DB::createTableFromDefinition(std::string const&, std::string const&, std::string const&, DB::Context&, bool, std::string const&)+0xfd) [0x53f81dd]
    8. clickhouse-server() [0x5910213]
    9. clickhouse-server() [0x5910916]
    10. clickhouse-server() [0x5da6179]
    11. clickhouse-server(ThreadPoolImpl<ThreadFromGlobalPool>::worker(std::_List_iterator<ThreadFromGlobalPool>)+0x199) [0x5daaa39]
  • https://t.me/clickhouse_ru
    @dusze #92242 11:16 AM, 11 Mar 2019
    12. clickhouse-server(ThreadFromGlobalPool::ThreadFromGlobalPool<void ThreadPoolImpl<ThreadFromGlobalPool>::scheduleImpl<void>(std::function<void ()>, int, std::optional<unsigned long>)::{lambda()#3}>(void ThreadPoolImpl<ThreadFromGlobalPool>::scheduleImpl<void>(std::function<void ()>, int, std::optional<unsigned long>)::{lambda()#3}&&)::{lambda()#1}::operator()() const+0x28) [0x5daafd8]
    13. clickhouse-server(ThreadPoolImpl<std::thread>::worker(std::_List_iterator<std::thread>)+0x199) [0x5da8a79]
    14. clickhouse-server() [0x65ce82f]
    15. /lib64/libpthread.so.0(+0x7e25) [0x7f3bffc05e25]
    16. /lib64/libc.so.6(clone+0x6d) [0x7f3bff425bad]

    В консоли

    [developer@mark-core04 ~]$ sudo service clickhouse-server start
    Start clickhouse-server service: Path to data directory in /etc/clickhouse-server/config.xml: /var/lib/clickhouse/
    UNKNOWN
  • https://t.me/clickhouse_ru
    @dusze #92243 11:16 AM, 11 Mar 2019
    На машинах 01 и 03 запускается без проблем. На 03 и 04 - указанная ошибка
  • https://t.me/clickhouse_ru
    @dusze #92244 11:16 AM, 11 Mar 2019
    Конфиги на всех четырех - идентичны
  • https://t.me/clickhouse_ru
    @87569616 #92245 11:18 AM, 11 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @partamonov #92247 11:19 AM, 11 Mar 2019
    мне не нравятся слеши
  • https://t.me/clickhouse_ru
    @dusze ↶ Reply to #92247 #92248 11:20 AM, 11 Mar 2019
    а тогда почему на 2 нормально, а на двух плохо ???
  • https://t.me/clickhouse_ru
    @partamonov #92249 11:20 AM, 11 Mar 2019
    в душе не знаю
  • https://t.me/clickhouse_ru
    @dusze #92250 11:20 AM, 11 Mar 2019
    Если бы так - то на всех упало
  • https://t.me/clickhouse_ru
    @partamonov #92251 11:20 AM, 11 Mar 2019
    просто мне не нравятся эти слеши
  • https://t.me/clickhouse_ru
    @partamonov #92252 11:20 AM, 11 Mar 2019
    это выглядит как ошибка
  • https://t.me/clickhouse_ru
    @dusze #92253 11:20 AM, 11 Mar 2019
    А где оно задается?
  • https://t.me/clickhouse_ru
    @partamonov #92254 11:20 AM, 11 Mar 2019
    не знаю правда
  • https://t.me/clickhouse_ru
    @partamonov #92255 11:20 AM, 11 Mar 2019
    прости чувак, я мимокрокодил, взгляд зацепился
  • https://t.me/clickhouse_ru
    @partamonov #92256 11:20 AM, 11 Mar 2019
    мб и не в этом дело
  • https://t.me/clickhouse_ru
    @alexey_laptev #92257 11:21 AM, 11 Mar 2019
    2019.03.11 11:07:05.189458 [ 51 ] {dde7484c-fa6d-445a-b6d8-ad94d30fc5bd} <Error> executeQuery: Code: 368, e.displayText() = DB::Exception: Bad cast from type DB::ColumnVector<unsigned long> to DB::ColumnVector<unsigned int> (from [::1]:39546) (in query: INSERT INTO tbl FORMAT Native), Stack trace:

    понятна суть ошибки, но не понятно почему - таблицы по структуре одинаковые
  • https://t.me/clickhouse_ru
    @bittta #92258 11:23 AM, 11 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
    <macros>
    <shard>shard-1</shard>
    <replica>replica-11</replica>
    </macros>
  • https://t.me/clickhouse_ru
    @dusze ↶ Reply to #92259 #92260 11:25 AM, 11 Mar 2019
    не понял тогда, почему на 2 машинах работает, а на 2 - нет
  • https://t.me/clickhouse_ru
    @alexey_laptev #92261 11:25 AM, 11 Mar 2019
    No macro shard in config
  • https://t.me/clickhouse_ru
    @alexey_laptev #92262 11:25 AM, 11 Mar 2019
    проверь конфиг на 2-х машинах
  • https://t.me/clickhouse_ru
    @sfilatov ↶ Reply to #92227 #92263 11:26 AM, 11 Mar 2019
    tree стратегия синкает папку shadow с s3
    archive превращает все в tar
    backups_to_keep определяет сколько бэкапов держать в s3 для архивной стратегии
    part_size - опция aws sdk для мультапарт аплоада
  • https://t.me/clickhouse_ru
    @dusze #92264 11:26 AM, 11 Mar 2019
    блока макрос нет ни на одной
  • https://t.me/clickhouse_ru
    @alexey_laptev #92265 11:26 AM, 11 Mar 2019
    ну я сказал рабочий вариант
  • https://t.me/clickhouse_ru
    @dusze ↶ Reply to #92265 #92266 11:28 AM, 11 Mar 2019
    все равно не понятно. Ну имя шарда - ладно, они разные, а имя реплики?
  • https://t.me/clickhouse_ru
    @alexey_laptev #92267 11:28 AM, 11 Mar 2019
    шард один как раз, а реплики - по названию виртуалок
  • https://t.me/clickhouse_ru
    @dusze #92268 11:28 AM, 11 Mar 2019
    шарда то 3
  • https://t.me/clickhouse_ru
    @dusze #92269 11:29 AM, 11 Mar 2019
    с разными именами
  • https://t.me/clickhouse_ru
    @alexey_laptev #92270 11:29 AM, 11 Mar 2019
    надо добавить этот модуль в конфиг и разобраться с названиями и схемой репликации
  • https://t.me/clickhouse_ru
    @alexey_laptev #92271 11:29 AM, 11 Mar 2019
    проблема мне кажется что кликхаус не видет этот конфиг
  • @dosereda ↶ Reply to #92231 #92272 11:30 AM, 11 Mar 2019
    Примерно таких хитростей и ожидал: все решилось указанием dir_mode=0777,file_mode=0777 в параметрах монтирования
  • https://t.me/clickhouse_ru
    Сергей, подскажите, эта утилита ротирует бекапы в директории /var/lib/clickhouse/shadow или нужно с самому очищать?
  • https://t.me/clickhouse_ru
    @sfilatov ↶ Reply to #92273 #92274 11:31 AM, 11 Mar 2019
    нужно очищать используя clickhouse-backup clean
  • https://t.me/clickhouse_ru
    @dusze ↶ Reply to #92271 #92275 11:32 AM, 11 Mar 2019
    Еще интереснее. Убрал блок remote_servers совсем. Ошибка осталась
  • https://t.me/clickhouse_ru
    Спасисбо! Просто в README этой информации не заметил.
  • https://t.me/clickhouse_ru
    наверно потому что в схеме таблицы макросы
  • @solresl #92278 11:49 AM, 11 Mar 2019
    Подскажите по clickhouse-backup, предполагается что у меня партишн по дням. При запуске утилита бэкапа сделает freeze всех партишенов и перезальет их на s3?
  • https://t.me/clickhouse_ru
    всегда так было -- это баг (чинят), просто еще раз достаньте поле через алиас (select a, a as r_a from...) r on (r.a =
  • https://t.me/clickhouse_ru
    ок, спасибо!
  • @anuriq ↶ Reply to #92278 #92281 11:51 AM, 11 Mar 2019
    freeze будет по всем partition и если в shadow уже были данные, то появятся новые хард линки. на данный момент мы запретили в clickhouse-backup фриз при непустом shadow
  • @anuriq #92282 11:52 AM, 11 Mar 2019
    то есть рекомендуется делать freeze -> upload -> clean и так далее. но еще от стратегии будет зависеть
  • @solresl #92283 11:54 AM, 11 Mar 2019
    спасибо
  • https://t.me/clickhouse_ru
    а Вы проверили дату в datetime поле в 3294 записях? Там точно 03-10 ?

    https://github.com/yandex/ClickHouse/issues/4312
  • Там 03-10

    select dateTime from action_distributed where date = '2019-03-10' and toHour(dateTime) = 1 and toMinute(dateTime) = 51 limit 5 format Vertical

    SELECT dateTime
    FROM action_distributed
    WHERE (date = '2019-03-10') AND (toHour(dateTime) = 1) AND (toMinute(dateTime) = 51)
    LIMIT 5
    FORMAT Vertical

    Row 1:
    ──────
    dateTime: 2019-03-10 01:51:49

    Row 2:
    ──────
    dateTime: 2019-03-10 01:51:26

    Row 3:
    ──────
    dateTime: 2019-03-10 01:51:57

    Row 4:
    ──────
    dateTime: 2019-03-10 01:51:22

    Row 5:
    ──────
    dateTime: 2019-03-10 01:51:37

    5 rows in set. Elapsed: 0.015 sec. Processed 585.97 thousand rows, 2.39 MB (39.55 million rows/s., 161.29 MB/s.)
  • https://t.me/clickhouse_ru
    А если
    Set compile_expressions=0
    Перед вторым запросом?
  • все равно 0
  • https://t.me/clickhouse_ru
    @den_crane #92288 12:06 PM, 11 Mar 2019
    и еще как раз в это время переводили время в сев.ам.
  • https://t.me/clickhouse_ru
    А datetime входит в индекс? И какая tz на сервере?
  • https://t.me/clickhouse_ru
    @birdmanp #92290 12:28 PM, 11 Mar 2019
    Joined.
  • dateTime не входит в индекс. Время в UTC.
    Еще заметил одну особенность. За 10 число нет записей за 02H, при этом за 01H их где-то в два раза больше, чем должно быть. Получается как будто 01 и 02 “схлопнулись” в 01

    select toHour(dateTime), count() from action_distributed where date = '2019-03-10' and toHour(dateTime) IN (0,1,2,3,4) group by toHour(dateTime) format Vertical

    SELECT
    toHour(dateTime),
    count()
    FROM action_distributed
    WHERE (date = '2019-03-10') AND (toHour(dateTime) IN (0, 1, 2, 3, 4))
    GROUP BY toHour(dateTime)
    FORMAT Vertical

    Row 1:
    ──────
    toHour(dateTime): 0
    count(): 89545

    Row 2:
    ──────
    toHour(dateTime): 1
    count(): 199529

    Row 3:
    ──────
    toHour(dateTime): 3
    count(): 100281

    Row 4:
    ──────
    toHour(dateTime): 4
    count(): 100169

    4 rows in set. Elapsed: 0.021 sec. Processed 2.54 million rows, 11.16 MB (119.70 million rows/s., 525.11 MB/s.)
  • https://t.me/clickhouse_ru
    @birdmanp #92292 12:33 PM, 11 Mar 2019
    Есть куча компьютеров рабочих которые выходят в сеть. Нужна аналитика какие сайты посещают сколько времени сидят и ТД. Пересечения и прочее. Данные о всех пакетах хранятся в одной таблице более 1000 компьютеров все тормозит при запросах в которых идёт агрегация. AgregationMergeTree решит проблему?
  • https://t.me/clickhouse_ru
    Ну понятно что из-за перехода на летнее время. Непонятно почему toHour в вашем случае это делает.
  • разве был переход на летнее время?)
  • https://t.me/clickhouse_ru
    Ну, например, в США был как раз в эти выходные переход на летнее время :)
  • спасибо, не знал)
  • @solresl ↶ Reply to #92282 #92297 12:44 PM, 11 Mar 2019
    может подскажите ещё, можно ли быкапить с учетом нескольких шардов - в конфиге в блоке s3 добавляете вручную имя шарда в path?
    И может я упустил, но нельзя получается бэкапить если КХ версии, когда нельзя всю таблицу разом фризить, а только партами?
  • @anuriq ↶ Reply to #92297 #92298 12:46 PM, 11 Mar 2019
    фризится каждый партишн независимо.
    утилита ничего не знает про шарды, поэтому на каждом сервере надо настраивать запуск. чтобы данные не смешивались, можно разные path задать. то есть в разных папках будут
  • @anuriq #92299 12:46 PM, 11 Mar 2019
    а стратегия archive или tree?
  • @solresl #92300 12:47 PM, 11 Mar 2019
    пока только разбираюсь
  • https://t.me/clickhouse_ru
    При текущем подходе к шардированию в ClickHouse, довольно тяжело перенести только нужные данные на другие шарды — сейчас обычно требуется полное чтение всего содержимого, хотя, если есть сэмплирование, то это не обязательно. Автоматически сейчас это сделать не получится, но можно использовать clickhouse-copier. Насколько я знаю (я не разработчик ClickHouse), лишь в отдаленных планах есть желание сделать «микрошарды», когда данные будут разбиты на более мелкие части, что облегчило бы и решардинг и поддержание нужного фактора репликации при выходе из строя одной из нод (сейчас когда одна реплика выходит из строя, для её полного восстановления создается очень высокая нагрузка на оставшийся шард, что довольно плохо сказывается на работе кластера :).
  • @solresl ↶ Reply to #92299 #92302 12:48 PM, 11 Mar 2019
    я запускаю фриз, он пишет про каждый парт без ошибок, но в папке shadow только increment.txt. ПРичем он явно создаётся при запуске бэкапа.

    Пока запускаю tree
  • @anuriq ↶ Reply to #92302 #92303 12:48 PM, 11 Mar 2019
    а данные есть точно? или просто пустые таблицы?
  • @solresl ↶ Reply to #92303 #92305 12:50 PM, 11 Mar 2019
    данные есть ~22к строчек
  • https://t.me/clickhouse_ru
  • сорян, пропустил это сообщение
  • https://t.me/clickhouse_ru
    т.е. скорее всего внутри КХ кривая таблица конвертации unixtime в строки. Попробую воспроизвести.
    У вас докер ? clickhouse-client прямо на сервере?
  • @anuriq ↶ Reply to #92305 #92309 12:57 PM, 11 Mar 2019
    надо вручную позапускать то, что здесь делается
    https://github.com/AlexAkulov/clickhouse-backup/blob/master/clickhouse.go#L113
    может сразу станет понятно, что не так
    AlexAkulov/clickhouse-backup

    Tool for easy ClickHouse backup and restore with S3 support - AlexAkulov/clickhouse-backup

  • докера нет, clickhouse-client прямо на сервере
  • https://t.me/clickhouse_ru
    @jaroslavat #92311 01:08 PM, 11 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
    @jaroslavat #92312 01:10 PM, 11 Mar 2019
    Всем привет! Подскажите, появилась ли возможность использовать конструкцию подобную "ROW_NUMBER() OVER(PARTITION BY)"?
  • @solresl ↶ Reply to #92309 #92313 01:12 PM, 11 Mar 2019
    При создании бэкапа используется значение partition_id, который отличается от partition (наследие). Кликхаус при фризе не ругается и отвечает OK, но бэкап не создаёт.

    ┌─partition────┬─partition_id─┐
    │ '2019-02-02' │ 20190202 │
  • @anuriq ↶ Reply to #92313 #92314 01:13 PM, 11 Mar 2019
    значит не учтен момент. а не затруднит issue создать? посмотрим как только сможем
  • @solresl #92315 01:14 PM, 11 Mar 2019
    да, создам. Спасибо за консультацию.
  • https://t.me/clickhouse_ru
    с ходу не воспроизводится, а без дистрибьютид action_distributed, на локальной таблице тоже лажа?
  • https://t.me/clickhouse_ru
    нет (используем пока массивы и groupArray или limit by если надо отсечь по номеру)
  • ага
  • https://t.me/clickhouse_ru
    @bobrovskiy_roman #92319 01:31 PM, 11 Mar 2019
    Как можно перенести данные из одной директории в другую?
    просто перенести всю папку /var/lib/clickhouse и потом изменить путь в конфиге не помогло
  • https://t.me/clickhouse_ru
    Спасибо
  • https://t.me/clickhouse_ru
    @rheinx ↶ Reply to #92319 #92321 01:55 PM, 11 Mar 2019
    какие ошибки?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @bobrovskiy_roman #92323 01:57 PM, 11 Mar 2019
    при запуске сервиса
  • https://t.me/clickhouse_ru
    @rheinx ↶ Reply to #92322 #92324 02:02 PM, 11 Mar 2019
    ну логи будут явно более полезны
  • https://t.me/clickhouse_ru
    в логах пустота в этот момент, я так понимаю, что процесс не запускался и логи не писались
  • https://t.me/clickhouse_ru
    @rheinx ↶ Reply to #92325 #92326 02:03 PM, 11 Mar 2019
    ну есть еще сислог, в нем может быть инфа
  • https://t.me/clickhouse_ru
    сейчас поищу
  • https://t.me/clickhouse_ru
    @Anryal #92328 02:09 PM, 11 Mar 2019
    Create index нельзя делать?
  • https://t.me/clickhouse_ru
    я нашел только err.log
  • https://t.me/clickhouse_ru
    @bobrovskiy_roman #92330 02:10 PM, 11 Mar 2019
    там нет ничего
  • https://t.me/clickhouse_ru
    @rheinx ↶ Reply to #92329 #92331 02:10 PM, 11 Mar 2019
    ось какая на сервере?
  • https://t.me/clickhouse_ru
    @bobrovskiy_roman #92332 02:11 PM, 11 Mar 2019
    Distributor ID: Ubuntu
    Description: Ubuntu 16.04.5 LTS
    Release: 16.04
    Codename: xenial
  • https://t.me/clickhouse_ru
    @Polievkt #92333 02:15 PM, 11 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
    @d60e87b4 #92334 02:28 PM, 11 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
    @d60e87b4 #92335 02:30 PM, 11 Mar 2019
    Хай всем. У кого нибудь было такое что сервер не запускается и может висеть по несколько часов, при этом ошибки не сыпать
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @d60e87b4 #92337 02:31 PM, 11 Mar 2019
    этим мануалом пользовался
  • https://t.me/clickhouse_ru
    @d60e87b4 #92338 02:33 PM, 11 Mar 2019
    Возможно очень много данных запихнули
  • https://t.me/clickhouse_ru
    вся таблица -- IOT ( отсортирована по order by) , и можно создавать skip index-ы (т.е. обычных btree -- вторичных, нет)
  • https://t.me/clickhouse_ru
    скорее всего ошибка в стратегии партиционирования -- слишком много партиций
  • https://t.me/clickhouse_ru
    @Anryal ↶ Reply to #92339 #92341 02:38 PM, 11 Mar 2019
    В доке увидел что есть дополнительные индексы
  • https://t.me/clickhouse_ru
    @Anryal #92342 02:38 PM, 11 Mar 2019
    Это разве не вторичные?
  • https://t.me/clickhouse_ru
    @rheinx ↶ Reply to #92332 #92343 02:39 PM, 11 Mar 2019
    /var/log/syslog смотреть в момомент запуска
  • https://t.me/clickhouse_ru
    @bobrovskiy_roman #92344 02:39 PM, 11 Mar 2019
    спасибо, сейчас
  • https://t.me/clickhouse_ru
    да но skip
  • https://t.me/clickhouse_ru
    Mar 11 15:57:36 db6 clickhouse-server[22613]: Poco::Exception. Code: 1000, e.code() = 13, e.displayText() = Access to file denied: /var/lib/clickhouse, e.what() = Access to file denied
  • https://t.me/clickhouse_ru
    @rheinx ↶ Reply to #92346 #92347 02:40 PM, 11 Mar 2019
    ну просто на новое местоположение надо сделать chown clickhouse:clickhouse
    если установка была из пакета
  • https://t.me/clickhouse_ru
    @bobrovskiy_roman #92348 02:40 PM, 11 Mar 2019
    сделали
  • https://t.me/clickhouse_ru
    @bobrovskiy_roman #92349 02:41 PM, 11 Mar 2019
    и показывал он там юзера
  • https://t.me/clickhouse_ru
    @rheinx ↶ Reply to #92348 #92350 02:41 PM, 11 Mar 2019
    а данные лежат точно в /var/lib/clickhouse ?
  • https://t.me/clickhouse_ru
    @bobrovskiy_roman #92351 02:41 PM, 11 Mar 2019
    сначала была ссылка на новое место
  • https://t.me/clickhouse_ru
    @bobrovskiy_roman #92352 02:42 PM, 11 Mar 2019
    потом я в конфигах перенес
  • https://t.me/clickhouse_ru
    @bobrovskiy_roman #92353 02:42 PM, 11 Mar 2019
    Mar 11 15:50:51 db6 clickhouse-server[16549]: Poco::Exception. Code: 1000, e.code() = 13, e.displayText() = Access to file denied: /var/lib/postgresql/clickhouse, e.what() = Access to file denied
  • https://t.me/clickhouse_ru
    @bobrovskiy_roman #92354 02:42 PM, 11 Mar 2019
    не обращай внимания на postgresql, там просто диск замапан ssd
  • https://t.me/clickhouse_ru
    @rheinx ↶ Reply to #92352 #92355 02:42 PM, 11 Mar 2019
    /var/lib/postgresql/ chown'или?
  • https://t.me/clickhouse_ru
    @Anryal ↶ Reply to #92345 #92356 02:43 PM, 11 Mar 2019
    а можно навесить на таблицу с залитыми данными ?
  • https://t.me/clickhouse_ru
    @d60e87b4 ↶ Reply to #92340 #92357 02:44 PM, 11 Mar 2019
    Да походу вы правы, а не подскажите а можно ли просто удалить папку clickhouse/data/problem_db
  • https://t.me/clickhouse_ru
    на clickhouse
  • https://t.me/clickhouse_ru
    @rheinx ↶ Reply to #92353 #92359 02:44 PM, 11 Mar 2019
    покажите вывод этих 3х команд

    ls -la /var/lib/ | grep postgresql
    ls -la /var/lib/postgresql/
    ls -la /var/lib/postgresql/clickhouse
  • https://t.me/clickhouse_ru
    @bobrovskiy_roman #92360 02:45 PM, 11 Mar 2019
    ну clickhouse я уже mv назад сделал
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @visavi #92362 02:46 PM, 11 Mar 2019
    Добрый день подскажите пожалуйста, никак не могу сообразить, есть таблица requests в нем есть поле params в котором json к примеру {"p1":"79263"} как мне сделать выборку что p1 должен быть равен чему-то
  • https://t.me/clickhouse_ru
    @bobrovskiy_roman #92363 02:46 PM, 11 Mar 2019
    но на него был clickhouse clickhouse
  • https://t.me/clickhouse_ru
    @rheinx ↶ Reply to #92363 #92364 02:47 PM, 11 Mar 2019
    ls -la /var/lib/ | grep postgresql показывает что сейчас он принадлежит postgres.
    В таком состоянии CH имеет полное право не стартовать)
    А что там было, мы уже видимо не узнаем
  • https://t.me/clickhouse_ru
    @miptgirl ↶ Reply to #92362 #92365 02:47 PM, 11 Mar 2019
    SELECT visitParamExtractRaw('{"p1":"79263"}', 'p1')

    ┌─visitParamExtractRaw('{"p1":"79263"}', 'p1')─┐
    │ "79263" │
    └──────────────────────────────────────────────┘
  • https://t.me/clickhouse_ru
    @sl_aleksandr #92366 02:47 PM, 11 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
    @bobrovskiy_roman #92367 02:47 PM, 11 Mar 2019
    спасибо за уточнение
  • https://t.me/clickhouse_ru
    скорей всего так и есть
  • https://t.me/clickhouse_ru
    @visavi ↶ Reply to #92365 #92369 02:49 PM, 11 Mar 2019
    а где указывается поле? мне по полю нужно искать, а не по заданной строке
  • https://t.me/clickhouse_ru
    @miptgirl ↶ Reply to #92369 #92370 02:50 PM, 11 Mar 2019
    SELECT visitParamExtractRaw(params, 'p1')
  • https://t.me/clickhouse_ru
    @visavi ↶ Reply to #92370 #92371 02:53 PM, 11 Mar 2019
    тогда где указывать искомое значение?
    как указано в документации я попробовал https://clickhouse.yandex/docs/ru/query_language/functions/json_functions/

    может тип поля должен быть другой? сейчас params это String
  • https://t.me/clickhouse_ru
    можно, но вам не поможет.

    create table BX(I Int64, S String) Engine=MergeTree order by I;
    insert into BX select number, toString(rand()) from numbers(10000000);
    ALTER TABLE BX ADD INDEX idx0 S TYPE minmax GRANULARITY 10;
    optimize table BX final;

    select count() from BX prewhere S = '666';
    0 rows in set. Processed 10.00 million rows,

    select count() from BX prewhere S = 'A';
    0 rows in set. Elapsed: 0.001 sec.
  • https://t.me/clickhouse_ru
    @Anryal ↶ Reply to #92372 #92373 02:57 PM, 11 Mar 2019
    усвоил, спасибо
  • https://t.me/clickhouse_ru
    @d60e87b4 ↶ Reply to #92340 #92374 02:58 PM, 11 Mar 2019
    Спасибо за совет. удалил папку с проблемной таблицей, все завелось
  • https://t.me/clickhouse_ru
    @visavi #92375 03:00 PM, 11 Mar 2019
    Разобрался
    and visitParamExtractInt(params, 'p1') = 79263;
  • https://t.me/clickhouse_ru
    @emtsptth #92376 04:03 PM, 11 Mar 2019
    Подскажите, как будет отличаться производительность читающих запросов за диапазон в несесколько дней к MergeTree при партиционировании по месяцам и по дням?
  • https://t.me/clickhouse_ru
    за диапазон 3 дня, будет X партов VS X*(~3) партов, в синтетических тестах я получал разницу на 0.1%
  • https://t.me/clickhouse_ru
    @emtsptth ↶ Reply to #92377 #92378 04:10 PM, 11 Mar 2019
    ого, настолько незначительное отличие? т.е линейный рост, и допустим при выборке за месяц, при партиционировании по дням деградация будет в пределах 3%🤔
  • https://t.me/clickhouse_ru
    @emtsptth #92380 04:13 PM, 11 Mar 2019
    у меня партиционирование по дням, хочу как-то оценить профит (если он есть) от перехода на toYYYYMM , диапазоны чтения 7-180 дней.
  • https://t.me/clickhouse_ru
    @stovm #92381 04:23 PM, 11 Mar 2019
    Добрый вечер!
    Столкнулся с такой проблемой…. Мне хочется сделать что-то вроде array join на nested структуру, развернув эти массивы в строки, но с одним НО, хочу при этом не терять те ситуации, когда NESTED структура пустая… То есть некоторый left array join:
    SELECT count()
    FROM t
    ARRAY JOIN a
    WHERE dt = yesterday()

    1 rows in set. Elapsed: 0.170 sec. Processed 2.05 billion rows, 20.81 GB (12.04 billion rows/s., 122.07 GB/s.)

    SELECT count()
    FROM t
    LEFT ARRAY JOIN a
    WHERE dt = yesterday()
    ↙ Progress: 115.28 million rows, 1.17 GB (22.54 million rows/s., 228.55 MB/s.)

    Скорость падает больше чем на 2 порядка. Может я неправильно понимаю, что делает left array join и есть какая-то правильная функция для такой задачи?
  • https://t.me/clickhouse_ru
    вы протестируйте на своих запросах и реальных данных, я например не проверял на таблицах из запросах с сотнями колонок.
    Может вам недельные партиции подойдут.
    Зачем изначально было выбрано патриционирование по дням?
    Сколько лет вы собираетесь хранить, потому что 1825 партиций vs 60 партиций за 5 лет.
  • https://t.me/clickhouse_ru
    а с emptyArrayToSingle тоже на два порядка?

    типа

    SELECT count()
    from (select a FROM t WHERE dt = yesterday()) ARRAY JOIN a

    SELECT count()
    FROM (select a FROM t WHERE dt = yesterday()) LEFT ARRAY JOIN a

    SELECT count()
    from (select emptyArrayToSingle(a) FROM t WHERE dt = yesterday()) ARRAY JOIN a
  • https://t.me/clickhouse_ru
    @241186216 #92384 04:35 PM, 11 Mar 2019
    Подскажите. По http передаю массив строк . Нужно каждый элемент массива в кавычки ? [Ffff,cgg] или ['fff','ggg']. Где прочесть про это ?
  • https://t.me/clickhouse_ru
    и без http тоже нужны кавычки. Вы же передаете post-м файл, все тоже самое что и для client

    select ['aaaa','bbb'] format TSV

    select ['aaaa','bbb'] format Values

    select ['aaaa','bbb'] format JSONEachRow
  • https://t.me/clickhouse_ru
    @241186216 #92386 04:39 PM, 11 Mar 2019
    А если числа ?
  • https://t.me/clickhouse_ru
    @den_crane #92387 04:40 PM, 11 Mar 2019
    select [6,5] format TSV
    [6,5]
  • https://t.me/clickhouse_ru
    @stovm ↶ Reply to #92383 #92388 04:42 PM, 11 Mar 2019
    по скорости выглядит так же и есть ощущение, что left array join это и делает
  • @serlex777 #92390 05:05 PM, 11 Mar 2019
    Делаю all inner join двух талиц (КХ и mysql)
    argMax(t1.url, event_time) AS url, вот так работает t1 - это кх таблица
    argMax(t2.url, event_time) AS url, так не работает t2 -это mysql данные
    сервер падает
    18.14.18 revision 54409.
    и такая фигня именно на строках
    Либо версия старая либо баг
  • https://t.me/clickhouse_ru
    argMax(assumeNotNull (t2.url) , event_time)
    падает?
  • https://t.me/clickhouse_ru
    @emtsptth ↶ Reply to #92382 #92392 05:09 PM, 11 Mar 2019
    а как можно протестить на боевых данных без пересоздания таблицы с партиционированием по месяцу?
    изначально по дням было выбрано по причине что возможны ситуации когда нужно дропнуть блок и налить по новой, и из-за 1-2 дней не хочется переливать месяц. если из-за этого деградирует чтение несильно (как в вашем примере), то это устраивает, больше года не храним.
    На самом деле вопрос возник в ситуации, когда MV поверх MT не дает профита, хотя предагрегаты схлопнуты, обходиться сильно меньше строк.. а MV тоже партиционируется по дням. Поэтому и возник вопрос насколько большой профит в чтении от обхода меньшего числа партиций.
  • https://t.me/clickhouse_ru
    >На самом деле вопрос возник в ситуации
    uniq-и в агрегате?

    т.е. там могут быть проблемы из-за granularity и очень больших (блобов state-в) полей, и это решаемо

    читайте отсюда t.me/clickhouse_ru/90514
  • https://t.me/clickhouse_ru
    @emtsptth ↶ Reply to #92393 #92394 05:14 PM, 11 Mar 2019
    в запросе на чтение нет..
  • https://t.me/clickhouse_ru
    @emtsptth #92395 05:15 PM, 11 Mar 2019
    спасибо, смотрю..
  • Да, падает
  • @defaultColours #92398 06:53 PM, 11 Mar 2019
    Добрый вечер коллеги, подскажите пожалуйста, как составить запрос. В базу пишутся большие пачки данных, но не постоянно, а допустим 10 раз в сутки, по 30 минут. Хочется получить список этих интервалов(хотя бы начальное время). Пробовал через timeSlots, похоже, но не совсем.
  • https://t.me/clickhouse_ru
    @stovm #92399 07:44 PM, 11 Mar 2019
    В общем, решил свою проблему через select groupArray(1)(a)[1] from (select a from t order by time). Немного извращённый способ найти первое событие для пользователя даже если nested структура пустая
  • https://t.me/clickhouse_ru
    @stovm ↶ Reply to #92398 #92400 07:46 PM, 11 Mar 2019
    можно попробовать сначала получить интервалы через runningDifference от времени. А затем фильтрануть по интервалам, определив, что такой «большой"
  • https://t.me/clickhouse_ru
  • спасибо, то что нужно!
  • https://t.me/clickhouse_ru
    @stovm #92403 07:55 PM, 11 Mar 2019
    Резюмируя, emptyArrayToSingle очень медленна
  • https://t.me/clickhouse_ru
    select a from t order by time limit 1 by user
    не тоже самое?
  • https://t.me/clickhouse_ru
    @stovm ↶ Reply to #92404 #92405 08:02 PM, 11 Mar 2019
    потрясающе
  • https://t.me/clickhouse_ru
    @stovm #92406 08:03 PM, 11 Mar 2019
    Не знал, что есть такой простой вариант как limit n by :((((
  • https://t.me/clickhouse_ru
    @stovm #92407 08:03 PM, 11 Mar 2019
    Спасибо огромное
  • т.е. у вас в течение суток 10 блоков данных по полчаса и между ними перерывы? Простой select min(time) from table group by timeSlot(time) почему-то не работает?
  • @mfilimonov #92409 08:29 PM, 11 Mar 2019
    т.е. он конечно вернет немного лишних строк, но отбросить их довольно просто.
  • да, много лишнего, вариант с runningDifference подошел идеально, спасибо за помощь
  • https://t.me/clickhouse_ru
    @basili4_1982 #92411 08:40 PM, 11 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
    Этот вариант тоже не такой уж быстрый получается
  • https://t.me/clickhouse_ru
    @basili4_1982 #92413 08:47 PM, 11 Mar 2019
    Добрый вечер. У меня возникла вот какая проблема с запуском CH в контейнере. CH ругается
    chown: cannot access '': No such file or directory
    clickhouse_1 | Couldn't save preprocessed config to /etc/clickhouse-server/config-preprocessed.xml: Access to file denied: /etc/clickhouse-server/config-preprocessed.xml
  • https://t.me/clickhouse_ru
    @basili4_1982 #92414 08:47 PM, 11 Mar 2019
    использую офиц. образ
  • https://t.me/clickhouse_ru
    @basili4_1982 #92415 09:42 PM, 11 Mar 2019
    Кароч lasttest не завелся вообще
  • https://t.me/clickhouse_ru
    @basili4_1982 #92416 09:42 PM, 11 Mar 2019
    clickhouse:
    image: yandex/clickhouse-server:18.10
    user: root
    ports:
    - "8123:8123"
    volumes:
    - $PWD/volumes/clickhouse-data:/var/lib/clickhouse
    - $PWD/volumes/logs/clickhouse:/var/log/clickhouse-server
  • https://t.me/clickhouse_ru
    @basili4_1982 #92417 09:43 PM, 11 Mar 2019
    так все завелось
  • @githubreleases_bot #92418 b o t 09:47 PM, 11 Mar 2019
    yandex/ClickHouse was tagged: v19.3.7-stable
    Link: https://github.com/yandex/ClickHouse/releases/tag/v19.3.7-stable
    Release notes:
    v19.3.7-stable
    yandex/ClickHouse

    ClickHouse is a free analytic DBMS for big data. Contribute to yandex/ClickHouse development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    @yourock88 #92419 09:57 PM, 11 Mar 2019
    Хорошо бы ещё видеть в ченджлоге, что нового появилось в этих версиях :)
  • https://t.me/clickhouse_ru
    @yourock88 #92420 09:58 PM, 11 Mar 2019
    А, простите, надо было changelog из ветки мастер смотреть, а не по ссылке
  • @milovidov_an #92421 10:54 PM, 11 Mar 2019
    По крайней мере одно важное исправление: https://github.com/yandex/ClickHouse/pull/4623
    Fixed awful error after #3920 by alexey-milovidov · Pull Request #4623 · yandex/ClickHouse

    Category (leave one): Bug Fix Short description (up to few sentences): Fixed error in #3920. This error manifestate itself as random cache corruption (messages Unknown codec family code, Cannot s...

  • 12 March 2019 (156 messages)
  • @dmitriy_negreev #92422 04:40 AM, 12 Mar 2019
    Подскажите, где можно почитать отличия версий 19.1 19.2 и т.д. и почему ведётся несколько веток?
  • https://t.me/clickhouse_ru
    В ченджлоге
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #92422 #92424 06:11 AM, 12 Mar 2019
    Недавно стали фиксы бекпортить, поэтому поддерживаются и старые версии.
  • https://t.me/clickhouse_ru
    @Mike_Er #92425 09:29 AM, 12 Mar 2019
    а если хочется новых фич, что собирать в замен 18.14.19 ? что-то все версиии, что мы пробовали из линейки 19.хх работали с ошибками..
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #92425 #92426 09:47 AM, 12 Mar 2019
    Тут остается только проверять каждую новую версию, если у вас с ней проблем не будет значит она и есть ваша новая стабильная версия, других вариантов нет.
  • https://t.me/clickhouse_ru
    @igor_dia #92427 10:13 AM, 12 Mar 2019
    Почему табикс может не давать залогиниться, хотя:
    1) те же креды подходят в нативном клиенте
    2) нужный порт открыт, сервер на обычный гет отзывается, что живой на этом порте
    3) схема указана (хотя пробовал и без нее)
    4) в логах КХ ничего нет про неудачное подключение
  • https://t.me/clickhouse_ru
    У меня не давал залогиниться бразузер, когда табикс - по https, а кх - по http
  • https://t.me/clickhouse_ru
    Ну или наоборот, не помню
  • https://t.me/clickhouse_ru
    @igor_dia #92430 10:19 AM, 12 Mar 2019
    А. В логах консоли: Error on login TypeError: Failed to fetch
  • https://t.me/clickhouse_ru
    @igor_dia ↶ Reply to #92428 #92431 10:20 AM, 12 Mar 2019
    Да. те же грабли.
  • @Shazo_Rus #92432 10:30 AM, 12 Mar 2019
    в режиме разработчика браузера в консоле нет ошибок за mixed content?
  • https://t.me/clickhouse_ru
    @igor_dia #92433 10:45 AM, 12 Mar 2019
    Есть. Говорю же - те же грабли
  • https://t.me/clickhouse_ru
    @igor_dia #92434 10:46 AM, 12 Mar 2019
    Теперь воюю с браузером...
  • Там пару дней назад Алексей поправил один из самых "эпичных" багов в версиях >=19.1 который был одной из главных причин нестабильности, и приводил к многочисленным падениям при использовании кэша. Попробуйте самые свежие версии. (>19.1.10, >19.3.6).
  • @mfilimonov #92436 12:57 PM, 12 Mar 2019
    Если кто-то использует версии 19.1-19.1.10, 19.3-19.3.6, то думаю тоже имеет смысл обновиться.
  • https://t.me/clickhouse_ru
    @synthcat #92437 12:59 PM, 12 Mar 2019
    Code: 33. DB::Exception: Received from localhost:9000, 127.0.0.1. DB::Exception: Cannot read all marks from file /var/lib/clickhouse/data/default/graphite/20181201_20181231_12537056_12537056_17/Path.mrk.

    жаль, не пофиксился старый баг:
    0. clickhouse-server(StackTrace::StackTrace()+0x16) [0x6f72cd6]
    1. clickhouse-server(DB::MergeTreeReaderStream::loadMarks()+0x17d7) [0x674c0a7]
    2. clickhouse-server(DB::MergeTreeReaderStream::MergeTreeReaderStream(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::c
    har_traits<char>, std::allocator<char> > const&, unsigned long, std::vector<DB::MarkRange, std::allocator<DB::MarkRange> > const&, DB::MarkCache*, bool, DB::UncompressedCache*, unsigned long, unsig
    ned long, unsigned long, std::function<void (DB::ReadBufferFromFileBase::ProfileInfo)> const&, int)+0x448) [0x674d068]
    3. clickhouse-server() [0x6a8fd4d]
    4. clickhouse-server(DB::MergeTreeReader::addStreams(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, DB::IDataType const&, std::function<void (DB::ReadBuffer
    FromFileBase::ProfileInfo)> const&, int)+0xa9) [0x6a8dc49]
    5. clickhouse-server(DB::MergeTreeReader::MergeTreeReader(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::shared_ptr<DB::MergeTreeDataPart const> const&
    , DB::NamesAndTypesList const&, DB::UncompressedCache*, DB::MarkCache*, bool, DB::MergeTreeData const&, std::vector<DB::MarkRange, std::allocator<DB::MarkRange> > const&, unsigned long, unsigned lo
    ng, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, double, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, st
    d::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, double> > > const&, std::function<void (DB::ReadBufferFromFileBase::ProfileInfo)> const
    &, int)+0x3a9) [0x6a8f859]
    6. clickhouse-server(DB::MergeTreeThreadSelectBlockInputStream::getNewTask()+0x7fb) [0x675df2b]
    7. clickhouse-server(DB::MergeTreeBaseSelectBlockInputStream::readImpl()+0x42e) [0x6a87c7e]
    8. clickhouse-server(DB::IBlockInputStream::read()+0x178) [0x62ed748]
    9. clickhouse-server(DB::ExpressionBlockInputStream::readImpl()+0x2d) [0x68a9e6d]
    10. clickhouse-server(DB::IBlockInputStream::read()+0x178) [0x62ed748]
    11. clickhouse-server(DB::ParallelInputsProcessor<DB::ParallelAggregatingBlockInputStream::Handler>::thread(std::shared_ptr<DB::ThreadGroupStatus>, unsigned long)+0x2e2) [0x68d5592]
    12. clickhouse-server(ThreadFromGlobalPool::ThreadFromGlobalPool<DB::ParallelInputsProcessor<DB::ParallelAggregatingBlockInputStream::Handler>::process()::{lambda()#1}>(DB::ParallelInputsProcessor<
    DB::ParallelAggregatingBlockInputStream::Handler>::process()::{lambda()#1}&&)::{lambda()#1}::operator()() const+0x71) [0x68d5f81]
    13. clickhouse-server(ThreadPoolImpl<std::thread>::worker(std::_List_iterator<std::thread>)+0x1ab) [0x6f78c6b]
    14. clickhouse-server() [0xadeeb5f]
    15. /lib/x86_64-linux-gnu/libpthread.so.0(+0x7494) [0x7f892c455494]
    16. /lib/x86_64-linux-gnu/libc.so.6(clone+0x3f) [0x7f892ba87acf]
  • https://t.me/clickhouse_ru
    @Alesapin ↶ Reply to #92437 #92438 12:59 PM, 12 Mar 2019
    А на этот баг есть issue на гитхабе?
  • https://t.me/clickhouse_ru
    @synthcat #92439 01:00 PM, 12 Mar 2019
    нет
  • https://t.me/clickhouse_ru
    @Mike_Er ↶ Reply to #92435 #92440 01:00 PM, 12 Mar 2019
    Спасибо, сейчас собрал 19.3.7 и гоняю тесты, пока все ок :)
  • https://t.me/clickhouse_ru
    @sitrix #92441 01:05 PM, 12 Mar 2019
    Joined.
  • @yurganov #92442 01:25 PM, 12 Mar 2019
    Привет

    Прочитал, что MergeTree можно указывать дополнительные индексы, используя allow_experimental_data_skipping_indices

    (https://clickhouse.yandex/docs/ru/operations/table_engines/mergetree/#dopolnitelnye-indeksy-eksperimentalnyi-funktsional)

    Пытаюсь сделать так:

    CREATE TABLE stat.offers_log_daily
    (
    utc_date Date,
    advertiser_application_id UInt64,
    publisher_application_id UInt64,
    creative_id UInt64,
    ...
    INDEX creative_id (creative_id) TYPE set(1000) GRANULARITY 4
    )
    ENGINE = MergeTree()
    PARTITION BY toYYYYMM(utc_date)
    ORDER BY (advertiser_application_id)
    SETTINGS index_granularity=8192;

    Но не замечаю прироста производительности:

    xxx.tech 🙂 select count(*) from offers_log_sharded;

    SELECT count(*)
    FROM offers_log_sharded

    ┌──count()─┐
    │ 42314726 │
    └──────────┘

    1 rows in set. Elapsed: 0.022 sec. Processed 42.31 million rows, 42.31 MB (1.94 billion rows/s., 1.94 GB/s.)

    xxx.tech 🙂 select count(*) from offers_log_sharded where creative_id = 14;

    SELECT count(*)
    FROM offers_log_sharded
    WHERE creative_id = 14

    ┌─count()─┐
    │ 24 │
    └─────────┘

    1 rows in set. Elapsed: 0.127 sec. Processed 42.31 million rows, 338.52 MB (332.30 million rows/s., 2.66 GB/s.)
  • Кажется было бы логично попробовать сделать нормальный багрепорт с описанием того как вопроизвести этот баг, если вы хотите чтобы баг был подтвержден / исправлен.
  • А сколько (примерно) разных значений creative_id внутри подряд идущих 8К строк?
  • @yurganov #92445 01:32 PM, 12 Mar 2019
    думаю что около 7-8К
  • @yurganov #92446 01:32 PM, 12 Mar 2019
    ну то есть они сильно уникальные
  • @mfilimonov #92447 01:32 PM, 12 Mar 2019
    Тогда наверное использование этого индекса вряд ли вам будет полезным.
  • @mfilimonov #92448 01:33 PM, 12 Mar 2019
    (Хотя могу ошибаться, пока не вникал как он огранизован)
  • @yurganov #92449 01:33 PM, 12 Mar 2019
    Тогда другой пример
  • @yurganov #92450 01:34 PM, 12 Mar 2019
    Если я сделаю такую таблицу, то, (очевидно), запрос по creative_id будет быстрым.

    CREATE TABLE stat.offers_log_daily
    (
    utc_date Date,
    advertiser_application_id UInt64,
    publisher_application_id UInt64,
    creative_id UInt64,
    ...
    )
    ENGINE = MergeTree()
    PARTITION BY toYYYYMM(utc_date)
    ORDER BY (creative_id)
    SETTINGS index_granularity=8192;
  • @mfilimonov #92451 01:34 PM, 12 Mar 2019
    угу
  • @yurganov #92452 01:34 PM, 12 Mar 2019
    Верным ли является в такой ситуации подход создавать несколько копий одних и тех же данных в разных таблицах с разным набором индексом?
  • @yurganov #92453 01:35 PM, 12 Mar 2019
    Ну и второй вопрос - почему в данном случае первичный ключ нам помогает, а при создании дополнительного индекса - нет?
  • @mfilimonov #92454 01:36 PM, 12 Mar 2019
    На такие вопросы нет "правильного" ответа. Если результат вас устраивает - значит подход верный, если нет - значит неверный :)
  • @mfilimonov #92455 01:36 PM, 12 Mar 2019
    Первичный индекс - данные по нему отсортированы.
  • @yurganov #92456 01:36 PM, 12 Mar 2019
    О'к 🙂

    Перефразирую - есть ли какой то другой способ получить схожую производительность не создавая таблицы под каждый индекс?
  • @yurganov ↶ Reply to #92455 #92457 01:37 PM, 12 Mar 2019
    а по дополнительному индексу нет?
  • @mfilimonov #92458 01:37 PM, 12 Mar 2019
    Для начала попробуйте просто ORDER BY (advertiser_application_id,creative_id)
  • @mfilimonov #92459 01:37 PM, 12 Mar 2019
    При создании таблицы.
  • @yurganov #92460 01:38 PM, 12 Mar 2019
    Да, это хорошая идея, но я упростил запрос, на деле у меня порядка 6 полей в order by
  • @yurganov #92461 01:38 PM, 12 Mar 2019
    и, соответственно, по последнему будет плохо работать праймари кей
  • @yurganov #92462 01:39 PM, 12 Mar 2019
    В таком случае я думал, что меня спасет дополнительный индекс

    Но похоже мой путь - несколько таблиц с разными ключами сортировки
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #92462 #92463 01:39 PM, 12 Mar 2019
    Почему несколько, на первый взгляд их должно быть 2-е
  • @mfilimonov #92464 01:39 PM, 12 Mar 2019
    Доп. индекс - это не настроящий индекс, это просто какая-то вычисленная для каждого блока данных штуковина заглянув в которую можно решить "этот блок читать не будем".
  • @yurganov #92465 01:39 PM, 12 Mar 2019
    Ага, понятно
  • @yurganov #92466 01:39 PM, 12 Mar 2019
    CREATE TABLE stat
    (
    utc_date Date,
    advertiser_application_id UInt64,
    publisher_application_id UInt64,
    adnetwork_id UInt8,
    admediation_id UInt8,
    platform_id UInt8,
    geo_id UInt8,
    device_id UInt8,
    creative_id UInt64,
    offers_log_id UInt64,
    ratio Float32,
    )
    ENGINE = MergeTree()
    PARTITION BY toYYYYMM(utc_date)
    ORDER BY (advertiser_application_id, publisher_application_id, adnetwork_id, creative_id, geo_id, platform_id)
    SETTINGS index_granularity=8192;
  • @yurganov ↶ Reply to #92463 #92467 01:40 PM, 12 Mar 2019
    Вот моя таблица
  • @yurganov #92468 01:40 PM, 12 Mar 2019
    условно, мне бы хотелось максимально быстро получать результат по каждому из полей в ORDER BY
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #92468 #92469 01:41 PM, 12 Mar 2019
    Они, обычно, связаны, например адвертайзер и креатив, если выбираем по креативу то пихаем в запрос еще и адвертайзера, в этом случае будет работать индекс и т.д..
  • @yurganov #92470 01:42 PM, 12 Mar 2019
    Обычно связаны, но мы же не бизнес-логику тут обсуждаем 🙂
  • @yurganov #92471 01:42 PM, 12 Mar 2019
    Представим, что бывают не связаны.
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #92470 #92472 01:43 PM, 12 Mar 2019
    Это важно, если есть связные данные то можно легко написать свой "оптимизатор" который модифицирует запрос чтоб он лучше работал
  • @yurganov #92473 01:43 PM, 12 Mar 2019
    Ну и, например, выборка

    advertiser_application_id + creative_id
    и
    publisher_application_id + platform_id

    для максимальной производительности потребует наличие двух индексов
  • https://t.me/clickhouse_ru
    @kshvakov #92474 01:44 PM, 12 Mar 2019
    ага
  • @yurganov #92475 01:44 PM, 12 Mar 2019
    Создать два индекса сейчас возможно только двумя копиями данных, верно?
  • Я так понимаю что у вас поля в ORDER BY размещены в порядке нарастания кардинальности?
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #92475 #92477 01:44 PM, 12 Mar 2019
    Да, нужно 2-е таблицы
  • @mfilimonov #92478 01:44 PM, 12 Mar 2019
    Можно попробовать ещё добавить minmax
  • @mfilimonov #92479 01:45 PM, 12 Mar 2019
    для числовых полей, если они входят в ORDER BY,
  • @mfilimonov #92480 01:46 PM, 12 Mar 2019
    Скорее всего результат будет не впечатляющим, но лучшим чем без него.
  • @yurganov #92481 01:46 PM, 12 Mar 2019
    Угу, это понятно. Но сначала все равно будут просканированы все данные.
  • @v_sotnikov #92482 01:47 PM, 12 Mar 2019
    Joined.
  • Почему? те блоки данных в которых хранятся другие диапазоны данных будут пропущены с помощью индекса
  • @yurganov #92484 01:47 PM, 12 Mar 2019
    Да, уже понял
  • @mfilimonov #92485 01:47 PM, 12 Mar 2019
    Т.е. индекс будет прочитан целиком и те блоки в которых значение лежит в нужном диапазоне
  • @mfilimonov #92486 01:48 PM, 12 Mar 2019
    Но minmax индекс - маленький и легкий.
  • @yurganov #92487 01:48 PM, 12 Mar 2019
    Сейчас проверю
  • @mfilimonov #92488 01:48 PM, 12 Mar 2019
    На возрастающих / убывающих числовых значениях должен давать хорошие результаты.
  • @yurganov #92489 01:49 PM, 12 Mar 2019
    Да, это нам, по идее, подойдет.
  • @yurganov #92490 01:49 PM, 12 Mar 2019
    Потому что creative_id в начале и в конце разные - creative_id возрастает во времени
  • @yurganov #92492 01:50 PM, 12 Mar 2019
    круто
  • @yurganov #92493 01:51 PM, 12 Mar 2019
    Спасибо, @mfilimonov @kshvakov
  • @yurganov #92494 01:51 PM, 12 Mar 2019
    @kshvakov за драйвер для Golang отдельное 😉
  • @v_sotnikov #92495 01:52 PM, 12 Mar 2019
    Добрый день!
    Необходимо в select запросе вывести все элементы кроме первых 10. Знаю, что можно сделать limit 10, 5 тогда вернуться 11-15 элементы, а хотелось бы с 11 до конца. Как это сделать?
  • на отсортированных данных - можете так попробовать:
    SELECT columns FROM
    (
    SELECT columns
    FROM table
    ORDER BY ...
    )
    WHERE (rowNumberInAllBlocks() > 10);

    Хотя кажется проще - просто пропустить ненужные строки на клиенте :)
  • Действительно, лучше на клиенте)
  • спасибо
  • @yurganov ↶ Reply to #92496 #92499 01:59 PM, 12 Mar 2019
    А если их 500к? 🙂

    Можно попробовать так:

    SELECT columns FROM table WHERE id > (SELECT id FROM table ORDER BY id LIMIT 5,1)
  • @yurganov #92500 02:01 PM, 12 Mar 2019
    @mfilimonov я правильно понимаю, что если я хочу создать INDEX minmax для каждого из полей, то могу просто перечислить их в одном INDEX

    >>если выражение - tuple, то для каждого элемента tuple
  • SELECT MAX(id) FROM table LIMIT 5 - полагаю вернет вам не совсем то что вы ожидаете :)
  • @yurganov #92502 02:02 PM, 12 Mar 2019
    -
  • @yurganov #92503 02:02 PM, 12 Mar 2019
    Я просто с деревни
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #92494 #92504 02:03 PM, 12 Mar 2019
    Если вдруг соберетесь тесты писать то для Go теперь еще есть вот такая штука для помощи в тестировании КХ и Go https://github.com/ClickHouse-Ninja/ok :)
  • Ну если вы будете их как tuple искать - тогда да, наверное (хотя я не знаю реализовано ли это). Если хотите по каждому из них отдельно - то просто несколько отдельных индексов.
  • @yurganov ↶ Reply to #92504 #92506 02:08 PM, 12 Mar 2019
    👍
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @Mike_Er #92508 02:18 PM, 12 Mar 2019
    Есть шанс, что такие джойны заведутся когда-нибудь?
  • https://t.me/clickhouse_ru
    @Mike_Er #92509 02:18 PM, 12 Mar 2019
    это пантахо генерит такие запросы
  • А на 19.4 тоже не работает?
  • https://t.me/clickhouse_ru
    @Mike_Er ↶ Reply to #92510 #92511 02:22 PM, 12 Mar 2019
    Пока не собирал его, попробую, спасибо
  • @mfilimonov #92512 02:22 PM, 12 Mar 2019
    Кажется выше были обсуждения, между прочим о том что такие селекты должы работать (возможно не эффективно). @den_crane очень внимательно следит за темой разных вариантов джойнов, ну и @chertus поправляет всё что не работает. Думаю они дадут более компетентный ответ :)
  • @mfilimonov #92513 02:27 PM, 12 Mar 2019
    Да. На уровне синтаксиса. Будет эквивалентно CROSS JOIN + WHERE
  • @571805847 #92514 02:40 PM, 12 Mar 2019
    Не знаю кто и где информацию по мультисвязке держит, но вот на сайте производителя

    https://clickhouse.yandex/docs/ru/getting_started/example_datasets/star_schema/

    Рисуем звезду, т.с.
  • @571805847 #92515 02:42 PM, 12 Mar 2019
    Думаю, что вот это и нужно было

    CREATE TABLE lineorder_flat
    ENGINE = MergeTree
    PARTITION BY toYear(LO_ORDERDATE)
    ORDER BY (LO_ORDERDATE, LO_ORDERKEY) AS
    SELECT *
    FROM lineorder
    ANY INNER JOIN customer ON LO_CUSTKEY = C_CUSTKEY
    ANY INNER JOIN supplier ON LO_SUPPKEY = S_SUPPKEY
    ANY INNER JOIN part ON LO_PARTKEY = P_PARTKEY;
  • Это вы к тому что при денормализованных данных и джойны не нужны? Да, конечно для bigdata денормализация часто - выход. Но увы, денормализация применима не всегда, и со стороны базы думаю правильно давать выбор пользователю, и поддерживать стандарты SQL хотя бы настолько, насколько это необходимо для работы всяких популярных BI интструментов.
  • Я еще и о том, что КХ поддерживает мультисвязку уже.

    Я вот о чем

    I hereby agree to the terms of the CLA available at: https://yandex.ru/legal/cla/?lang=en

    Category (leave one):

    New Feature
    Short description (up to few sentences):
    Convert CROSS JOIN to INNER JOIN if possible

    Detailed description (optional):
    Rewrite AST. Move WHERE section of CROSS JOIN to ON section of INNER JOIN.
  • @571805847 #92518 02:57 PM, 12 Mar 2019
    Можно пробовать, только собрать с мастера февральскую версию.
  • @571805847 #92519 02:58 PM, 12 Mar 2019
    Денормализация - это выход часто для любой субд, к сожалению.
  • https://t.me/clickhouse_ru
    @den_crane #92520 03:00 PM, 12 Mar 2019
    Можно исправить проблему, не дожидаясь сборки следующего релиза, установив ClickHouse из master. У нас есть готовые сборки почти на каждый коммит. Воспользоваться ими можно так:

    1. Заходим в список коммитов:
    https://github.com/yandex/ClickHouse/commits/master

    2. Находим самый верхний коммит с зелёной галочкой. Зелёная галочка означает, что все тесты прошли.

    3. Нажимаем на зелёную галочку и находим там "ClickHouse build check". Жмём на Details.
    https://clickhouse-builds.s3.yandex.net/0/e7541f03ddc22f8e399fc21a1a7edbb6294db454/report.html

    4. Здесь находим строчку gcc-7, relwithdebuginfo, none, bundled. В данном примере, она верхняя.

    5. Копируем ссылку на пакет clickhouse-common-static:
    https://clickhouse-builds.s3.yandex.net/0/e7541f03ddc22f8e399fc21a1a7edbb6294db454/375561582/clickhouse-common-static_19.1.42_amd64.deb

    6. Скачиваем, устанавливаем.
    ClickHouse/ClickHouse

    ClickHouse is a free analytics DBMS for big data. Contribute to ClickHouse/ClickHouse development by creating an account on GitHub.

  • Солидно, только суть в
    Можно пробовать, только собрать с мастера февральскую версию.
  • https://t.me/clickhouse_ru
    @den_crane #92522 03:02 PM, 12 Mar 2019
    если что вот такой бред https://github.com/yandex/ClickHouse/issues/4571#issue-416618479 уже работает в стейбле 19.4.0.49
  • Здорово! А вы пробовали его производительность?
  • https://t.me/clickhouse_ru
    Когда ожидать этого в релизной версии?
  • Вот здесь, обычно, планы
    https://clickhouse.yandex/docs/ru/roadmap/
  • https://t.me/clickhouse_ru
    @den_crane #92526 03:05 PM, 12 Mar 2019
    еще раз для тех кто в пронепоезде

    select * from (
    select x.b x, count(distinct x.c) ANIMAL
    from (
    select a.ANIMAL a, 'CAT' b, c.ANIMAL c, d.ANIMAL d
    from ANIMAL a join ANIMAL b on a.ANIMAL = b.ANIMAL
    left outer join ANIMAL c on (b.ANIMAL = c.ANIMAL)
    right outer join (select * from ANIMAL union all select * from ANIMAL
    union all select * from ANIMAL) d on (a.ANIMAL = d.ANIMAL)
    where d.ANIMAL <> 'CAT' and c.ANIMAL <>'DOG' and b.ANIMAL <> 'FISH') as x
    where x.b >= 'CAT'
    group by x.b
    having ANIMAL >= 0) ANIMAL
    where ANIMAL.ANIMAL >= 0;

    работает в stable , и кстати даже PG такое не осиливает.
  • Это есть уже в 19.3, включается с помощью allow_experimental_cross_to_join_conversion. В 19.4 вроде как уже включено по умолчанию (дождемся чейнджлога).
  • https://t.me/clickhouse_ru
    @den_crane #92528 03:08 PM, 12 Mar 2019
    про Пентаху: я бы начал исправлять пентаху.
  • version 19.3.4 - работает
  • https://t.me/clickhouse_ru
    что что собрать???
    Вот полчаса назад собралось https://clickhouse-builds.s3.yandex.net/0/8227f5fe63751abdb515b097a846763cf86e6e81/report.html мастер
  • Напомню что последния stable версия имеет номер 19.4.0 и была выпущена 9 марта (3 дня назад). Зачем вы собираетесь какие-то февральские версии собирать?
  • Это я к тому, что давно уже была, только слегка "мягкая" 😉
  • https://t.me/clickhouse_ru
    @den_crane #92533 03:18 PM, 12 Mar 2019
    у меня LT обрабатывает миллиард ивентов и там 19.4.0.49 , уже два дня, проблем 0.
  • Ну на 19.4 пока жалоб не было :)
  • https://t.me/clickhouse_ru
    @den_crane #92535 03:21 PM, 12 Mar 2019
    awful error в 19.4.0.49 пофикшено
  • @mfilimonov #92536 03:21 PM, 12 Mar 2019
    угу. И фикс бэкпортирован в 19.1 и 19.3
  • @mfilimonov #92537 03:23 PM, 12 Mar 2019
    Но 19.4 выглядит более интересным и перспективным вариантом чтобы пробовать на него перейти.
  • @603176181 #92538 03:33 PM, 12 Mar 2019
    Joined.
  • @603176181 #92539 03:35 PM, 12 Mar 2019
    Добрый вечер, такая ситцация 2 реплики потеряли лидера и таблица ушла в отказ (в лимит частей) с Leader was suddenly changed or logical error чет не особо получается найти как назначить лидера или вообще решить проблему.
    Был бы презнателен за подсказку.
  • 1) что значит ушла в отказ / в лимит частей?
    2) при каких обстоятельствах появилась ошибка?
    3) Лидера сам должен выбирать по мере необходимости - можете проверить кто сейчас лидер в system.replicas для каждой таблицы
  • 1) Too many parts (300). Merges are processing significantly slower than inserts
    2) при вставке новых данных
    3) в обоих репликах is_leader = 0
  • @603176181 #92542 03:43 PM, 12 Mar 2019
    при OPTIMIZE TABLE соответсвенно `Leader was suddenly changed or logical error`
  • Хм. При вставке кажется этого не должно проиходить. А что показывает
    SELECT *
    FROM system.zookeeper
    WHERE path = '/<путь к таблице в zookeeper>/leader_election/'
  • @mfilimonov #92544 03:48 PM, 12 Mar 2019
    и что в system.merges / replication_queue?
  • @603176181 #92545 03:50 PM, 12 Mar 2019
    забыл пояснить это, это таблица куда прицеплены материализованные вьюшки, пишется в исходную вьшки подхватывают выдавая Too many parts (300). Merges are processing significantly slower than inserts
  • @603176181 #92546 03:53 PM, 12 Mar 2019
    "data": [
    {
    "name": "leader_election-0000000036",
    "value": "srv1",
    "czxid": "2388001816612",
    "mzxid": "2388001816612",
    "ctime": "2019-03-12 00:54:39",
    "mtime": "2019-03-12 00:54:39",
    "version": 0,
    "cversion": 0,
    "aversion": 0,
    "ephemeralOwner": "144747400446214144",
    "dataLength": 10,
    "numChildren": 0,
    "pzxid": "2388001816612",
    "path": "***********"
    },
    {
    "name": "leader_election-0000000031",
    "value": "srv2",
    "czxid": "1228360647127",
    "mzxid": "1228360647127",
    "ctime": "2019-03-05 03:21:19",
    "mtime": "2019-03-05 03:21:19",
    "version": 0,
    "cversion": 0,
    "aversion": 0,
    "ephemeralOwner": "74178597817745408",
    "dataLength": 10,
    "numChildren": 0,
    "pzxid": "1228360647127",
    "path": "***********"
    }
    ],
  • @603176181 #92547 03:55 PM, 12 Mar 2019
    в system.merges пусто, replication_queue по текущей таблице пусто
  • https://t.me/clickhouse_ru
    @andrei_tserakhau #92548 03:56 PM, 12 Mar 2019
    привет, подскажите а как должны быть представлены Decimal в https://clickhouse.yandex/docs/ru/interfaces/formats/#rowbinary
  • Похоже вы выполняете эти селекты и смотрите на ошибки не на лидере. Проверьте тоже самое на второй реплике, она должна быть лидером. Там в логах возможно есть какие-то сообщения об ошибках, проверьте
  • https://t.me/clickhouse_ru
    @chertus ↶ Reply to #92507 #92550 04:12 PM, 12 Mar 2019
    переписывание одной запятой в cross join включено в мастере какое-то время назад, для нескольких запятых - тут https://github.com/yandex/ClickHouse/pull/4661
    Multiple COMMA/CROSS JOINS by 4ertus2 · Pull Request #4661 · yandex/ClickHouse

    I hereby agree to the terms of the CLA available at: https://yandex.ru/legal/cla/?lang=en Category (leave one): New Feature Short description (up to few sentences): Rewrite multiple COMMA JOINS t...

  • на обоих серваках идентично, лидер 0, тоже самое в leader_election
    "data": [
    {
    "engine": "ReplicatedSummingMergeTree",
    "is_leader": 0,
    "is_readonly": 0,
    "replica_name": "srv1",
    "total_replicas": 2,
    "active_replicas": 2
    }
    ],

    "data": [
    {
    "engine": "ReplicatedSummingMergeTree",
    "is_leader": 0,
    "is_readonly": 0,
    "replica_name": "srv2",
    "total_replicas": 2,
    "active_replicas": 2
    }
    ],
  • https://t.me/clickhouse_ru
    @Mike_Er ↶ Reply to #92550 #92552 04:14 PM, 12 Mar 2019
    Спасибо, подожду, пока в мастер смерджат, на 19.4.0 этот запрос тоже не работает (
  • https://t.me/clickhouse_ru
    @chertus #92553 04:15 PM, 12 Mar 2019
    сейчас проверю у себя, видимо что-то упустил
  • https://t.me/clickhouse_ru
    @chertus #92554 04:16 PM, 12 Mar 2019
    можете create-ы таблиц в личку скинуть?
  • На обоих серверах одинаково показывает данные из зукипера?
  • да, могу трейс из логов скинуть с ошибкой на оптимайзе, но не думаю что чем то поможет, упирается в то что не лидер
  • @mfilimonov #92557 04:21 PM, 12 Mar 2019
    А у вас случайно не включено replicated_can_become_leader = 0; ?
  • @603176181 #92558 04:21 PM, 12 Mar 2019
    нет, опция не задана в конфиге
  • @603176181 #92559 04:22 PM, 12 Mar 2019
    ишью похожий находил у человека вылечилось вроде просто обновлением кликхауса
  • @603176181 #92560 04:22 PM, 12 Mar 2019
    но не то что бы сильно подходящее решение )
  • @mfilimonov #92561 04:22 PM, 12 Mar 2019
    Скорее всего и рестарт должен помочь.
  • @mfilimonov #92562 04:23 PM, 12 Mar 2019
    Только не очень понимаю "как же вы дошли до жизни такой" :)
  • @603176181 #92563 04:24 PM, 12 Mar 2019
    попробуем завтра когда будет возможность рестарта с меньшей болью )
  • https://t.me/clickhouse_ru
    up, подскажите пожалуйста, пытаюсь вставить просто как закодированную строку, получаю [CH Error 33] DB::Exception: Cannot read all data. Bytes read: 36. Bytes expected: 70.:
  • Как целое число со знаком. В зависимости от точности Int32 / Int64 / Int128
  • https://t.me/clickhouse_ru
    @andrei_tserakhau #92566 04:41 PM, 12 Mar 2019
    2 числа? precision | scale?
  • @mfilimonov #92567 04:43 PM, 12 Mar 2019
    precision & scale - в типе данных задаётся. Типа Decimal(12,2)
  • @mfilimonov #92568 04:44 PM, 12 Mar 2019
    12 => меньше 19 и больше 10, значит будет записано как Int64.
  • https://t.me/clickhouse_ru
    @dirtyhack #92569 04:44 PM, 12 Mar 2019
    Joined.
  • @mfilimonov #92570 04:45 PM, 12 Mar 2019
    2 => значение умножено на 10e2.
  • @mfilimonov #92571 04:45 PM, 12 Mar 2019
    как-то так.
  • https://t.me/clickhouse_ru
    @andrei_tserakhau #92574 04:46 PM, 12 Mar 2019
    спасибо!
  • @646177701 #92577 04:57 PM, 12 Mar 2019
    Joined.
  • dead beef test:
    ➜ clickhouse-client --query='with toUInt64( 4022250974 ) as a SELECT arrayJoin([a,a,a,a]) as xy Format Native' | xxd
    00000000: 0104 0278 7906 5549 6e74 3634 dead beef ...xy.UInt64....
    00000010: 0000 0000 dead beef 0000 0000 dead beef ................
    00000020: 0000 0000 dead beef 0000 0000 ............

    ➜ clickhouse-client --query='with CAST( 40222509.74 AS Decimal(12,2)) as a SELECT arrayJoin([a,a,a,a]) as xy Format Native' | xxd
    00000000: 0104 0278 790e 4465 6369 6d61 6c28 3132 ...xy.Decimal(12
    00000010: 2c20 3229 dead beef 0000 0000 dead beef , 2)............
    00000020: 0000 0000 dead beef 0000 0000 dead beef ................
    00000030: 0000 0000
  • Вы там посмотрите нет ли чего-то в логах интересного про выборы лидеров и т.п. И может быть найдете в логах с чего всё это началось.
  • @mfilimonov #92580 05:02 PM, 12 Mar 2019
    Потому что всё что сейчас происходит больше похоже на следствия какой-то другой проблемы, а не на причину.
  • @lavrenyuk #92581 07:42 PM, 12 Mar 2019
    Joined.
  • 13 March 2019 (201 messages)
  • @DivPro #92583 04:03 AM, 13 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
    @roko99 #92584 08:30 AM, 13 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
    @ITishkin #92585 09:04 AM, 13 Mar 2019
    подскажите, как пересчитать индекс после alter table add index ? ну окромя optimize table final?
  • @cinder2 #92586 09:21 AM, 13 Mar 2019
    Добрый день, помогите разобраться с кластером КХ из 2-х шард по 2 реплики на каждой шарде. Проблемы начались пару дней назад после падения всех зукиперов .
    Сейчас наблюдаем такие показатели в очередях
    shard 02 rep1
    database─────┬─table───────────────────┬─zookeeper_path───────────────────────────────┬─queue_size─┬─inserts_in_queue─┬─merges_in_queue─┬─absolute_delay─┐
    │ by_adv_stats │ .inner.cpc_products_ctr │ /clickhouse/tables/02/by/cpc_products_ctr │ 54071 │ 51320 │ 2751 │ 290718 │
    │ kz_adv_stats │ .inner.ads_total_stats │ /clickhouse/tables/02/kz/ads_total_stats │ 27486 │ 27486 │ 0 │ 290706 │
    │ kz_adv_stats │ .inner.cpc_products_ctr │ /clickhouse/tables/02/kz/cpc_products_ctr │ 28044 │ 28044 │ 0 │ 290706 │
    │ kz_adv_stats │ currency_rate_shard │ /clickhouse/tables/02/kz/currency_rate_shard │ 1 │ 1 │ 0 │ 172938 │
    │ kz_adv_stats │ events_shard4 │ /clickhouse/tables/02/kz/events_shard4 │ 29041 │ 29041 │ 0 │ 290706 │
    │ ru_adv_stats │ .inner.ads_total_stats │ /clickhouse/tables/02/ru/ads_total_stats │ 4479 │ 4232 │ 247 │ 290703 │
    │ ru_adv_stats │ .inner.cpc_products_ctr │ /clickhouse/tables/02/ru/cpc_products_ctr │ 37987 │ 37884 │ 103 │ 290703 │
    │ ru_adv_stats │ click_shard │ /clickhouse/tables/02/ru/click_shard │ 8558 │ 8325 │ 233 │ 290748 │
    │ ua_adv_stats │ .inner.ads_total_stats │ /clickhouse/tables/02/ua/ads_total_stats │ 49261 │ 49243 │ 18 │ 290715 │
    │ ua_adv_stats │ .inner.cpc_products_ctr │ /clickhouse/tables/02/ua/cpc_products_ctr │ 56256 │ 55504 │ 752 │ 290715 │
    │ ua_adv_stats │ click_shard │ /clickhouse/tables/02/ua/click_shard │ 41 │ 33 │ 8 │ 1623292 │
    │ ua_adv_stats │ currency_rate_shard │ /clickhouse/tables/02/ua/currency_rate_shard │ 1 │ 1 │ 0 │ 86600 │
    └──────────────┴─────────────────────────┴──────────────────────────────────────────────┴────────────┴──────────────────┴─────────────────┴────────────────┘
    shard 02 rep2
    ─database─────┬─table───────────────────┬─zookeeper_path────────────────────────────┬─queue_size─┬─inserts_in_queue─┬─merges_in_queue─┬─absolute_delay─┐
    │ by_adv_stats │ .inner.cpc_products_ctr │ /clickhouse/tables/02/by/cpc_products_ctr │ 1 │ 1 │ 0 │ 28881 │
    │ kz_adv_stats │ events_shard4 │ /clickhouse/tables/02/kz/events_shard4 │ 10778 │ 9440 │ 1338 │ 1361030 │
    │ ru_adv_stats │ click_shard │ /clickhouse/tables/02/ru/click_shard │ 10 │ 10 │ 0 │ 48766 │
    └──────────────┴─────────────────────────┴───────────────────────────────────────────┴────────────┴──────────────────┴─────────────────┴────────────────┘
    shard 01 rep1
    пусто
    shard 01 rep2
    ┌─database─────┬─table───────────────────┬─zookeeper_path────────────────────────────┬─queue_size─┬─inserts_in_queue─┬─merges_in_queue─┬─absolute_delay─┐
    │ ru_adv_stats │ .inner.cpc_products_ctr │ /clickhouse/tables/01/ru/cpc_products_ctr │ 5471 │ 5420 │ 51 │ 54093 │

    все хосты кроме shard 02 rep1 перегружались и некторые таблицы не могли подняться , помогало только добавление флага flags/force_restore_data 1 в зукиппер

    вопрос что делать с очередями , что бы они разгреблись ?

    в логах КХ ошибки
    <Error> InterserverIOHTTPHandler: Code: 232, e.displayText() = DB::Exception: No part 20190312_20190312_25581_25581_0 in table,
  • @cinder2 #92587 09:21 AM, 13 Mar 2019
    <Error> ru_adv_stats..inner.ads_total_stats (StorageReplicatedMergeTree): DB::StorageReplicatedMergeTree::queueTask()::<lambda(DB::StorageReplicatedMergeTree::LogEntryPtr&)>: Code: 235, e.displayText() = DB::Exception: Part all_1429441_1617994_6741 (state Committed) already exists,

    <Error> executeQuery: Code: 252, e.displayText() = DB::Exception: Too many parts (300). Merges are processing significantly slower than inserts., e.what() = DB::Exception

    <Error> kz_adv_stats.events_shard4 (StorageReplicatedMergeTree): DB::StorageReplicatedMergeTree::queueTask()::<lambda(DB::StorageReplicatedMergeTree::LogEntryPtr&)>: Code: 33, e.displayText() = DB::Exception: Cannot read all data. Bytes read: 0. Bytes expected: 8., e.what() = DB::Exception,

    <Error> ru_adv_stats..inner.cpc_products_ctr (StorageReplicatedMergeTree): DB::StorageReplicatedMergeTree::queueTask()::<lambda(DB::StorageReplicatedMergeTree::LogEntryPtr&)>: Code: 49, e.displayText() = DB::Exception: Part 201903_163478_172065_1440 intersects previous part 201903_83240_163478_3731 (state Committed). It is a bug.,

    Чем можно помочь пациенту ?
  • @cinder2 #92588 09:30 AM, 13 Mar 2019
    И еще вопрсо по зукиперру , сколько у кого znod там , у меня 12М на два кластера КХ. Мне кажется это много и из-за этого он нестабильно работает , переодически одна нода отваливается и вообще он стал требовать -Xmx12288m для старта. И еще переодически в логах
    Got user-level KeeperException when processing sessionid:0x60120140b3d0008 type:multi cxid:0x18830 zxid:0xf20123f06e txntype:-1 reqpath:n/a aborting remaining multi ops. Error Path:/clickhouse/tables/01/by/ads_total_stats/replicas/host_1/parts/all_1574042_1574548_179 Error:KeeperErrorCode = NodeExists for /clickhouse/tables/01/by/ads_total_stats/replicas/host_1/parts/all_1574042_1574548_179
  • https://t.me/clickhouse_ru
    Сейчас у нас 13к нод в ЗК на 1 шард из 3х нод. Когда забыли почистить ЗК после отвала ноды ЗК рос очень быстро, было более 1М ключей в логе и ноды КХ не стартовали с такой таблицей. Снапшоты ЗК веслил по 350М, сейчас 3М.
  • @nikita_toloknov #92590 09:59 AM, 13 Mar 2019
    Joined.
  • @cinder2 ↶ Reply to #92589 #92591 10:01 AM, 13 Mar 2019
    А как правильно чистить , после отвала ноды?
  • @anuriq ↶ Reply to #92313 #92592 10:04 AM, 13 Mar 2019
    то есть у вас таблица в легаси формате?
  • https://t.me/clickhouse_ru
    @408138180 #92593 10:16 AM, 13 Mar 2019
    Joined.
  • @ppcosnt #92594 10:43 AM, 13 Mar 2019
    Здравствуйте. Скажите, есть в планах сделать добавление пользователй на горячую (как в постгресе или мускуле), а не через users.xml с перезапуском сервера?
  • https://t.me/clickhouse_ru
    @rheinx ↶ Reply to #92594 #92595 10:48 AM, 13 Mar 2019
    Не надо перезапускать сервер. Они сразу добавляются
  • https://t.me/clickhouse_ru
    @rheinx #92596 10:49 AM, 13 Mar 2019
    И конфиг тоже, но там по моему не все проперти так можно.
  • @ppcosnt ↶ Reply to #92595 #92597 10:52 AM, 13 Mar 2019
    Видимо я пропустил этот момент, когда читал документацию. Сейчас полез смотреть, вот что пишут на эту тему.
    >Сервер следит за изменениями конфигурационных файлов, а также файлов и ZooKeeper-узлов, которые были использованы при выполнении подстановок и переопределений, и перезагружает настройки пользователей и кластеров на лету. То есть, можно изменять кластера, пользователей и их настройки без перезапуска сервера.
  • https://t.me/clickhouse_ru
    @rheinx ↶ Reply to #92597 #92598 10:52 AM, 13 Mar 2019
    Yep
  • @ppcosnt ↶ Reply to #92598 #92599 10:53 AM, 13 Mar 2019
    Спасибо)
  • https://t.me/clickhouse_ru
    @xammett #92600 10:57 AM, 13 Mar 2019
    Всем, привет. Столкнулся с такой проблемой, есть какой-то part_log(директория 201903_194821_195585_661), которого физически нет, инстанс не стратует. До этого я удалил часть данных из query_log. То есть такой папки физически нет на диске, но на нее ругается
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @xammett #92602 10:58 AM, 13 Mar 2019
    не совсем понимаю куда смотреть, почитал подобные темы, якобы нужно удалить данные из detached таблицы, но там ничего нет
  • https://t.me/clickhouse_ru
    @xammett #92603 11:07 AM, 13 Mar 2019
    можно ли как-то пригасить этот мердж
  • https://t.me/clickhouse_ru
    @xammett #92604 11:07 AM, 13 Mar 2019
    чтобы он вообще не делался?
  • @ztlpn #92605 11:13 AM, 13 Mar 2019
    Удаление данных из query_log не должно влиять на part_log :) а вы при живом сервере удаляли?
  • https://t.me/clickhouse_ru
    @xammett #92606 11:13 AM, 13 Mar 2019
    да
  • https://t.me/clickhouse_ru
    Лучше дропнуть таблицы на выводимой ноде. Если нода сломалась без плана и не вернется или вернется без данных, то вручную.
    Используя zkcli , смотрим пути, указанные при создании таблиц, типа
    ls /clickhouse/tables/<shard_id>/<table_name>/log
    у нас это
    ls /clickhouse/tables/02/graphite/log
    если там много элементов, удаляем старые(delete /....) или все(rmr /....)
    но после удаления всех нод по таблицы мы ее пересоздали
  • https://t.me/clickhouse_ru
    @xammett ↶ Reply to #92607 #92608 11:16 AM, 13 Mar 2019
    там много данных, нельзя просто так взять и дропнуть
  • https://t.me/clickhouse_ru
    @metikovvadim #92609 11:16 AM, 13 Mar 2019
    если проблема только в ЗК , а с данными ОК, нужно будет перенести данные в локальную таблицу(Detach .. Attach) и скопировать INSERT ... SELECT из локальной в реплицируемой
  • https://t.me/clickhouse_ru
    @metikovvadim #92610 11:16 AM, 13 Mar 2019
    тогда удалять старые, у вас не настроен auto purge в ЗК ?
  • @ztlpn ↶ Reply to #92606 #92611 11:17 AM, 13 Mar 2019
    Если на проблема возникает прямо на старте, то директория всё-таки должна быть, больше информацию об этом куске взять неоткуда.
  • https://t.me/clickhouse_ru
    @xammett ↶ Reply to #92611 #92612 11:17 AM, 13 Mar 2019
    не на старте, там начинают грузиться таблицы из других схем, потом идет вот этот мердж и на этом останавливается все
  • https://t.me/clickhouse_ru
    @xammett ↶ Reply to #92610 #92613 11:18 AM, 13 Mar 2019
    у нас 3k дефолтный от хадупа достался
  • @cinder2 ↶ Reply to #92610 #92614 11:19 AM, 13 Mar 2019
    автопурж настроен
    с данными не все ОК, сейчас в одну шарду вообще данные не попадают , и вдругой шарде нет части данных
  • @ztlpn ↶ Reply to #92612 #92615 11:19 AM, 13 Mar 2019
    Останавливается всё это как? сервер не начинает принимать запросы? или просто не идут другие мержи?
  • https://t.me/clickhouse_ru
    Проверьте настройки
    autopurge.snapRetainCount
    autopurge.purgeInterval
  • https://t.me/clickhouse_ru
    @metikovvadim #92617 11:19 AM, 13 Mar 2019
    у нас :
    autopurge.purgeInterval=1
    autopurge.snapRetainCount=10
  • https://t.me/clickhouse_ru
    @xammett ↶ Reply to #92615 #92618 11:20 AM, 13 Mar 2019
    я рестартую сервер, смотрю в лог, там начинают прогружаться таблицы loading data parts, потом идет вот этот мердж и все падает, запросы эта нода не принимает
  • @ztlpn #92619 11:21 AM, 13 Mar 2019
    Ага, это и есть на старте. Директория всё-таки где-то должна быть.
  • https://t.me/clickhouse_ru
    @xammett #92620 11:22 AM, 13 Mar 2019
    хорошо, я сейчас поищу ее, допустим, если она найдет и ее грохнуть, то может все прожеваться по идее?
  • @cinder2 ↶ Reply to #92617 #92621 11:23 AM, 13 Mar 2019
    у нас аналогично
    autopurge.snapRetainCount=10
    autopurge.purgeInterval=1

    + пришлось в крон добавлять пуржить все кроме последних 5 снепшотов
    */5 * * * * root /opt/zookeeper/latest/bin/zkCleanup.sh /var/lib/zookeeper/ -n 5
    потому как бывало , если одна нода начинала тупить лидер место очень быстро на диске забивал
  • @ztlpn #92622 11:24 AM, 13 Mar 2019
    да, можно просто грохнуть
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @xammett #92624 11:24 AM, 13 Mar 2019
    по идее, ошибка ведет сюда, но физически такой папки нет
  • https://t.me/clickhouse_ru
    Вы с ЗК метрики не собираете?
    сколько у вас zk_znode_count ?
  • @ztlpn #92626 11:25 AM, 13 Mar 2019
    А вы как проверяете? Может у вашего пользователя доступа к дата-директории кликхауса нет.
  • @cinder2 ↶ Reply to #92625 #92627 11:25 AM, 13 Mar 2019
    метрики собираем , zk_node_count ~ 12 млн
  • https://t.me/clickhouse_ru
    а part_log включен ?
  • https://t.me/clickhouse_ru
    @xammett ↶ Reply to #92628 #92629 11:25 AM, 13 Mar 2019
    нет
  • https://t.me/clickhouse_ru
    У вас реально столько данных ?
    , партиционирование по чему ?
  • https://t.me/clickhouse_ru
    @xammett ↶ Reply to #92626 #92631 11:27 AM, 13 Mar 2019
    есть, в плане доступов и прочего ничено не менялось, я через консоль захожу в эту директорию и вижу что такого куска нет, видимо он где-то в другом месте
  • @ztlpn ↶ Reply to #92628 #92632 11:30 AM, 13 Mar 2019
    в недавних версиях баг (уже поправлен) - part_log включается сам по себе, даже если выключен в конфиге
  • https://t.me/clickhouse_ru
    @xammett #92633 11:35 AM, 13 Mar 2019
    подскажите, пожалуйста, куда копать. Хочется удалить этот мердж по возможности. Возможно в зк нужно посмотреть?
  • @ztlpn #92634 11:44 AM, 13 Mar 2019
    Эти таблицы (query_log, part_log) не реплицируются и не хранят никакую информацию в зк, мержи назначаются исходя из того, что реально находится на фс. Раз вам она не нужна, можно просто удалить данные и метаданные таблицы part_log
  • @ztlpn #92635 11:45 AM, 13 Mar 2019
    Либо попробуйте все-таки поискать плохой кусок
  • https://t.me/clickhouse_ru
    @ogornostaev #92636 11:58 AM, 13 Mar 2019
    Как понять что не нравится?
    Poco::Exception. Code: 1000, e.code() = 1241, e.displayText() = mysqlxx::BadQuery: Operand should contain 1 column(s) (.......:3306)

    запрос такого плана:

    select user
    from requests
    where instance = 'aaaa'
    and request_result = 'bbbb'
    and toYYYYMMDD(request_date) = 20190306;

    1. requests имеет engine=MySQL
    2. если запрос выполнять с любыми 2 условиями а не 3, то работает

    и вот так работает )
    select user
    from requests
    where and(instance = 'aaaa', request_result = 'bbbb')
    and toYYYYMMDD(request_date) = 20190306;
  • https://t.me/clickhouse_ru
    @xammett ↶ Reply to #92634 #92637 11:59 AM, 13 Mar 2019
    чем может грозить удалением данных и метаданных таблицы part_log?
  • @cinder2 ↶ Reply to #92630 #92638 12:03 PM, 13 Mar 2019
    ключ шардирования ? rand()
    данных порядка 100Gb на каждом шарде
  • @ztlpn ↶ Reply to #92637 #92639 12:05 PM, 13 Mar 2019
    Потерей данных этой таблицы (история действий с кусками)
  • @YaroslavMakarov #92640 12:10 PM, 13 Mar 2019
    Можно ли как-то посмотреть время вставки конкретной строки в ClickHouse? Какой-нибудь параметр указать при запросе?
  • https://t.me/clickhouse_ru
    Это старая проблема движка mysql, явно никак не лечится. Я сделал вьюху над такой таблицей - работает нормально
  • https://t.me/clickhouse_ru
    а в чем именно проблема? то что нельзя более 2 and условий?
  • https://t.me/clickhouse_ru
    @xammett ↶ Reply to #92639 #92643 12:13 PM, 13 Mar 2019
    те, если сейчас нет инсертов и всяких мерджей, то можно грохнуть старые записи в фс и ничего не упадет?:)
  • @ztlpn #92644 12:13 PM, 13 Mar 2019
    у вас же сервер не стартует
  • https://t.me/clickhouse_ru
    @xammett #92645 12:13 PM, 13 Mar 2019
    part_log директории
  • https://t.me/clickhouse_ru
    @xammett #92646 12:13 PM, 13 Mar 2019
    уже стратует
  • https://t.me/clickhouse_ru
    @xammett #92647 12:13 PM, 13 Mar 2019
    его я выключил/включил
  • https://t.me/clickhouse_ru
    @xammett #92648 12:14 PM, 13 Mar 2019
    но в лог переодически прилетают сообщения
  • https://t.me/clickhouse_ru
    @xammett #92649 12:14 PM, 13 Mar 2019
    о неудачном мердже
  • https://t.me/clickhouse_ru
    @xammett #92650 12:14 PM, 13 Mar 2019
    из старого
  • https://t.me/clickhouse_ru
    @xammett #92651 12:14 PM, 13 Mar 2019
    инсерты работают
  • https://t.me/clickhouse_ru
    В реализации движка
  • @ztlpn ↶ Reply to #92646 #92653 12:18 PM, 13 Mar 2019
    На работающем сервере конечно ничего вручную удалять не надо. Тогда просто DROP TABLE.
  • https://t.me/clickhouse_ru
    @xammett ↶ Reply to #92653 #92654 12:18 PM, 13 Mar 2019
    какую? продовую?)
  • @ztlpn #92655 12:18 PM, 13 Mar 2019
    part_log
  • @ztlpn #92656 12:18 PM, 13 Mar 2019
    она же вам мешает
  • https://t.me/clickhouse_ru
    @xammett #92657 12:18 PM, 13 Mar 2019
    сейчас опишу более детально
  • https://t.me/clickhouse_ru
    @xammett #92658 12:19 PM, 13 Mar 2019
    сейчас все работает, но ругается на query_thread_log
  • https://t.me/clickhouse_ru
    @xammett #92659 12:20 PM, 13 Mar 2019
    кстати, при запросе в part_log эта ошибка и выпадает)
  • https://t.me/clickhouse_ru
    @xammett #92660 12:21 PM, 13 Mar 2019
    если part_log грохнуть он пересоздаться автоматически по новой или нужно самому?
  • https://t.me/clickhouse_ru
    @xammett #92661 12:21 PM, 13 Mar 2019
    так как он системный немного боязно)
  • https://t.me/clickhouse_ru
    @xammett #92662 12:29 PM, 13 Mar 2019
    с part_log проблема ушла
  • https://t.me/clickhouse_ru
    @xammett #92663 12:29 PM, 13 Mar 2019
    теперь тоже самое с query_log
  • https://t.me/clickhouse_ru
    @xammett #92664 12:29 PM, 13 Mar 2019
    я так понимаю, что ее тоже можно грохнуть и просто пересоздать?
  • https://t.me/clickhouse_ru
    @kshvakov ↶ Reply to #92664 #92665 12:45 PM, 13 Mar 2019
    Сама появится, можно просто дропнуть
  • https://t.me/clickhouse_ru
    @Sablast #92666 12:53 PM, 13 Mar 2019
    подскажите, то что arrayCount() не может посчитать количество элементов типа datetime это баг или фича?
  • https://t.me/clickhouse_ru
    @xammett ↶ Reply to #92665 #92667 01:00 PM, 13 Mar 2019
    действительно) сама появилась.
  • @cinder2 #92668 01:00 PM, 13 Mar 2019
    подскажите в зукиппере есть такой путь stat /clickhouse/tables/01/ru/events_shard4/log
    numChildren = 826133
    на что это влияет , сколько их можно удалить ?
  • https://t.me/clickhouse_ru
    @vstepankov #92669 01:46 PM, 13 Mar 2019
    Друзья, подскажите.
    Отличаются ли по производительности селектов простой MergeTree и ReplacingMergeTree?
    Если брать ситуацию, когда все вставки и мержи произошли, FINAL и оптимайз не нужен
  • https://t.me/clickhouse_ru
    баг, мутная штука этот arrayCount, она проверяет функцию на true / false, а если функции нет, то глючит (ну или баг в документации)

    select arrayCount(x->(isNotNull(x) and assumeNotNull(x) != toDateTime(0)),[now(), now()-100, null,toDateTime(0)])
    select arrayCount(x->(assumeNotNull(x) != toDateTime(0)),[now(), now()-100, null,toDateTime(0)])
  • https://t.me/clickhouse_ru
    нет, не различаются.
  • https://t.me/clickhouse_ru
    @emakarov #92674 02:23 PM, 13 Mar 2019
    кто нибудь сталкивался с задачей расчета длины GPS треков в Clickhouse?
  • https://t.me/clickhouse_ru
    Нет, но выглядит так, как будто не очень сложно. Упорядочить точки по времени возникновения, сгруппировать в массив. arrayMap над массивом - получаем для каждой пары точек расстояние между ними. В конце - суммируем значения в массиве
  • https://t.me/clickhouse_ru
    @emakarov #92676 02:30 PM, 13 Mar 2019
    есть еще одна задача только фильтрации точек
    например, автомобиль когда стоит на месте, точки "прыгают"
    такое "дребезжание" увеличивает километраж
    кроме этого, есть выбросы
  • https://t.me/clickhouse_ru
    @emakarov #92677 02:31 PM, 13 Mar 2019
    но вот хочется уйти от схемы Clickhouse->Python только в CH
  • https://t.me/clickhouse_ru
    если вы знаете эвристику, которая определяет outlier'ов, то можно её попробовать впихнуть в лямбду :)
  • https://t.me/clickhouse_ru
    @blinkovivan #92679 02:36 PM, 13 Mar 2019
    Теперь в консоли управления Яндекс.Облака можно подключаться к кластерам ClickHouse и выполнять SQL-запросы.

    Для этого войдите в консоль управления, откройте страницу нужного кластера и перейдите на вкладку SQL.
    В документации сервиса Yandex Managed Service for Clickhouse подробно описано, как подключаться к кластерам и выполнять запросы.

    #yacloud_news
  • https://t.me/clickhouse_ru
    @ITishkin #92680 02:36 PM, 13 Mar 2019
    подскажите, плиз, по индексам. если у меня основная гранула 8192, а гранула по столбцу 4 (minmax), то КХ при поиске по индексированному столбцу в любом случае будет считывать 8192 записи?
  • https://t.me/clickhouse_ru
    @emakarov ↶ Reply to #92678 #92681 02:37 PM, 13 Mar 2019
    простая эвристика это фильтрация по скоростям, а также фильтрация точек у которых перемещение менее заданного
  • https://t.me/clickhouse_ru
    @fomars #92682 02:39 PM, 13 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
    @mo1seev ↶ Reply to #92679 #92683 02:39 PM, 13 Mar 2019
    Мы уже угадываем, какие там таймауты выставлены
  • https://t.me/clickhouse_ru
    @fomars #92684 02:41 PM, 13 Mar 2019
    привет, подскажите где скачать/как установить clickhouse-client? brew такого пакета не находит..
  • @sergey239 #92685 02:43 PM, 13 Mar 2019
    я сам компилял под mac. маны есть
  • @mminaev #92686 02:51 PM, 13 Mar 2019
    либо можно через докер
  • @sergey239 #92687 02:54 PM, 13 Mar 2019
    docker на маке не нативен (требует vm), вообщем не так удобно...
  • https://t.me/clickhouse_ru
    @sergebezborodov #92688 02:56 PM, 13 Mar 2019
    я несколько дней с компилингом продолбался под мак
  • https://t.me/clickhouse_ru
    @sergebezborodov #92689 02:56 PM, 13 Mar 2019
    в итоге плюнул, пошел купил новый мак и поставил докер
  • https://t.me/clickhouse_ru
    @suvorovis #92690 02:57 PM, 13 Mar 2019
    Привет! Кто нибудь знает, есть возможность ALTER UPDATE делать с JOINом, чтобы была возможность получить данные из другой таблицы? Что то вроде ALTER TABLE Table1 ANY INNER JOIN Table2 USING someId UPDATE Field1 = Field2, где field2 из table2?
  • https://t.me/clickhouse_ru
    @mo1seev ↶ Reply to #92684 #92691 02:57 PM, 13 Mar 2019
    пользуй в докер-контейнере
  • https://t.me/clickhouse_ru
    Спасибо
  • https://t.me/clickhouse_ru
    @mo1seev #92693 02:58 PM, 13 Mar 2019
    ну или датагрип, если тебе ручками делать селекты
  • https://t.me/clickhouse_ru
    @fomars ↶ Reply to #92691 #92694 02:58 PM, 13 Mar 2019
    а где его взять?
  • https://t.me/clickhouse_ru
    @fomars #92695 02:59 PM, 13 Mar 2019
    так окей а для убунты?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @mo1seev ↶ Reply to #92695 #92697 02:59 PM, 13 Mar 2019
    Вечер перестает быть томным
  • https://t.me/clickhouse_ru
    @mo1seev #92698 02:59 PM, 13 Mar 2019
    Если ты ищешь контейнер для убунты - то он ничем не будет отличаться от контейнера для мака
  • https://t.me/clickhouse_ru
    @fomars #92699 02:59 PM, 13 Mar 2019
    не смысли клиент
  • https://t.me/clickhouse_ru
    @fomars #92700 02:59 PM, 13 Mar 2019
    clickhouse-client
  • https://t.me/clickhouse_ru
    @mo1seev #92701 03:00 PM, 13 Mar 2019
    а если клиента для убунты, то:
    https://clickhouse.yandex/docs/ru/getting_started/
  • https://t.me/clickhouse_ru
    @fomars ↶ Reply to #92701 #92702 03:01 PM, 13 Mar 2019
    спасибо. просто в разделе про клиенты этого нет и где искать непонятно
  • https://t.me/clickhouse_ru
    @molo4ko007 #92703 03:17 PM, 13 Mar 2019
    у нас есть MV с uniq(userid) по дням, очень хорошо работает и для недель/месяцев, то есть данные комбинируются корректно
    я почему-то интуитивно подозреваю, что если стейты хранятся так, чтобы можно было делать их слияние, то может, можно делать какие-то другие операции? типа разности и т.д. было бы очень полезно для счетчиков churn/…
  • https://t.me/clickhouse_ru
    @molo4ko007 #92704 03:17 PM, 13 Mar 2019
    или слишком много хочу?
  • https://t.me/clickhouse_ru
    Разносить - это как?
  • https://t.me/clickhouse_ru
    @fomars #92706 03:20 PM, 13 Mar 2019
    а тут что не так?
    root@vla1-fa05cdcde460:/# clickhouse-client --host man-xxxx.db.yandex.net --port 8443 --user xxxx --password yyyy -d luna
    ClickHouse client version 1.1.54380.
    Connecting to database luna at man-xxxx.db.yandex.net:8443 as user xxxx.
    Code: 32. DB::Exception: Attempt to read after eof
  • @faerics ↶ Reply to #92706 #92707 03:29 PM, 13 Mar 2019
    Старый клиент?
  • https://t.me/clickhouse_ru
    @fomars ↶ Reply to #92707 #92708 03:32 PM, 13 Mar 2019
    обновил, то же самое
  • https://t.me/clickhouse_ru
    @fomars #92709 03:33 PM, 13 Mar 2019
    ClickHouse client version 19.4.0.49.
    Connecting to man-xxxx.db.yandex.net:8443 as user xxxx.
    Code: 32. DB::Exception: Attempt to read after eof
  • @cinder2 #92710 03:33 PM, 13 Mar 2019
    лучше что бы клинет был той же версии , что и сервер
  • @cinder2 ↶ Reply to #92706 #92711 03:36 PM, 13 Mar 2019
    а если базу не указывать ?
  • https://t.me/clickhouse_ru
    @fomars ↶ Reply to #92711 #92712 03:37 PM, 13 Mar 2019
    то же
  • https://t.me/clickhouse_ru
    @fomars #92713 03:37 PM, 13 Mar 2019
    и без пароля то же
  • https://t.me/clickhouse_ru
    @Alesapin ↶ Reply to #92709 #92714 03:40 PM, 13 Mar 2019
    А что в логах сервера?
  • https://t.me/clickhouse_ru
    @Alesapin #92715 03:41 PM, 13 Mar 2019
    попробуйте запустить клиент с --send_logs_level=trace
  • https://t.me/clickhouse_ru
    @fomars ↶ Reply to #92714 #92716 03:41 PM, 13 Mar 2019
    я не знаю, это chaas
  • https://t.me/clickhouse_ru
    @fomars #92717 03:41 PM, 13 Mar 2019
    это еще надо разбираться где там логи и как их смотреть. Я пока http попробую
  • https://t.me/clickhouse_ru
    @Alesapin #92718 03:42 PM, 13 Mar 2019
    попробуйте запустить клиент с --send_logs_level=trace
  • https://t.me/clickhouse_ru
    @Alesapin #92719 03:42 PM, 13 Mar 2019
    Тогда логи сами приедут и вы их увидите в stderr
  • https://t.me/clickhouse_ru
    dictGet/JoinGet
  • https://t.me/clickhouse_ru
    @fomars ↶ Reply to #92718 #92721 03:43 PM, 13 Mar 2019
    опять то же самое
  • https://t.me/clickhouse_ru
    @Alesapin #92722 03:44 PM, 13 Mar 2019
    Code: 32. DB::Exception: Attempt to read after eof и больше ничего?
  • https://t.me/clickhouse_ru
    @fomars #92723 03:44 PM, 13 Mar 2019
    да
  • https://t.me/clickhouse_ru
    @Alesapin #92724 03:44 PM, 13 Mar 2019
    странно конечно
  • https://t.me/clickhouse_ru
    @Alesapin #92725 03:45 PM, 13 Mar 2019
    Так стоп, а откуда такой порт --port 8443?
  • https://t.me/clickhouse_ru
    @Alesapin #92726 03:46 PM, 13 Mar 2019
    Это вообще https, а clickhouse-client работает по tcp
  • https://t.me/clickhouse_ru
    @fomars ↶ Reply to #92725 #92727 03:50 PM, 13 Mar 2019
    поменял на 9440, то же самое
  • https://t.me/clickhouse_ru
    @Alesapin ↶ Reply to #92727 #92728 03:53 PM, 13 Mar 2019
    Тогда по 9000 попробуйте
  • https://t.me/clickhouse_ru
    @fomars ↶ Reply to #92728 #92729 03:53 PM, 13 Mar 2019
    9000 там закрыт
  • https://t.me/clickhouse_ru
    @fomars #92730 03:53 PM, 13 Mar 2019
    Connection refused
  • https://t.me/clickhouse_ru
    @Alesapin #92731 03:54 PM, 13 Mar 2019
    Ещё попытка — попробуйте указать 9440 и опцию --secure
  • https://t.me/clickhouse_ru
    @fomars #92733 03:56 PM, 13 Mar 2019
    почти так же как с курлом
  • https://t.me/clickhouse_ru
    @fomars #92734 03:56 PM, 13 Mar 2019
    это может быть связано с внутреннми сертификатами?
  • https://t.me/clickhouse_ru
    Разность.
    Приведу пример
    есть 2 записи в MV:

    11-03-2019 uniqState(…) // uniqStateA
    12-03-2019 uniqState(…) // uniqStateB

    я могу делать SELECT day, uniqMerge(cnt) FROM mv GROUP BY day
    и получу 2 числа - уникальные посетители для каждого дня
    а могу SELECT uniqMerge(cnt) FROM mv WHERE day > today() - 2, и в результате получаю 1 число, которое является не просто суммой, а реальным значением uniq(userid) за _2_ дня.
    На основании этого у меня есть догадка, что стейты для каждого из дней несут в себе достаточно данных, чтобы можно было их комбинировать, грубо говоря, я беру объединение двух множеств, а потом его мощность.
    Вопрос в том, насколько реально выполнять другие операции, например, разницу тех же множеств? Даже теоретически, если сейчас такого кода нет, возможно ли такое?
  • https://t.me/clickhouse_ru
    Я вас понял, думаю что такое реализуемо в КХ
  • @cinder2 #92737 04:01 PM, 13 Mar 2019
    почему может возникать
    <Error> Application: DB::Exception: Cannot create table from metadata file /var/lib/clickhouse/metadata/by_adv_stats//%2Einner%2Ecpc_products_ctr.sql, error: DB::Exception: The local set of parts of table by_adv_stats..inner.cpc_products_ctr doesn't look like the set of parts in ZooKeeper: 6.27 million rows of 7.71 million total rows in filesystem are suspicious. There are 0 unexpected parts with 0 rows (0 of them is not just-written with 0 rows), 4 unexpectedly merged parts with 6266329 rows, 23877 missing obsolete parts (with 639863 blocks), 0 missing parts (with 0 blocks)., stack trace:
    и может ли приводить create /clickhouse/tables/01/by/cpc_products_ctr/replicas/rep_host1/flags/force_restore_data 1 к потере данных ?
  • https://t.me/clickhouse_ru
    @ax_makarov #92738 04:04 PM, 13 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
    @fkholkin #92739 04:06 PM, 13 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
    joinGet подходит, спасибо
  • https://t.me/clickhouse_ru
    @emakarov ↶ Reply to #92684 #92741 04:29 PM, 13 Mar 2019
    насколько я помню, ставил отсюда как-то https://github.com/arduanov/homebrew-clickhouse
    GitHub - arduanov/homebrew-clickhouse: ClickHouse for MacOS Sierra and High Sierra.

    ClickHouse for MacOS Sierra and High Sierra. Contribute to arduanov/homebrew-clickhouse development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    @inv2004 #92742 04:31 PM, 13 Mar 2019
    Раз в год появляюсь с вопросом одним и тем же: аналитических функций не подвезли и пока не планируется?
  • https://t.me/clickhouse_ru
    Интересно, есть ли у кого опыт постоянной работы со spark над clichouse. Там то аналитические функции точно есть
  • А есть ли в ClickHouse возможность самому писать UDF или SP, как например в SQL Server?
  • https://t.me/clickhouse_ru
    @ployd ↶ Reply to #92742 #92745 06:14 PM, 13 Mar 2019
    А что именно нужно?
  • https://t.me/clickhouse_ru
    Нет, только сразу в КХ
  • Окошечные агрегаты, например...
  • Всмысле только встроенные разрабами в само КХ?
  • https://t.me/clickhouse_ru
    Да. И политика такая что пока от разрабов UDF не ждите. Если что надо - пишите сразу пулл реквест
  • https://t.me/clickhouse_ru
    @inv2004 ↶ Reply to #92747 #92750 06:37 PM, 13 Mar 2019
    Ага
  • https://t.me/clickhouse_ru
    @JackRussell77 #92751 06:39 PM, 13 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
    @beglaryanartur #92752 06:42 PM, 13 Mar 2019
    Добрый вечер, не подскажите почему, когда делаю 2 одинаковых вставки в таблицу с Engine = ReplicatedSummingMergeTree(), в логах пишет

    2019.03.13 18:33:08.492824 [ 93 ] {} <Trace> HTTPHandler: Request URI: /?database=meter&output_format_write_statistics=1&query=INSERT+INTO+facts+FORMAT+CSVWithNames
    2019.03.13 18:33:08.493055 [ 93 ] {7ca04a36-4d93-4ace-9924-bcbf48d40c1d} <Debug> executeQuery: (from [::ffff:192.168.18.38]:36970, user: external) INSERT INTO facts FORMAT CSVWithNames
    2019.03.13 18:33:08.495169 [ 93 ] {7ca04a36-4d93-4ace-9924-bcbf48d40c1d} <Debug> meter.facts (Replicated OutputStream): Wrote block with ID '201901_4647298900027749533_1201448766003505829', 1 rows
    2019.03.13 18:33:08.496383 [ 93 ] {7ca04a36-4d93-4ace-9924-bcbf48d40c1d} <Information> meter.facts (Replicated OutputStream): Block with ID 201901_4647298900027749533_1201448766003505829 already exists; ignoring it.

    и данные теряются, а когда вставка идет в точно такую же таблицу, но SummingMergeTree(), то всё хорошо

    ClickHouse server version 19.1.6
  • https://t.me/clickhouse_ru
    @JackRussell77 #92753 06:43 PM, 13 Mar 2019
    Хочу похвастаться и спросить совета по дальнейшему вектору действий.

    Появилось желание и возможность сделать Excel клиент к YACH (freesource) , пока он умеет не много
    1) хранить пул подключений
    2) хранить и исполнять SQL
    Работает через HTTP

    Так как для меня это академический интерес - то ищу "бета-тестора", что бы довести продукт до ума . Стучитесь в личку
  • @DivPro ↶ Reply to #92752 #92754 06:48 PM, 13 Mar 2019
    надо посмотреть всякие системные таблицы про репликацию видимо system.replicas там
  • https://t.me/clickhouse_ru
    так работает дедупликация на реплицируемых таблицах, для того чтобы вставки можно было повторять при ошибках, ищите в чатике слово insert_deduplicate
  • https://t.me/clickhouse_ru
    @den_crane #92756 07:32 PM, 13 Mar 2019
    https://clickhouse.yandex/docs/ru/operations/table_engines/replication/
    Блоки данных дедуплицируются. При многократной записи одного и того же блока данных (блоков данных одинакового размера, содержащих одни и те же строчки в одном и том же порядке), блок будет записан только один раз. Это сделано для того, чтобы в случае сбоя в сети, когда клиентское приложение не может понять, были ли данные записаны в БД, можно было просто повторить запрос INSERT. При этом не имеет значения, на какую реплику будут отправлены INSERT-ы с одинаковыми данными. Запрос INSERT идемпотентный. Параметры дедуплицирования регулируются настройками сервера merge_tree
  • https://t.me/clickhouse_ru
    @beglaryanartur #92757 07:46 PM, 13 Mar 2019
    В документации про insert_deduplicate ничего не было. Это конфиг на всё семейство ReplicatedMergeTree или для всго MergeTree? И если я иду вообще в неправильном направлении, может надо архитектуру поменять?

    Таблица такой структуры.
    Ключ состоит из трех колонок(timestamp(minutely), int, int) и плюс ещё где-то 20 колонок int и decimal, которые надо суммировать. Репликацию использую в качестве бекапа, все инсерты на один хост идут. Инсерты раз в минуту большими порциями(3-5 млн строк)
  • https://t.me/clickhouse_ru
    в реальной жизни пачка из 1000тыс строк естественным образом повторится не может (вероятность 0%)

    дедупликация -- любые репликатид, в зукипере хешсумма последних 100 бклоков , хранится неделю. Все это настараивается и выключается.

    но еще раз "в реальной жизни пачка из 1000тыс строк естественным образом повторится не может (вероятность 0%)"
  • https://t.me/clickhouse_ru
    >Инсерты раз в минуту большими порциями(3-5 млн строк)
    а что такое инсерт?

    insert into values () () () () ()миллион раз -- это пачка

    vs

    insert into values ();
    insert into values ();
    ... миллион раз -- это миллион пачек
    insert into values ();
  • https://t.me/clickhouse_ru
    Инсерт идет одной пачкой. И у меня как раз случай когда повторяются. Проверил на реальных даннтх. Из этих 1000тыс может быть где то 72К строк где ключ идентичен(minutely_timestamp, int). Структура примерно такая

    CREATE TABLE test_replicating_summing
    (
    minute_timestamp DateTime,
    country_id UInt64,
    count UInt64,
    metric_1 UInt64,
    metric_2 UInt64,
    ............................
    )
    ENGINE = ReplicatedSummingMergeTree('/clickhouse/tables/{shard}/test_replicating_summing', '{replica}')
    PARTITION BY toYYYYMM(minute_timestamp)
    ORDER BY (minute_timestamp, country_id)

    И в это идет идет потом что-то типа этого

    INSERT INTO test_replicating_summing VALUES
    ('2019-01-01 00:00:00', 1, 1, 0, 0, ........)
    ('2019-01-01 00:00:00', 1, 1, 0, 0, ........)
    ('2019-01-01 00:00:00', 2, 1, 0, 0, ........)
    ('2019-01-01 00:00:00', 2, 1, 0, 0, ........)
    ('2019-01-01 00:00:00', 1, 0, 0, 1, ........)
    .....................................................................
  • https://t.me/clickhouse_ru
    прикольно,
    ну добавьте какое-нибудь поле типа uuid или номер пачки, а в summing в первичный ключ не включайте.
  • https://t.me/clickhouse_ru
    @den_crane #92765 08:10 PM, 13 Mar 2019
    метрики/строки схлопнутся, а uuid останется any()
  • https://t.me/clickhouse_ru
    @den_crane #92766 08:13 PM, 13 Mar 2019
    или я не понял, и у вас внутри инсерта повторяются куски? так дефолтный max_insert_block_size=1mil
  • https://t.me/clickhouse_ru
    @beglaryanartur #92767 08:15 PM, 13 Mar 2019
    внутри инсерта куски повторяются. По этому и хотел summing использовать. Про max_insert_block_size знаю. Можно будет разделить чтобы максимум 1млн строк было. Но все равно будут повторяться
  • https://t.me/clickhouse_ru
    @den_crane #92768 08:16 PM, 13 Mar 2019
    так а если задать max_insert_block_size = 100mil
  • https://t.me/clickhouse_ru
    @den_crane #92769 08:18 PM, 13 Mar 2019
    ну т.е. либо задавайте в insert (,,,,,,uuid) values( одинаковый id пачки)
    и лейте строки по миллиону , и у каждого insert разный id пачки
  • https://t.me/clickhouse_ru
    @beglaryanartur #92770 08:20 PM, 13 Mar 2019
    Я правильно понял, что задав insert_deduplicate=0 при подключении, у меня все пойдет и будет суммироваться по любому?
  • https://t.me/clickhouse_ru
    да
  • https://t.me/clickhouse_ru
    @beglaryanartur #92772 08:21 PM, 13 Mar 2019
    Мне кажется этого будет достаточно
  • https://t.me/clickhouse_ru
    @beglaryanartur #92773 08:22 PM, 13 Mar 2019
    Надо порпобовать на реальных данных и проверить с цифрами, которые уже есть
  • https://t.me/clickhouse_ru
    @den_crane #92774 08:22 PM, 13 Mar 2019
    вот это clickhouse-client --insert_deduplicate=0
    100% работает
  • https://t.me/clickhouse_ru
    @beglaryanartur #92775 08:22 PM, 13 Mar 2019
    если разницы не будет, то всё ок. Кроме логов, где нибудь ещё можно понять, что вставка не произашла?
  • https://t.me/clickhouse_ru
    @den_crane #92776 08:23 PM, 13 Mar 2019
    нет
  • https://t.me/clickhouse_ru
    @beglaryanartur #92777 08:23 PM, 13 Mar 2019
    В каких нибудь системных таблицах?
  • https://t.me/clickhouse_ru
    @beglaryanartur #92778 08:23 PM, 13 Mar 2019
    понятно
  • https://t.me/clickhouse_ru
    @beglaryanartur #92779 08:24 PM, 13 Mar 2019
    И откуда ещё пожно узнать про секретные незадокументированные параметры))) ?
  • https://t.me/clickhouse_ru
    @den_crane #92780 08:25 PM, 13 Mar 2019
    все документировано, я все смотрю тут

    clickhouse-client --help
  • uniqState не хранит самих значений, он всякие хитрые алгоритмы и структуры использует. Поэтому из uniqState обратно уже ничего не извлечь. Разность скорее всего тоже невозможно. Теоретически это возможно с uniqExactState, но гораздо более естественно и без изменений кода можно добиться нужного вам эффекта с помощью groupUniqArrayState
  • @mfilimonov #92782 08:50 PM, 13 Mar 2019
    По "стоимости" использование groupUniqArray должно быть примерно равно использованию uniqExact, и обе значительно дороже (но точнее) чем uniq
  • https://t.me/clickhouse_ru
    @dirtyhack #92783 09:05 PM, 13 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
    @Fearan #92784 10:15 PM, 13 Mar 2019
    Парни яндексоиды. Есть проблемы немношко.
    Get:12 http://repo.yandex.ru/clickhouse/deb/stable main/ Release [749 B]
    Get:13 http://repo.yandex.ru/clickhouse/deb/stable main/ Release.gpg [543 B]
    Err:13 http://repo.yandex.ru/clickhouse/deb/stable main/ Release.gpg
    Signed file isn't valid, got 'NODATA' (does the network require authentication?)

    Причина: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=923668

    В двух словах - подпись Release с некоторых пор должна быть только ascii-armored.
  • @ofesak #92785 11:00 PM, 13 Mar 2019
    Здраствуйте. Выполняю следующий запрос: select top 100 * from all_trades order by ServerDate desc - проблема в том что Clickhouse проходит по всем 100 миллионов записей, при том что ServerDate - это PRIMARY KEY, и также при создании таблицы указывалось "ORDER BY ServerDate". Почему запрос делаеться так неоптимально и длиться 10 секунд, при том что нужно вернуть всего 100 записей. Это скрипт таблицы (скриншот): https://i.imgur.com/BgeQCyv.png. В запросе all_trades - это Distributed таблица
  • https://t.me/clickhouse_ru
    >Почему запрос делаеться так неоптимально и длиться 10 секунд
    потому что КХ OLAP база данных которая не OLTP. Вам mysql нужен.
  • https://t.me/clickhouse_ru
    @den_crane #92787 11:08 PM, 13 Mar 2019
    Можно просто итеративно приближаться к искомому where ServerDate >= today() , where ServerDate >= today() -1
  • @ofesak ↶ Reply to #92787 #92788 11:10 PM, 13 Mar 2019
    да, вы правы, если использовать where тогда все моментально. спасибо 👍
  • https://t.me/clickhouse_ru
    @den_crane #92789 11:15 PM, 13 Mar 2019
    а тогда возможно проблема в еще была в *, КХ читает все колонки, не понимая что нужно только 100 записей. Как-то хитро надо писать запрос, но как не очень понятно как идентифицировать первичный ключ, чтобы выбрать по нему все колонки только для определнных записей.
  • 14 March 2019 (171 messages)
  • @702593837 #92790 02:10 AM, 14 Mar 2019
    Joined.
  • Спасибо, разберёмся вместе с админами репозитория!
  • Оптимизация - читать данные в порядке первичного ключа, если есть ORDER BY по нему - не сделана. Эта задача в процессе.
  • Выглядит как очень глупый (но простой) баг. Заведёте issue на GitHub?
  • 12M нод в ZooKeeper - это много. Может быть нормальным только при наличии очень большого количества таблиц типа ReplicatedMergeTree или большого количества серверов или очень частых вставок. Для сравнения, в Яндекс.Метрике примерно столько же нод в ZooKeeper на кластер из более 600 машин.

    Также такое возможно при наличии неактивных (умерших) реплик, для которых всё ещё присутствуют записи в ZooKeeper, и накапливаются логи. Проблему накопления логов для таких реплик решили в одном из недавних релизов. Если версия ClickHouse старая, то рекомендую обновиться.
  • В таблице system.replication_queue можно посмотреть на конкретные записи в очереди репликации - должна быть написана причина, почему они не обрабатываются.
  • @cinder2 ↶ Reply to #92795 #92796 07:02 AM, 14 Mar 2019
    ClickHouse server version 18.10.3 revision 54405.
    last_exception: Code: 49, e.displayText() = DB::Exception: Part 20190222_20190228_62164_79947_544 intersects previous part 20190222_20190222_62153_62166_3 (state Committed). It is a bug., e.what() = DB::Exception
  • @DivPro #92797 07:06 AM, 14 Mar 2019
    Есть вопрос, если в кластере из 4 нод - 2 мастера и 2 слейва сделать таблицы MergeTree то count записей из Distributed таблицы выдает дичь. А с ReplicatedMergeTree все норм. Почему так?
  • @DivPro #92798 07:07 AM, 14 Mar 2019
    Как мне в кластере юзать обычный MergeTree?
  • Видимо должен правильно быть сконфигурирован кластер. Таблице Distributed все равно из чего читать - из Replicated или нет. Она делает селекты со всех шардов одновременно, из каждого шарда выбирая по одной реплике
  • https://t.me/clickhouse_ru
    @mr_anton_kuznetsov #92800 07:24 AM, 14 Mar 2019
    Ребят, подскажите пытаюсь вставить данные из формата CSV и согласно документации форматирую данные для массивов в таком виде -" [ 'item','item1' ],['120','130']" соотвественно для колонок типа Array(String). Но проблема, когда значений больше 1 получаю ошибку -
    Column 8, name: item_names, type: Array(String), parsed text: <EMPTY>ERROR
    ....
    DB::Exception: Cannot parse input: expected ] at end of stream.: (at row 1).
    Не могу понять как нужно значения для массивов форматировтаь
    PS: данные нужны при использовании external data (если это как то влиет)
  • https://t.me/clickhouse_ru
    Скиньте полный пример строки, на которой падает
  • https://t.me/clickhouse_ru
    "1,352398080044953, 2019-03-13 12:20:00, sell, 10.0, \N, \N, \N,['item','1'], ['120','130']"

    А вот так нормально рабоатет - 1,352398080044953, 2019-03-13 12:20:00, sell, 10.0, \N, \N, \N,['item'], ['120']
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #92803 07:40 AM, 14 Mar 2019
    Массивы, item и числами в виде строк - это две разные колонки типа Array(String)?
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    @bigredweer #92805 07:41 AM, 14 Mar 2019
    Привет! Подскажите, пожалуйста, что я делаю не так в этом запросе? (кроме select *, это понятно, что ужас, текущая ситуация заставляет так делать)
    SELECT *
    FROM default.tracking
    WHERE event_time IN ('2018-12-01 00:00:00', '2018-12-01 23:59:59')
  • https://t.me/clickhouse_ru
    @bigredweer #92806 07:41 AM, 14 Mar 2019
    (возвращает 0 строк)
  • https://t.me/clickhouse_ru
    Да, я глянул в исходниках уже, там прямо понятно написано. Жаль, попробую с groupUniqArray, интересно сравнить с not in.
  • https://t.me/clickhouse_ru
    @Sablast ↶ Reply to #92806 #92808 07:42 AM, 14 Mar 2019
    а сколько должен? у вас точно есть записи где event_time = '2018-12-01 00:00:00' ИЛИ '2018-12-01 23:59:59' ?
  • https://t.me/clickhouse_ru
    @bigredweer #92809 07:42 AM, 14 Mar 2019
    забаньте меня(
  • https://t.me/clickhouse_ru
    @bigredweer #92810 07:42 AM, 14 Mar 2019
    извините, я понял
  • https://t.me/clickhouse_ru
    @Sablast ↶ Reply to #92810 #92811 07:43 AM, 14 Mar 2019
    👍
  • https://t.me/clickhouse_ru
  • https://t.me/clickhouse_ru
    Сейчас потестил с форматом TSV все нормально рабоатет -
    "1\t352398080044953\t2019-03-13 12:20:00\tsell\t10.0\t\\N\t\\N\t\\N\t['item','1']\t['120','130']"
  • https://t.me/clickhouse_ru
    Возможно для формата CSV массивы нужно как по особому экранировать. В доке написано что лучше использовать TSV, по опыту скажу это действительно так
  • https://t.me/clickhouse_ru
    @bigredweer #92815 07:49 AM, 14 Mar 2019
    Хорошо, тогда подскажите, пожалуйста, есть разумный способ получить Where between ('2018-12-01 00:00:00', '2018-12-01 23:59:59')? Там DateTime
  • https://t.me/clickhouse_ru
    Так же как и в обычном sql
    datetime BETWEEN "2019-01-01 00:00:00" AND "2019-02-01 23:59:59"
  • https://t.me/clickhouse_ru
    @bigredweer #92817 07:52 AM, 14 Mar 2019
    Спасибо большое!
  • @cinder2 ↶ Reply to #92794 #92818 07:55 AM, 14 Mar 2019
    а КХ сам следит за кол-м нод ? ( не берем случай , когда умерла реплика ) и что хранится в stat /clickhouse/tables/01/kz/click_shard/log
    numChildren = 131260
    у нас их очень много , как их можно безболезненно почистить ? на что они влияют ?
  • https://t.me/clickhouse_ru
    @zborovskii_andrei #92819 07:57 AM, 14 Mar 2019
    Здравствуйте, у нас данные с клиентов приходят с таким вот ключом userid='ead8e026-da3c-460c-ba14-cf1540f66a20', можете подсказать какой в этом случае лучше выбрать ключ шардирования для Distributed таблицы?
  • Когда не понятно как КХ хочет чтоб вы ему сформатировали входные данные, попросите его самого это сформатировать и делайте так же :)
    select 1,'a',['a','b','c'], [1,2,3] FORMAT CSV;

    1,"a","['a','b','c']","[1,2,3]"
  • @mfilimonov #92821 07:59 AM, 14 Mar 2019
    т.е. в формате CSV таблицы нужно "оборачивать" в строку в двойных кавычках.
  • https://t.me/clickhouse_ru
    Спасибо, возьму на заметку)
  • И мои наблюдения кстати тоже подтверждают что TSV - самый "нормальный" вариант.
  • https://t.me/clickhouse_ru
    @Sablast #92824 08:12 AM, 14 Mar 2019
    а нет планов научить КХ работать с UBER H3 ?
  • https://t.me/clickhouse_ru
    @valyala ↶ Reply to #92824 #92825 08:49 AM, 14 Mar 2019
    Может, M3?
  • https://t.me/clickhouse_ru
    @Sablast ↶ Reply to #92825 #92826 08:50 AM, 14 Mar 2019
    нет, все таки h3 - https://eng.uber.com/h3/
    H3: Uber’s Hexagonal Hierarchical Spatial Index

    Uber developed H3, our open source grid system for optimizing ride pricing and dispatch, to make geospatial data visualization and exploration easier and more efficient.

  • https://t.me/clickhouse_ru
    @ployd #92827 08:58 AM, 14 Mar 2019
    Господа, а есть ли возможность в ReplacingMergeTree удалять строки? Хочется получить поведение аналогичное compaction-у в кафке. CollapsingMergeTree не очень помогает здесь, т.к. речь про материализованную вьюху, в основную же таблицу sign не попадает
  • https://t.me/clickhouse_ru
    @emakarov #92828 08:59 AM, 14 Mar 2019
    добрый день, нет ли какой-либо возможности для arrayMap или другой функции работы с массивом иметь в процессе вычислений некое "состояние", зависящее от операций на предыдущих шагах работы с массивом?
  • https://t.me/clickhouse_ru
    так если вы будете реплейсить по ключу, разве не такое же поведение получается?
  • https://t.me/clickhouse_ru
    arrayReduce?
  • https://t.me/clickhouse_ru
    @ployd ↶ Reply to #92829 #92831 09:05 AM, 14 Mar 2019
    Мне в итоге именно удалить надо, чтоб не разрасталось.
  • https://t.me/clickhouse_ru
    Вы можете выбрать размер партиции и ключ таким образом, что бы сдвигать старые данные в конец. А потом их удаляете. + ставите deleted = 1
  • https://t.me/clickhouse_ru
    @ployd ↶ Reply to #92832 #92833 09:06 AM, 14 Mar 2019
    Да, пока думаю о такой схеме, если не найду решения лучше. Здесь "удалять" == убивать партицию?
  • https://t.me/clickhouse_ru
    @DmitryMishchenko #92834 09:06 AM, 14 Mar 2019
    Да
  • https://t.me/clickhouse_ru
    @ployd #92835 09:07 AM, 14 Mar 2019
    Просто интуитивно кажется, что удаление при мёрже ничем он замены на новое не отличается.
  • https://t.me/clickhouse_ru
    @valyala ↶ Reply to #92826 #92836 09:07 AM, 14 Mar 2019
    Интересное решение. Я раньше использовал иерархические трехмерные декартовы координаты для пространственного индекса. Работало норм и, в отличии от h3, поддерживало не только координаты на поверхности сферы, но и высоту, а также не было проблем с отнесением координат к иерархии кубов на их границах.
  • https://t.me/clickhouse_ru
    @ployd #92837 09:07 AM, 14 Mar 2019
    Может планируется какой-нибудь CompactionMergeTree?
  • https://t.me/clickhouse_ru
    @molo4ko007 #92838 09:09 AM, 14 Mar 2019
    Но replacing же заменит ваши старые данные новыми при совпадении по ключу?
  • https://t.me/clickhouse_ru
    @molo4ko007 #92839 09:09 AM, 14 Mar 2019
    или вы хотите retention?
  • https://t.me/clickhouse_ru
    @ployd #92840 09:10 AM, 14 Mar 2019
    Именно compaction хочу
  • https://t.me/clickhouse_ru
    @ployd #92841 09:10 AM, 14 Mar 2019
    Объект проходит несколько состояний, а последнем хочу удалить из таблицы
  • https://t.me/clickhouse_ru
    @ployd #92842 09:11 AM, 14 Mar 2019
    Все состояния пишутся в основную таблицу, а вот во вьюху попадает только первое и последнее. На последнем стоит убивать. В теории, достаточно было бы collapsingmergetree, то пишу в таблицу, а не во вьюху и sign не протащить
  • https://t.me/clickhouse_ru
    @molo4ko007 #92843 09:11 AM, 14 Mar 2019
    а, вы имеете в виду поведение компакшена, если null записать?
  • https://t.me/clickhouse_ru
    @ployd #92844 09:11 AM, 14 Mar 2019
    Можно попробовать из основной таблицы select-ом доставать первомое состояние и добавлять sign=-1, но как-то костыльно
  • https://t.me/clickhouse_ru
    @ployd ↶ Reply to #92843 #92845 09:11 AM, 14 Mar 2019
    ага
  • https://t.me/clickhouse_ru
    @molo4ko007 #92846 09:20 AM, 14 Mar 2019
    да, можно попробовать в определении матвью написать что-то типа select a, b, if(c == last, 1970-01-01, actualDate), и чистить партишен для старых дат
  • https://t.me/clickhouse_ru
    @kapustor #92847 09:21 AM, 14 Mar 2019
    Всем привет!
    Очень ищу системного архитектора aka DevOps aka DataOps с экспертизой любовью к КХ!
    Москва, без удалёнки, ТК.
    Компания - вставший на ноги стартап, с деньгами и заказчиками :) Делаем и продаём свою платформу обработки данных.
    Задачи - интеграция CH в платформу (написание ansible ролей по раскатке, оптимизация запросов, интеграции)
    Требования - любовь и знание CH, знание Linux (CentOS/RH).
    Подробности в ЛС.
  • Ближайшие планы в основном другим вещам посвящены, насколько мне извсетно. НО: процент непринятных пулл-реквествов очень не велик, каждый - сам кузнец своего счастья, так что если нужно - можете попробовать добавить :)
  • https://t.me/clickhouse_ru
    @Sablast ↶ Reply to #92848 #92849 09:25 AM, 14 Mar 2019
    я бы с радостью, уметь бы еще =(
  • Думаю, если очень приспичит - специалистов в "плюсах" найти не невозможно (в том числе на "одноразовые" задания).
  • @mfilimonov #92851 09:30 AM, 14 Mar 2019
    Прикрутить функцию / аггрегатную функцию к КХ на основе готовой либки на самом деле совсем не сложно.
  • https://t.me/clickhouse_ru
    @Sablast ↶ Reply to #92850 #92852 09:31 AM, 14 Mar 2019
    так то да, надо только осознать ценность этого - я просто думал, что возможно h3 прижилось в яндексе после покупки русского убера и поэтому появление этих функций в КХ выглядит, с моей точки зрения, логичным))
  • https://t.me/clickhouse_ru
    @emakarov ↶ Reply to #92830 #92853 09:36 AM, 14 Mar 2019
    спасибо, буду смотреть
    вроде бы, только этой функции в документации нет )
  • https://t.me/clickhouse_ru
    @lekspyl #92854 09:40 AM, 14 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
    В той, которую я открыл, есть)
  • https://t.me/clickhouse_ru
    @molo4ko007 #92856 10:17 AM, 14 Mar 2019
    В любом случае, вы всегда можете массив развернуть в строки и на них уже оперировать
  • https://t.me/clickhouse_ru
    @emakarov ↶ Reply to #92855 #92857 10:18 AM, 14 Mar 2019
    странно, есть только в английской версии
  • https://t.me/clickhouse_ru
    @molo4ko007 #92858 10:19 AM, 14 Mar 2019
    А, ну я ее обычно и смотрю, хотя по моему опыту как раз в русской иногда можно найти что-то уникальное
  • https://t.me/clickhouse_ru
    @stufently #92859 10:27 AM, 14 Mar 2019
    а очередь DDL queue можно прямо из кх почистить ?
  • @andrew_gusev #92860 10:31 AM, 14 Mar 2019
    Коллеги,
    есть таблица вида:
    timestamp UInt64,
    dt Date DEFAULT toDate(timestamp/1000)

    при попытке вставить данные из JSON без поля dt
    получаю dt = '0000-00-00'

    я слишком много хочу ?
    (select toDate(timestamp/1000) - дает верный результат)
  • https://t.me/clickhouse_ru
    А в json timestamp как записан?
  • https://t.me/clickhouse_ru
    @dmitry_berezhnov #92862 10:56 AM, 14 Mar 2019
    И какая версия КХ? Поищите в changelog, там в последних версиях описано про вычисление default для json-формата
  • "timestamp":1551906001869
    те это unitx timestamp * 1000 + милисекунды
  • 19.3.4 revision 54415
  • @andrew_gusev #92865 11:01 AM, 14 Mar 2019
    ок, спасибо, почитаю
  • @andrew_gusev #92866 11:21 AM, 14 Mar 2019
    в теории в версии 18.16.0, 2018-12-14 это должно было быть исправлено, но по факту видимо нет
  • https://t.me/clickhouse_ru
    ?insert_sample_with_metadata=1 в строке подключения к кликхаузу и заработает как надо
  • https://t.me/clickhouse_ru
    дефолт поля в json не работают же
  • @ztlpn ↶ Reply to #92866 #92869 11:52 AM, 14 Mar 2019
    Включите опцию insert_sample_with_metadata, в changelog об этом забыли написать
  • https://t.me/clickhouse_ru
    В одной из последних версий пофиксили вроде как :)
  • https://t.me/clickhouse_ru
    @StepanPodkin #92871 11:56 AM, 14 Mar 2019
  • @andrew_gusev #92872 11:58 AM, 14 Mar 2019
    @PodkinSA @ztlpn благодарю! с insert_sample_with_metadata работает!
  • @460254773 #92873 12:17 PM, 14 Mar 2019
    всем привет!
    есть необходимость перенести одну базу на другой диск
    и в /var/lib/clickhouse/data/ симлинк на переехавшую базу
    пройдет такое?
  • https://t.me/clickhouse_ru
    @OrNixx #92874 12:31 PM, 14 Mar 2019
    ну да, а че бы нет
  • https://t.me/clickhouse_ru
    @vmanyushin #92875 12:34 PM, 14 Mar 2019
    cat ActivityExchange | clickhouse-client --query="INSERT INTO mt4.ActivityExchange FORMAT CSV"

    Received exception from server (version 19.1.6):
    ... DB::Exception: Database ActivityExchange doesn't exist.

    база и таблица созданы, если попробовать указать имя таблицы как: mt4.activityExchange, то КХ напишет, что такой таблицы нет. Почему КХ считает название таблицы с большой буквы именем БД?
  • https://t.me/clickhouse_ru
    @vmanyushin #92876 12:35 PM, 14 Mar 2019
    даже с ключем --database=mt4 он выдает все туже ошибку
  • спасибо!
  • https://t.me/clickhouse_ru
    @vmanyushin #92878 12:42 PM, 14 Mar 2019
    да эт у меня косяк был с определением таблиц, вопрос закрыт
  • @zxsanny #92879 01:04 PM, 14 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
    @vkosmos26 #92880 01:08 PM, 14 Mar 2019
    Добрый день! Как можно в агрегирующем запросе склеить массивы?
    arrayConcat не подходит.
    Я делаю вот так
    SELECT
    placemark_id,
    groupArray(answer_array_string) photos
    FROM answer_statistics_records
    GROUP BY placemark_id;

    =>
    + placemark_id + photos +
    | 2 | [[], []] |
    | 1 | [[], [], [], ["/aaa/aa", "/bbb/bb"], ["/ccc/cc", "/ddd/dd"]] |
    но как их объединить в итоге в один массив не нахожу функции. Как в некоторых языках есть фунцкия flatten, аналога не нахожу
    ```
  • https://t.me/clickhouse_ru
    @vkosmos26 #92881 01:12 PM, 14 Mar 2019
    нашел - groupArrayArray
  • Ошибка "intersects previous part" присутствовала в ранних версиях ClickHouse. Следует чинить так:
    - обновление на последний stable;
    - выполнить DETACH PARTITION и ATTACH PARTITION затронутых данных в затронутой таблице.
  • ClickHouse сам удаляет старые ноды в /logs. Их может быть много, если одна из реплик сильно отстаёт или неактивна.
  • @cinder2 ↶ Reply to #92883 #92884 01:24 PM, 14 Mar 2019
    Да, есть сильно отстающие реплики , и отставание растет , я так понимаю , что из-за того , что очередь не разгребается.
  • @cinder2 ↶ Reply to #92882 #92885 01:25 PM, 14 Mar 2019
    спасибо, сейчас попробую починить
  • https://t.me/clickhouse_ru
    @MaximStanovov #92887 01:27 PM, 14 Mar 2019
    Привет, а сильно важно, сколько данных лежит в одной партиции в КХ? Например, у нас планируется порядка уникальных 50кк записей в год и мы хотим сложить всё в одну партицию, чтобы можно было использовать ReplacingMT и схлопывать данные
  • https://t.me/clickhouse_ru
    50млн.? без проблем, это крохотный размер для КХ.

    Партиция схлопнется в один парт если ее размер меньше максимального размера парта (по умолчанию макс. размер 150ГБ, настраивается).
    Т.е. если в партиции будет два парта, например 150ГБ + 3ГБ, они не схлопнутся в один и дубликаты не исчезнут.
    Но это точно не про 50млн, это скорее про 50млрд.
  • Могут быть (не очень страшные) побочные эффекты. Например попытка сделать бэкап будет заканчиваться примерно так: Cannot link /var/lib/clickhouse/data/... to /var/lib/clickhouse/shadow/... errno: 18, strerror: Invalid cross-device link.
  • @Dalmaneo #92891 02:10 PM, 14 Mar 2019
    Приветствую, коллеги!
    Создал таблицу с произвольным ключом партиционирования, ключ - производное от трех полей.
    Залил в таблицу данные, получилось порядка 160к партиций.
    Выполняю два запроса с таблиц по разному ключу партиционирования в clickhouse-client. В запросе в секции where прописываю конкретную поля, по которым формируется партиция.
    В первом случае, в таблице с партициями порядка 160к результат выводится в течение 1 сек.
    Во втором случае, где партиций порядка 160, резултат выводится за 0.3 сек.
    В первом случае даже не показывается, сколько строк было обработано в ходе выполнения запроса, во втором - показывается.
    Предполагаю, в первом случае, он просто ничтожно мало данных считывает, вот и не показывает эту инфу.

    Помогите пожалуйста понять, из-за чего запрос выполняется так долго в первом случае и можно ли это как-нибудь ускорить?
  • слишком много партиций, ФС загибается.
  • https://t.me/clickhouse_ru
    @den_crane #92893 02:14 PM, 14 Mar 2019
    почему ФС? Просто при 160к, надо сходить в 160к*3*(кол-во полей) файлов. И результат из 160к кусков соединить.
    Ф.С. тут не при чем. Тут линейная зависимость. Открыть один файл - 1 сек, миллион файлов - 1млн. сек.
  • Если я всё правильно понял - там запрос заужен до конкретных партиций.
  • @mfilimonov #92895 02:16 PM, 14 Mar 2019
    > В запросе в секции where прописываю конкретную поля, по которым формируется партиция.
  • https://t.me/clickhouse_ru
    просто не делайте 160к партиций. Партиции для управления retention, грубо говоря чтобы дропать проще.
    Используйте sort-key для фильтрации
  • @mfilimonov #92897 02:17 PM, 14 Mar 2019
    Если в одной папке создать 160 тысяч подкаталогов, то "заглянуть" в подкаталог - становится не такой уж простой задачей.
  • https://t.me/clickhouse_ru
    я хотел сказать что сама Ф.С. не виновата и это не оверхед из-за Ф.С. ну т.е. надо сходить на диск 160тыс. раз в разные места. Даже если нет ф.с. и мы знаем куда пойти по адресу на диске, надо сделать 160 тыс. seek, а жесткий умеет только 200iops
  • https://t.me/clickhouse_ru
    это потому что делается stat 160тыс раз ( для каждого файла )
  • https://t.me/clickhouse_ru
    @den_crane #92900 02:20 PM, 14 Mar 2019
    пролистать каталог можно со списком файлов, если за размером не ходить в inode
  • 👍 отличный пример
  • https://t.me/clickhouse_ru
    @emakarov ↶ Reply to #92678 #92902 02:33 PM, 14 Mar 2019
    в принципе, все удалось, пришлось только "векторизовать" эвристики
  • всё так. Но если это HDD то зависимость далека от линейной, как раз из за seek / чтения inode в рандомном порядке. Что для КХ явлеяется "внешним" тормозом, что можно назвать тормозами на уровне ФС / ОС.
  • https://t.me/clickhouse_ru
    @LychanginAV #92904 02:36 PM, 14 Mar 2019
    Joined.
  • @e45456 #92905 03:11 PM, 14 Mar 2019
    Добрый день. Подскажите, есть ли в КХ функция определяющая пересекаются ли массивы?
    Один массив храниться в колонке БД. Второй задается в запросе.
    Сейчас я делаю вот так:
    arrayExists(x -> arrayExists(y -> y = x, ['value1', 'value2']), ArrayField)
    Это работает, но часто падает по памяти. Потребляет количество памяти не сопоставимое с размерами массивов.
    Переделал так:
    array join ArrayField as ArrayValue
    where ArrayValue in ('value1', 'value2')
    Это работает отлично но это приходится делать в подзапросе.

    Хочется пересекать массывы одной функцией.
    В постгресе это делается вот так:
    ArrayField @> ARRAY['value1','value2']
  • https://t.me/clickhouse_ru
    @den_crane #92906 03:13 PM, 14 Mar 2019
    (ответа я не знаю) если массивы предварительно отсортированы то можно проверить только границы (концы отрезков).
    --
    а нет, нельзя.
  • @ztlpn #92907 03:14 PM, 14 Mar 2019
    есть функция arrayIntersect
  • https://t.me/clickhouse_ru
    @Magestico #92908 03:27 PM, 14 Mar 2019
    Joined.
  • @e45456 #92909 03:29 PM, 14 Mar 2019
    Функция arrayIntersect долго думала и уронила мне КХ. Скорее всего по памяти.
    Нашел функцию hasAny. Это то что я и искал.
    Но работает на два порядка медленнее чем array join + in в подзапросе.
    К сожалению
  • https://t.me/clickhouse_ru
    @Magestico #92910 03:29 PM, 14 Mar 2019
    Здравствуйте коллеги, подскажите есть какой-то аналог гитхабовских awesome страниц для clickhouse?
  • https://t.me/clickhouse_ru
    @den_crane #92911 03:39 PM, 14 Mar 2019
    в смылсе faq ? я тесты смотрю в исходниках
  • https://t.me/clickhouse_ru
    @Magestico #92912 03:40 PM, 14 Mar 2019
    Я бы сказал сборник полезных библиотек, приложений, админок, faq и т.д.
  • https://t.me/clickhouse_ru
    @Magestico #92913 03:42 PM, 14 Mar 2019
    GitHub - dzharii/awesome-elasticsearch: A curated list of the most important and useful resources about elasticsearch: articles, videos, blogs, tips and tricks, use cases. All about Elasticsearch!

    A curated list of the most important and useful resources about elasticsearch: articles, videos, blogs, tips and tricks, use cases. All about Elasticsearch! - GitHub - dzharii/awesome-elasticsearch...

  • https://t.me/clickhouse_ru
    @kirze #92914 03:49 PM, 14 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
    @freefess_krd #92915 04:01 PM, 14 Mar 2019
    Joined.
  • @Dalmaneo ↶ Reply to #92893 #92917 04:42 PM, 14 Mar 2019
    т.е. КХ всегда в любом случае ходит во все папки партиций за информацией?
    Например, у нас партиционирование по умолчанию - по месяцам. мы в where указываем нужный месяц от поля, по которому партиция формируется, а КХ все равно пройдет по всем 12 папкам партиций в году, для того, чтобы взять метаданные, которые укажут, с какой конкретно папки ему следует читать?
  • https://t.me/clickhouse_ru
    нет. Партиции элиминируются.
    Т.е. партиционирование по partition by (X%13, toDate(aaa))
    для каждой партиции (и даже парта?) хранится min/max(x) min/max(aaa)
    поэтому КХ при where x = 12 зайдет только в партиции у которых есть данные в 12 -> min/max
  • https://t.me/clickhouse_ru
    @den_crane #92919 04:46 PM, 14 Mar 2019
    и не важно сколько полей в where оба (X, ааа) или только одно, и порядок тоже не имеет значения
  • https://t.me/clickhouse_ru
    @den_crane #92920 04:50 PM, 14 Mar 2019
    Рекомендую вам попробовать рестартовать КХ у которого 160 тыс. партиций и понаблюдать как он стартует 4 часа (просветляет).
  • @Dalmaneo ↶ Reply to #92918 #92921 04:51 PM, 14 Mar 2019
    А если это поле типа string, то min/max уже не работает?
    Я видел кастомные индексы типа set, они могут помочь в данном вопросе?
    Или если, partition by (X), и в where указывается конкретный X, то КХ будет ходить только в эту партицию, а остальные проигнорирует? где X - целое чилсо
  • https://t.me/clickhouse_ru
    работает, skip индексы не про это (смотрите сюда t.me/clickhouse_ru/92372 )
  • https://t.me/clickhouse_ru
    примерный DDL в студию, примерные запросы в студию, все проще, и наоборот все сложнее (КХ умеет сканить малокардинальные поля в префиксе sort-key)
  • https://t.me/clickhouse_ru
    @den_crane #92924 04:55 PM, 14 Mar 2019
    Для строк также точно вычисляется min / max , потому что строки можно сравнить - 'AAA' больше чем '0'
  • https://t.me/clickhouse_ru
    >Или если, partition by (X), и в where указывается конкретный X, то
    >КХ будет ходить только в эту партицию, а остальные проигнорирует? где X - целое чилсо
    да, но если возможных X больше чем 20, то так делать нельзя. Будет слишком много партиций.
    В общем если партиций больше 100 -- это плохо, больше 1000 -- это все - П.

    И в чем проблема с sort-key? c order by X ?
  • @Dalmaneo ↶ Reply to #92923 #92926 05:12 PM, 14 Mar 2019
    примерный DDL
    CREATE TABLE tbl
    (
    load_date UInt64
    , id UInt32
    , type_id UInt16
    /*прочие поля*/
    , sn String
    , deleted UInt8
    )
    ENGINE = MergeTree()
    PARTITION BY (sn, id)
    ORDER BY (sn, id, type_id, load_date)
    SETTINGS index_granularity = 8192

    запросы всегда идут с where sn = ?, id = ?
  • А можно глянуть на select * from system.parts where table ='tbl' and active order by rows desc limit 10?
  • @antonio_antuan #92928 05:22 PM, 14 Mar 2019
    Могу ошибаться с именем rows
  • @Dalmaneo ↶ Reply to #92927 #92929 05:29 PM, 14 Mar 2019
    Немного изменил названия для sn, и ключ по трем полям сейчас(но, пробовал и по двум, как в DDL выше)
    partition name active marks rows bytes_on_disk data_compressed_bytes data_uncompressed_bytes marks_bytes modification_time remove_time refcount min_date max_date min_block_number max_block_number level primary_key_bytes_in_memory primary_key_bytes_in_memory_allocated database table engine path
    (\'candy\', 1096040611, 199) 88e18cb9f45361af428f2f69453b03ae_178702_190740_1 1 42 42372 938850 924241 3262644 11424 2019-03-07 17:39:42 0000-00-00 00:00:00 1 0000-00-00 0000-00-00 178702 190740 1 1680 20992 default tbl MergeTree /var/lib/clickhouse/data/default/tbl/88e18cb9f45361af428f2f69453b03ae_178702_190740_1/
    (\'candy\', 1096040611, 199) 88e18cb9f45361af428f2f69453b03ae_192608_198616_1 1 19 18981 492621 485001 1461537 5168 2019-03-07 18:08:05 0000-00-00 00:00:00 1 0000-00-00 0000-00-00 192608 198616 1 760 20736 default tbl MergeTree /var/lib/clickhouse/data/default/tbl/88e18cb9f45361af428f2f69453b03ae_192608_198616_1/
    (\'something\', 236800706, 198) b17f90fbb194f4e103183b16b697d12f_1311061_1336208_6 1 19 18491 405477 398170 1312861 5168 2019-03-08 13:42:15 0000-00-00 00:00:00 1 0000-00-00 0000-00-00 1311061 1336208 6 646 20608 default tbl MergeTree /var/lib/clickhouse/data/default/tbl/b17f90fbb194f4e103183b16b697d12f_1311061_1336208_6/
    (\'milan\', 1080998632, 199) 01beac0d200c41cebd47fe423c74f5a2_801935_842037_4 1 10 9456 330166 325435 718656 2720 2019-03-08 04:23:15 0000-00-00 00:00:00 1 0000-00-00 0000-00-00 801935 842037 4 390 20608 default tbl MergeTree /var/lib/clickhouse/data/default/tbl/01beac0d200c41cebd47fe423c74f5a2_801935_842037_4/
    (\'milan\', 1080998664, 198) 7d282525e151bb3d1d45f4e57af350fd_770935_792575_2 1 9 9043 312807 308378 687268 2448 2019-03-08 02:37:30 0000-00-00 00:00:00 1 0000-00-00 0000-00-00 770935 792575 2 351 20608 default tbl MergeTree /var/lib/clickhouse/data/default/tbl/7d282525e151bb3d1d45f4e57af350fd_770935_792575_2/
    (\'earth\', 303003438, 198) 6640f9ddce0d19e349804a7b0841de2e_427461_466903_4 1 9 8398 327144 322717 638248 2448 2019-03-07 21:44:14 0000-00-00 00:00:00 1 0000-00-00 0000-00-00 427461 466903 4 351 20608 default tbl MergeTree /var/lib/clickhouse/data/default/tbl/6640f9ddce0d19e349804a7b0841de2e_427461_466903_4/
    (\'candy\', 203015210, 198) 4209a6288b62e86b087529612c03edb8_136277_163475_6 1 8 8058 247371 243254 620466 2176 2019-03-07 17:17:53 0000-00-00 00:00:00 1 0000-00-00 0000-00-00 136277 163475 6 320 20608 default tbl MergeTree /var/lib/clickhouse/data/default/tbl/4209a6288b62e86b087529612c03edb8_136277_163475_6/
    (\'neptun\', 203015210, 198) 98334fad91e6b3d93e4624a1e0059b42_1138226_1177020_4 1 8 7460 309103 304971 581880 2176 2019-03-08 09:25:46 0000-00-00 00:00:00 1 0000-00-00 0000-00-00 1138226 1177020 4 328 20608 default tbl MergeTree /var/lib/clickhouse/data/default/tbl/98334fad91e6b3d93e4624a1e0059b42_1138226_1177020_4/
    (\'och\', 253900455, 198) 4682bcecc815cc8a01c781e8215f3f73_1311200_1337293_6 1 8 7203 301966 297929 511413 2176 2019-03-08 12:59:59 0000-00-00 00:00:00 1 0000-00-00 0000-00-00 1311200 1337293 6 272 20544 default tbl MergeTree /var/lib/clickhouse/data/default/tbl/4682bcecc815cc8a01c781e8215f3f73_1311200_1337293_6/
    (\'mars\', 1165000307, 199) 10f1c553f3be1dfe0762c90319696bd5_31463_68250_4 1 7 7163 272495 268637 530062 1904 2019-03-07 15:28:14 0000-00-00 00:00:00 1 0000-00-00 0000-00-00 31463 68250 4 259 20544 default tbl MergeTree /var/lib/clickhouse/data/default/tbl/10f1c553f3be1dfe0762c90319696bd5_31463_68250_4/
  • https://t.me/clickhouse_ru
    >PARTITION BY toYYYYMM(load_date)
    > ORDER BY (sn, id, type_id, load_date)
    >запросы всегда идут с where sn = ?, id = ?
    ORDER BY покрывает вашу задачу
  • Надеялся, что будет вывод из clickhouse-client, с именами полей... :)
  • @Dalmaneo ↶ Reply to #92931 #92932 05:32 PM, 14 Mar 2019
    подредактировал вывод :)
  • @antonio_antuan #92933 05:34 PM, 14 Mar 2019
    Т.е. в одной партиции не больше 50к строк?
  • @antonio_antuan #92934 05:34 PM, 14 Mar 2019
    В одном парте, пардон
  • @Dalmaneo ↶ Reply to #92933 #92935 05:35 PM, 14 Mar 2019
    да, получается что так
  • @antonio_antuan #92936 05:37 PM, 14 Mar 2019
    А если select partition, sum(rows) as s from system.parts where table ='tbl' and active group by partition order by s desc limit 10?
  • @Dalmaneo ↶ Reply to #92936 #92937 05:40 PM, 14 Mar 2019
    partition s
    (\'candy\', 1096040611, 199) 61353
    (\'mars\', 236800706, 198) 18491
    (\'earth\', 1080998632, 199) 9456
    (\'earth\', 1080998664, 198) 9043
    (\'neptun\', 303003438, 198) 8398
    (\'candy\', 203015210, 198) 8077
    (\'rainbow\', 203015210, 198) 7480
    (\'mars\', 253900455, 198) 7209
    (\'somesn\', 1165000307, 199) 7163
    (\'earth\', 1080998632, 198) 7100
  • @antonio_antuan #92938 05:43 PM, 14 Mar 2019
    У меня есть ничем не подкрепленное ощущение, что ключ партиционирования можно выбрать... подемократичней :)
  • @antonio_antuan #92939 05:44 PM, 14 Mar 2019
    Но я могу ошибаться, это просто ощущение :)
  • @Dalmaneo ↶ Reply to #92938 #92940 05:47 PM, 14 Mar 2019
    в смысле. ключ слишком сложный и КХ не может нормально подобрать, из каких партиций читать?
  • https://t.me/clickhouse_ru
    @ployd ↶ Reply to #92925 #92941 05:47 PM, 14 Mar 2019
    Если партиций много, но пишется/читается из одной, то все равно будет ухудшение производительности?
  • @Dalmaneo ↶ Reply to #92925 #92942 05:48 PM, 14 Mar 2019
    Проблема в ресурсах, потребляемых запросом
  • https://t.me/clickhouse_ru
    @ployd #92943 05:48 PM, 14 Mar 2019
    Может есть какой механизм архивирования, чтобы неиспользуемые партиции не влияли?
  • @cinder2 #92944 05:49 PM, 14 Mar 2019
    Подскажите ,почему могут появляться партиции в а папке detached с префиксом inactive, например detached/inactive_201903_188499_188499_0 и в таблице нет данных с некоторого периода ? И главное что с ними делать , что бы вернуть данные ?
  • https://t.me/clickhouse_ru
    нет не будет.
    Пока select покрывает малое кол-во партиций ухудшения не будет.
    Просто когда их 10000, уже и инсерты начинают дробится на мелкие, и старт КХ замедляется.
  • https://t.me/clickhouse_ru
    @ployd #92946 05:51 PM, 14 Mar 2019
    Ну на старт количество партиций влияет, так?
  • https://t.me/clickhouse_ru
    да, КХ сканит заголовки наверное в каждом файле.
  • https://t.me/clickhouse_ru
    @ployd #92948 05:52 PM, 14 Mar 2019
    Ну и да, скажем их 10к. Это же значит, что при insert-е надо проверить minmax во всех файлах?
  • https://t.me/clickhouse_ru
    @ployd #92949 05:52 PM, 14 Mar 2019
    Архивирования нет?
  • https://t.me/clickhouse_ru
    t.me/clickhouse_ru/65490

    ИМХО: при слиянии партов, старые парты становятся inactive, и через 10 мин. удаляются.
    при внезапном рестарте КХ (в течении тех 10мин.) при старте смерженный парт будет проверен на целостность, если он битый (сервер ребутнулся, fsync нет, новый парт был только в кеше) из inactive будет восстановлен новый парт (помержен), или они остануться inactive если не нужны.
    Alexey Milovidov in ClickHouse не тормозит

    С inactive директориями ничего делать не нужно. Разве что их можно удалить.

  • https://t.me/clickhouse_ru
    я не знаю точно, это не проблема проверки (вся эта метаинформация minmax в памяти), наверное это свойство куска, т.е. есть кусок 21-42, insert вставляет 36-71 (ничего проверять и обновлять не надо). select where 40 находит что вот в тех двух кусках есть 40 (в смысле не заходя в сами куски, просто на верхнем уровне пайплайна)

    вот тут https://github.com/yandex/ClickHouse/pull/2468/commits AlexZ это чинил, можно посмотреть точнее.
  • https://t.me/clickhouse_ru
    @ployd #92953 06:38 PM, 14 Mar 2019
    Я про minmax в памяти и говорю. Движок перебором найдёт нужные партиции?
  • @githubreleases_bot #92954 b o t 07:17 PM, 14 Mar 2019
    yandex/ClickHouse was tagged: v19.1.14-stable
    Link: https://github.com/yandex/ClickHouse/releases/tag/v19.1.14-stable
    Release notes:
    v19.1.14-stable
  • @milovidov_an #92955 07:21 PM, 14 Mar 2019
    Очень маленькое изменение: если было включено asterisk_join_left_columns_only = 1 и использовался GLOBAL JOIN с USING, то могло выдаваться сообщение Column ... is queried twice.
  • @BrBrRoman #92956 07:31 PM, 14 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
    @nodermann #92959 09:15 PM, 14 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
    @nodermann #92960 09:16 PM, 14 Mar 2019
    кто нибудь измерял производительность, сколько запросов в секунду тянет clickhouse?
  • https://t.me/clickhouse_ru
    @vstepankov #92961 09:17 PM, 14 Mar 2019
    от 42 и выше
  • https://t.me/clickhouse_ru
    @ployd #92962 09:17 PM, 14 Mar 2019
    xd
  • https://t.me/clickhouse_ru
    @nodermann #92963 09:18 PM, 14 Mar 2019
    если придет 10000 человек и одновременно захотят получить статистику по своим профилям, им это не удасться?
  • https://t.me/clickhouse_ru
    @andrei_tserakhau #92964 09:29 PM, 14 Mar 2019
    Зависит от кластера. Но в целом удастся, чего бы нет
  • Если каждого из них будет интересовать ответ на вопрос "сколько будет 40+2" то думаю один сервер КХ справится с тысячами запросов в секунду. Если каждый из них будет выполнять сложные агрегации на терабайтах данных, то может быть и при одном запросе в минуту сервер перегружен.
    Мультик вспомнился https://youtu.be/TQhNNgzTEJ4
    Жадный богач (1980) Кукольный мультик | Золотая коллекция

    БЕСПЛАТНО СМОТРИМ ВСЁ ТУТ 👉 https://smotrim.ru/brands/tag/231140/?utm_source=youtube&utm_medium=all&utm_campaign=all_0 👍👍👍 Мультфильм "Жадный богач". Кукольный мультик 1980 года. Золотая коллекция. ⭐Подписаться на лучшие советские мультики ▶https://www.youtube.com/channel/UCU06hfFzcBjQl9-Ih2SvpoQ?sub_confirmation=1 ⭐Все мультфильмы подряд ▶https://www.youtube.com/playlist?list=PLYymTuJXocGKmjzy9GLsS4G-Il89EX-dk Кукольный мультипликационный фильм. О том, как был наказан за жадность богач, который потребовал изготовить семь шапок из небольшой шкуры. Смотрите популярные советские мультфильмы: 🔸Мама для мамонтёнка https://www.youtube.com/watch?v=sVYMsNay8G0 🔸По дороге с облаками https://www.youtube.com/watch?v=0DnjD7w-2FI 🔸Подарок для слона https://www.youtube.com/watch?v=5FZ1yKwQCOY 🔸Дом для Кузьки https://www.youtube.com/watch?v=8JFdlT5XGNc 🔸Падал прошлогодний снег https://www.youtube.com/watch?v=DwJznO6SqyM 🔸Клад. Тигрёнок и его друзья https://www.youtube.com/watch?v=Iz1kKv34-wY 🔸Лето кота Леопольда http…

  • @409617826 #92966 10:27 PM, 14 Mar 2019
    Joined.
  • 15 March 2019 (134 messages)
  • https://t.me/clickhouse_ru
    @OrNixx #92967 06:17 AM, 15 Mar 2019
    всем доброе утро. подскажите, как без репликации наиболее бездаунтаймно перетащить КХ на другой сервер? 300 гиг
  • https://t.me/clickhouse_ru
    @OrNixx #92968 06:18 AM, 15 Mar 2019
    например рсинк прогнать, пока старый ещё в работе, потом поверх прогнать рсинк после останова. Будет консистентно?
  • https://t.me/clickhouse_ru
    @OrNixx #92969 06:34 AM, 15 Mar 2019
    как в эту процедуру правильно встроить FREEZE, пока не пойму
  • https://t.me/clickhouse_ru
    @rheinx ↶ Reply to #92969 #92970 06:37 AM, 15 Mar 2019
    если у вас есть партиции которые уже не меняются, можно делать freeze и перетаскивать хоть рсинком.
  • https://t.me/clickhouse_ru
    @valyala ↶ Reply to #92963 #92971 07:15 AM, 15 Mar 2019
    Для этого лучше использовать ограничение на максимальное количество одновременных запросов плюс установить размер и длительность очереди ожидащих запросов в https://github.com/Vertamedia/chproxy . Максимальное кодичество одновременных запросов лучше делать в районе кодичества ядер процессора на одной ноде * 2. БОльшие значения обычно приводят к замедлению выполнения всех запросов
    GitHub - Vertamedia/chproxy: ClickHouse http proxy and load balancer

    ClickHouse http proxy and load balancer. Contribute to Vertamedia/chproxy development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    @valyala ↶ Reply to #92968 #92972 07:19 AM, 15 Mar 2019
    Можно, но второй рсинк после останова кх нужно выполнять с флагом очистки файлов, которых уже нет в исходном каталоге
  • https://t.me/clickhouse_ru
    @sashganush #92973 07:51 AM, 15 Mar 2019
    Коллеги подскажите как правильно оценить текёт ли у меня по памяти или я неправильно трактую ситуацию:
  • https://t.me/clickhouse_ru
    @sashganush #92974 07:51 AM, 15 Mar 2019
    jemalloc.resident │ 4236693504
  • https://t.me/clickhouse_ru
    @sashganush #92975 07:52 AM, 15 Mar 2019
    314 21.7 40.3 49469716 19935992 ? Ssl Mar07 2434:08 \_ clickhouse-server --config /etc/clickhouse-server/config.xml
  • https://t.me/clickhouse_ru
    @sashganush #92976 07:53 AM, 15 Mar 2019
    ps показывает 20G по версии clickhouse 5G . Всё ли я правильно понимаю ? (19.1.6 revision 54413)
  • https://t.me/clickhouse_ru
    @antgubarev #92977 08:19 AM, 15 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
    @kirichka #92978 08:26 AM, 15 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
    @OrNixx ↶ Reply to #92970 #92979 08:26 AM, 15 Mar 2019
    можно чуть подробнее? как дотащить разницу после фриза ?
  • https://t.me/clickhouse_ru
    @iskinn #92980 09:13 AM, 15 Mar 2019
    Joined.
  • https://t.me/clickhouse_ru
    @Sersecr001 #92981 10:17 AM, 15 Mar 2019
    Всем хорошего дня. Какой на данеый момент самых стабильный драйвер для GOlang?
  • https://t.me/clickhouse_ru
    @andrei_tserakhau #92982 10:18 AM, 15 Mar 2019
    мне нравится вот этот github.com/kshvakov/clickhouse
    GitHub - ClickHouse/clickhouse-go: Golang driver for ClickHouse

    Golang driver for ClickHouse. Contribute to ClickHouse/clickhouse-go development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    @Sersecr001 #92984 10:24 AM, 15 Mar 2019
    А Вы случайно github.com/mailru/go-clickhouse не пробовали?
    GitHub - mailru/go-clickhouse: Golang SQL database driver for Yandex ClickHouse

    Golang SQL database driver for Yandex ClickHouse. Contribute to mailru/go-clickhouse development by creating an account on GitHub.

  • https://t.me/clickhouse_ru
    @andrei_tserakhau #92985 10:24 AM, 15 Mar 2019
    непонра
  • https://t.me/clickhouse_ru
    @Sersecr001 #92986 10:26 AM, 15 Mar 2019
    почему?
  • https://t.me/clickhouse_ru
    этот использую, полёт нормальный
  • https://t.me/clickhouse_ru
    Так же вопрос почему ))))
  • https://t.me/clickhouse_ru
    Первым попался :)
  • https://t.me/clickhouse_ru
    @paintcast #92990 10:30 AM, 15 Mar 2019
    Какое-то глубокое сравнения разных драйверов не проводил
  • https://t.me/clickhouse_ru
    мне надо был нативный формат вставки поколоночный
  • https://t.me/clickhouse_ru
    @nicname #92992 10:32 AM, 15 Mar 2019
    а мне http протокол
  • Но ведь он работает только через tcp коннект, не через http/https... А в tcp умеет только родной клиент...
  • https://t.me/clickhouse_ru
    @ochumelec #92994 10:42 AM, 15 Mar 2019
    ребят, а как правильно добавить поле в materializedView таблицу не удаляя её и не создавая новую?
  • @dmitriy_negreev #92995 10:47 AM, 15 Mar 2019
    Подскажите, где-то можно посмотреть размеры локальных словарей? Увеличил параметр low_cardinality_max_dictionary_size но что-то не вижу прирост производительности, думаю вот как проверить это можно
  • https://t.me/clickhouse_ru
    🤔 так ведь kshvakov/clickhouse использует как раз tcp коннект.
  • 🤔