@clickhouse_ru

Страница 180 из 723
Igor
22.06.2017
11:55:54
Мы проблем со скоростью не наблюдали у нас 6 месяцев в проде драйвер

Maksim
22.06.2017
11:56:26
на каждый запрос новое подключение не закрытое. как это решает проблему. или он наследует свое прошлое подключение?

кто в теме объясните плиз)

Александр
22.06.2017
11:59:58
Кип элайв на уровне курла хендлится

Google
Igor
22.06.2017
12:00:54
В сми2 драйвере keep_alive + FORBID_REUSE - включён по умолчанию

Александр
22.06.2017
12:02:16
Там получается логика такая, что газл прокидывает кипэлайв в курл, курл же уже хэндлит это дело сам и получается, что при повторном запросе на этот же хост уже сам курл использует открытое соединение

Как бы сам php ниче не хендлит в этом плане

Александр
22.06.2017
12:03:26
Не, запросы выполняются как обычно

Maksim
22.06.2017
12:03:33
как проверить этот самый keep-alive

Александр
22.06.2017
12:03:36
Просто это на более низком уровне рулится

Maksim
22.06.2017
12:03:46
сделать запрос несколько раз в цикле и посмотреть время ?

первый должен быть долгий остальные быстрее

верно?

Александр
22.06.2017
12:05:13
Не совсем ) Повторные запросы могут быть и медленней по некоторым причинам ) Например передача данных по сети, время выполнения запроса

Fike
22.06.2017
12:05:24
как все-таки проявляется проблема со временем? просто наблюдается, что запросы дольше идут?

Google
Александр
22.06.2017
12:05:29
Например первый запрос может отработать на сервере за 100мс, второй за 120 несмотря на то, что они одинаковые

Fike
22.06.2017
12:05:33
просто есть вероятность, что не тот вопрос решается

Igor
22.06.2017
12:06:02
а запросы выполнять по умолчанию или нужна какая-то опция/флаг или может это в рамках асинхронных запросов?
Она вшита в код и не отключается, можно включить $ch->verbose(); Будет написанно типа keep-live

Александр
22.06.2017
12:06:51
А кто-то может подсказать по сборке КХ из исходников? Не могу deb пакет собрать. release скрипт ничего не делает )

Тем неменее я собрал обычный бинарник который запускается и вполне себе работает

Maksim
22.06.2017
12:08:48
если она вшита и работает по умолчанию я должен получить на повторно выполняемый запрос разные результаты. первый дольше, остальные быстрее (не учитывая скорости по сети значения должны быть ниже в любом случае)

Александр
22.06.2017
12:19:00
Я же говорю, что не факт что так будет

Даже если запросы одинаковые

Первый запрос сам сервер обработает за 100мс, второй такой же запрос сервер отработает за 120мс

Igor
22.06.2017
12:25:11
даже если это select sleep(1.0) или select 1?

Александр
22.06.2017
12:26:56
Такие само собой одинаково отработают :) И то, нельзя наверняка утверждать

Дмитрий
22.06.2017
12:58:47
Господа, может кто-нибудь помочь разобраться с проблемой сэмплирования? При запросе с сэмплированием вылетает ошибка Not found column sipHash64(player_id) in block. There are only columns: player_id., e.what() Строчка из запроса на создания таблицы: ENGINE = ReplicatedMergeTree( '/clickhouse/tables/{shard}/Crystals', '{nodename}', date, sipHash64(player_id), player_id, 8192)

Что я делаю не так?

Запрос к примеру элементарно: select count() from Crystals sample 0.2

Alexander
22.06.2017
13:07:39
http://paste.org.ru/?i4q3m1

чот память жрется адищево o_O

КХ жрет все,вместе со свопом и падает лол

не хочется ограничивать себя на селектах, но 15 гигов для инсерта - имхо многовато, особенно когда их столько

это оно регулируется background_pool_size?

Google
Alexander
22.06.2017
13:12:15
в плане сколько запросов одновременно будут активными

ни один клиент вставки не ведет, это какое-то внутренее шебуршание

Дмитрий
22.06.2017
13:23:34
Я, кажется понял в чем проблема. Напишу сразу, не проверяя, чтобы не забыть. Проблема в том, что ключ сэмлирования не был добавлен в кортеж первичного ключа. Таблицы надо пересоздать с такой строчкой: ENGINE = ReplicatedMergeTree( '/clickhouse/tables/{shard}/Crystals', '{nodename}', date, sipHash64(player_id), (player_id, sipHash64(player_id)), 8192)

Aleksandr
22.06.2017
13:49:42
Какой тэг нужно использовать для dictionary в PostgreSQL (аналогичный <mysql>)?

Александр
22.06.2017
13:52:01
Возможно pgsql

Aleksandr
22.06.2017
13:52:42
буду пробовать pgsql )

Andrey
22.06.2017
13:56:26
Aleksandr
22.06.2017
13:57:32
нет, тэг нужен в конфигурационном файле словаря

Andrey
22.06.2017
13:57:49
vfhby
22.06.2017
14:22:59
/64

Igor
22.06.2017
14:24:38
коллеги, а как эскейпить бинарные данные в tsv? что то вроде \0\13\61 и так далее?

спасибо

Alexander
22.06.2017
14:40:31
спасибо
соврал

я ошибся

Anton
22.06.2017
15:05:26
Привет! А может кто-то подсказать. Как получить индекс элемента массива? А то есть ParsedParams.Key1 типа ['application.version.build','provider','sender.deviceId','type','application.name','sender.uuid','application.version.revision','application.version.minorVersion','sender.platformId','sequenceNumber','version','timestamp','id','sender.platformId2','notificationStatus','application.version.majorVersion','application.type'] и ParsedParams.Key2 типа: ['37287','MOBILE_SEARCH_APP','6bc88d44e950a5d03c7ae04fc78bf1e6','PUSH_RECEIVED_EVENT','ru.yandex.searchplugin','0bd946d944af561976d873bd99e33ec3','0','2','285325077801136604','28116','1','1498020959490','smoo.weather.28344072.1498014084395934-16988740666232459169','2:-6917536967133571637','ENABLED','6','APPLICATION'] И нужно понуть, откуда брать timestamp, потому что в разных записях он на разных позициях... Или, может быть, есть гораздо проще способ?

Alexey
22.06.2017
15:16:25
Коллеги, а такой функции нет? uniqCombinedIfState

papa
22.06.2017
15:38:10
Google
Anton
22.06.2017
15:44:50
А то я уже какие-то там лямбды начал городить по тому, что нашёл в нашей доке

Anton
22.06.2017
15:51:58
В данном случае 1498020959490, который [11]

papa
22.06.2017
15:55:13
а, я понял, у вас key-value с ключами и значениями в соответствующих индексах. можно например сделать arrayFilter(v,k->k='abc', Keys2, Keys1)

и видимо надо как-то решить что делать если их больше или меньше одного

Anton
22.06.2017
15:56:28
Ага, спасибо! Вроде с indexOf тоже работает ParsedParams.Key2[indexOf(ParsedParams.Key1, \'timestamp\')]

больше одного не должно быть, а если меньше, то выкидывать пока устраивает вроде

Maksim
22.06.2017
16:00:51
Скажите пожалуйста. Если я вставляю запись в таблицу, могу ли я тригером вставить её в другую таблицу с помощью кх ?

чтобы не делать 2 запроса на вставку

Alexey
22.06.2017
16:03:26
> Alexander Morozov, [22.06.17 16:09] не хочется ограничивать себя на селектах, но 15 гигов для инсерта - имхо многовато, особенно когда их столько Alexander Morozov, [22.06.17 16:11] это оно регулируется background_pool_size? Да, это нехорошо. Настройка background_pool_size не влияет на максимальное количество одновременных INSERT-ов. Она влияет на мержи. Почему тратится много оперативки на INSERT: на это влияет размер вставляемой пачки данных. Но возможны и другие причины. Может быть связано с таблицами типа Buffer. Более точно по приведённой информации сказать не могу.

Скажите пожалуйста. Если я вставляю запись в таблицу, могу ли я тригером вставить её в другую таблицу с помощью кх ?
В ClickHouse нет триггеров. Но есть функциональность MATERIALIZED VIEW, которая работает примерно так как триггеры.

Maksim
22.06.2017
16:29:37
В ClickHouse нет триггеров. Но есть функциональность MATERIALIZED VIEW, которая работает примерно так как триггеры.
я могу из всталяемой записи, вставить определенный набор данных в другую таблицу через MATERIALIZED VIEW ?

Anton
22.06.2017
16:43:18
А почему так не работает, не подскажете? SELECT ParsedParams.Key2[indexOf(ParsedParams.Key1, 'timestamp')] as ts, toUInt32(ts) as ts_int

Code: 32, e.displayText() = DB::Exception: Received from mtmoblog01-22-2.yandex.ru:9000, 2a02:6b8:b010:7205:c660:36aa:25c5:867f. DB::Exception: Attempt to read after eof: Cannot parse UInt32 from String, because value is too short., e.what() = DB::Exception

Олег
22.06.2017
16:44:52
я могу из всталяемой записи, вставить определенный набор данных в другую таблицу через MATERIALIZED VIEW ?
Да, но нет. MATERIALIZED VIEW — специальная таблица, наполняющаяся из других результатом зашитого в неё при создании запроса. То есть да, можно, но это будет единственный способ записать в такую таблицу.

Renat
22.06.2017
16:48:40
Всем привет! Имеем на данный момент X шард с 32 ядрами CPU и 120 гигабайтами RAM Рассматриваем два пути масштабирования: удвоить количество шардов, либо удвоить CPU до 64 ядер и RAM до 240 Что предпочительнее? Какие плюсы и минусы?

papa
22.06.2017
17:02:23
А почему так не работает, не подскажете? SELECT ParsedParams.Key2[indexOf(ParsedParams.Key1, 'timestamp')] as ts, toUInt32(ts) as ts_int
SELECT toUInt32('') Received exception from server: Code: 32. DB::Exception: Received from localhost:9000, ::1. DB::Exception: Attempt to read after eof: Cannot parse UInt32 from String, because value is too short.

Renat
22.06.2017
17:02:38
> Льёте на ноды напрямую или через distributed льем на ноды через distributed > Join ещё большие есть? join практически не используем > Сколько активных клиентов на кластер? Сложно оценить, не имею такой метрики :( Посчитал запросы по system.query_log, среднесуточно - около 12 select запросов в секунду на кластер

Google
papa
22.06.2017
17:06:04
предполагаю, что у вас нет элмента с timestamp, от этого у вас приходит какой-то странный indexOf, по этому индексу лежит дефолтное значение нужного типа и оно не конвертируется в число.

т.е. см выше про то, что делать если timestamp больше или меньше одного

возможно вам нужна функция toUInt32OrZero

Anton
22.06.2017
17:16:03
Да, сейчас с ней пробую. Я думал, что спасёт: AND indexOf(ParsedParams.Key1, \'timestamp\') >= 1 AND indexOf(ParsedParams.Key1, \'id\') >= 1

Alexey
22.06.2017
18:42:36
Code: 32, e.displayText() = DB::Exception: Received from mtmoblog01-22-2.yandex.ru:9000, 2a02:6b8:b010:7205:c660:36aa:25c5:867f. DB::Exception: Attempt to read after eof: Cannot parse UInt32 from String, because value is too short., e.what() = DB::Exception
Это значит, что вы пробуете преобразовать пустую строку в число. Можно написать toUInt32OrZero. Эта функция возвращает ноль вместо кидания исключения, когда ей передают непонятную строку.

Anton
22.06.2017
19:10:21
А Attempt to read after eof здесь что-то значит?:)

Alexey
22.06.2017
19:14:45
Это говорит о том, что аргумент функции - строка, была рассмотрена как поток байт для чтения. Затем над этим потоком была вызвана функция для чтения числа. Эта функция попыталась прочитать больше данных, чем есть в потоке.

Anton
22.06.2017
22:42:43
/stat@combot

Combot
22.06.2017
22:42:43
combot.org/chat/-1001080295593

[Anonymous]
23.06.2017
04:01:36
@FolderArchive - канал, где сливают платный полезный - образовательный контент и курсы, например можно скачать курсы "Нетологии" или все курсы "Бизнес Молодости".

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