@clickhouse_ru

Страница 152 из 723
Анастасия
25.05.2017
07:43:00
Здравствуйте! Проблема с запросом в БД. При увеличении диапазона, количество записей выдает меньше Может это связано с типом столбца Float? Как можно решить данную проблему. Between тоже не помогает



Alexey
25.05.2017
08:03:59
/stat@combot

Combot
25.05.2017
08:03:59
combot.org/chat/-1001080295593

Google
Vladimir
25.05.2017
08:43:22
Забавно)

А сколько rows processed во втором случае?

Igor
25.05.2017
08:47:19
таблица реплицирована? может, второй запрос уходит на реплику, куда еще недолились данные?

Alex
25.05.2017
08:47:22
Столбец x входит в первичный ключ?

И какой у него тип?

Анастасия
25.05.2017
09:08:26
во стором случае processed 47.06

да, столбец входит в первичный ключ тип x Float64

таблица нереплецированная

Alex
25.05.2017
09:18:07
Я как раз вчера исправил неприятный баг - сравнения с float-первичным ключом работали неверно. Правда, в случае с Float64 он не должен проявляться, только с Float32...

Анастасия
25.05.2017
09:40:40
/stat@combot

Combot
25.05.2017
09:40:41
combot.org/chat/-1001080295593

Георгий
25.05.2017
10:18:00
/stat@combot

Combot
25.05.2017
10:18:00
combot.org/chat/-1001080295593

Google
Combot
25.05.2017
11:08:25
combot.org/chat/-1001080295593

Dig
25.05.2017
11:43:17
Ребята, не пойму куда копать. Все работало прекрасно, а сейчас вставка работает катастрофически медленно. Через клиента 74 СЕКУНДЫ! на одну строку. Таблица в которую делаю вставку - не реплицированная, но рядом есть реплицированные. В логах такое: 2017.05.25 11:47:50.085540 [ 24 ] <Error> void DB::StorageReplicatedMergeTree::queueUpdatingThread(): Code: 287, e.displayText() = DB::Exception: Unknown ReplicatedMergeTreeLogEntry format version: 4, e.what() = DB::Exception, Stack trace: 0. clickhouse-server(StackTrace::StackTrace()+0x16) [0x1e6eab6] 1. clickhouse-server(DB::Exception::Exception(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)+0x1f) [0x10be16f] 2. clickhouse-server(DB::ReplicatedMergeTreeLogEntryData::readText(DB::ReadBuffer&)+0xd5b) [0x1fc5eab] 3. clickhouse-server(DB::ReplicatedMergeTreeLogEntry::parse(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, Stat const&)+0x152) [0x1fc61f2] 4. clickhouse-server(DB::ReplicatedMergeTreeQueue::pullLogsToQueue(std::shared_ptr<zkutil::ZooKeeper>, std::shared_ptr<Poco::Event>)+0xe0c) [0x1fcee4c] 5. clickhouse-server(DB::StorageReplicatedMergeTree::pullLogsToQueue(std::shared_ptr<Poco::Event>)+0x60) [0x1f32ad0] 6. clickhouse-server(DB::StorageReplicatedMergeTree::queueUpdatingThread()+0x64) [0x1f34f74] 7. clickhouse-server() [0x36c3daf] 8. /lib/x86_64-linux-gnu/libpthread.so.0(+0x76ba) [0x7fa3a205e6ba] 9. /lib/x86_64-linux-gnu/libc.so.6(clone+0x6d) [0x7fa3a167f82d] Вставка идет именно в MergeTree. В логах ошибки про ReplicatedMergeTree

Select прекрасно работает

Alex
25.05.2017
11:45:47
Всем привет! Есть таблица с полями ts, name, amount. Нужно сделать запрос на сумму по amount за последнюю неделю с гранулярностью 15 минут. причем в некоторых интервалак может не быть данных и должна быть строка с 0 и временем интервала, как сделать??

papa
25.05.2017
11:56:37
кажется вы это спрашивали вчера. а, может не быть данных. тогда надо left join

Alexey
25.05.2017
11:57:04
Ребята, не пойму куда копать. Все работало прекрасно, а сейчас вставка работает катастрофически медленно. Через клиента 74 СЕКУНДЫ! на одну строку. Таблица в которую делаю вставку - не реплицированная, но рядом есть реплицированные. В логах такое: 2017.05.25 11:47:50.085540 [ 24 ] <Error> void DB::StorageReplicatedMergeTree::queueUpdatingThread(): Code: 287, e.displayText() = DB::Exception: Unknown ReplicatedMergeTreeLogEntry format version: 4, e.what() = DB::Exception, Stack trace: 0. clickhouse-server(StackTrace::StackTrace()+0x16) [0x1e6eab6] 1. clickhouse-server(DB::Exception::Exception(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)+0x1f) [0x10be16f] 2. clickhouse-server(DB::ReplicatedMergeTreeLogEntryData::readText(DB::ReadBuffer&)+0xd5b) [0x1fc5eab] 3. clickhouse-server(DB::ReplicatedMergeTreeLogEntry::parse(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, Stat const&)+0x152) [0x1fc61f2] 4. clickhouse-server(DB::ReplicatedMergeTreeQueue::pullLogsToQueue(std::shared_ptr<zkutil::ZooKeeper>, std::shared_ptr<Poco::Event>)+0xe0c) [0x1fcee4c] 5. clickhouse-server(DB::StorageReplicatedMergeTree::pullLogsToQueue(std::shared_ptr<Poco::Event>)+0x60) [0x1f32ad0] 6. clickhouse-server(DB::StorageReplicatedMergeTree::queueUpdatingThread()+0x64) [0x1f34f74] 7. clickhouse-server() [0x36c3daf] 8. /lib/x86_64-linux-gnu/libpthread.so.0(+0x76ba) [0x7fa3a205e6ba] 9. /lib/x86_64-linux-gnu/libc.so.6(clone+0x6d) [0x7fa3a167f82d] Вставка идет именно в MergeTree. В логах ошибки про ReplicatedMergeTree
Это происходит, если одну реплику обновить до свежей версии, а другую - нет. В этом случае репликация не работает и данные не мержатся. Надо обновить оставшиеся реплики - тогда данные дореплицируются и всё будет Ок.

Dig
25.05.2017
12:02:49
Версии серверов одинаковы в любом случае на обоих репликах. На втором сервере даже нет такой базы.

Kirill
25.05.2017
12:04:59
Всем привет! Есть таблица с полями ts, name, amount. Нужно сделать запрос на сумму по amount за последнюю неделю с гранулярностью 15 минут. причем в некоторых интервалак может не быть данных и должна быть строка с 0 и временем интервала, как сделать??
например так SELECT number, sum(v) FROM ( SELECT number FROM system.numbers WHERE (number % 15) = 0 LIMIT 4 ) ANY LEFT JOIN ( SELECT number, 1 AS v FROM system.numbers WHERE ((number % 15) = 0) AND (number NOT IN (15, 45)) LIMIT 4 ) USING (number) GROUP BY number ORDER BY number ASC

Dig
25.05.2017
12:19:04
Это происходит, если одну реплику обновить до свежей версии, а другую - нет. В этом случае репликация не работает и данные не мержатся. Надо обновить оставшиеся реплики - тогда данные дореплицируются и всё будет Ок.
Да, на самом деле версии серверов разные оказались. Но ведь я вставлял в обычную таблицу, не реплицируемую. Единственный момент, что названия таблиц одинаковые, только базы разные. Server1: dev.table1 (not replicated) dev.table2 (not replicated) prod.table1 (replicated) prod.table2 (replicated) Server2: prod.table1 (replicated) prod.table2 (replicated) Вставляю на dev.table1

Может причина в этом: CREATE TABLE prod.table1 ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/table1', {replica} ... CREATE TABLE dev.table1 ENGINE = MergeTree(.. Имена таблиц одинаковы.

Linara
25.05.2017
13:48:40
всем привет! у меня проблема с материализованным представлением. обновились данные в исходной таблице, используется в запросе для представления. само представление осталось без изменений. Как его заставить пересчитаться?

Andrew
25.05.2017
13:50:57
А как у вас изменились данные?

Linara
25.05.2017
13:51:24
изменился атрибут в справочнике

Linara
25.05.2017
13:58:30
это очень тяжелый способ...

получается, данные в мат. представлении никогда не обновляются?

Andrey
25.05.2017
14:05:26
ну да. Они туда кладутся только.

P.S. Если я не прав и такое уже возможно. Тагните меня плз в ответе!)

Linara
25.05.2017
14:07:53
печаль

Google
Andrey
25.05.2017
14:13:03
У мат вью основной кейс как я понял по доке это слушать таблицу с сырыми данными и агрегировать их на лету например.

Для случая когда нужны и агрегаты и сырые данные

Linara
25.05.2017
14:16:08
но при этом "Например, при наличии GROUP BY, данные будут агрегироваться при вставке, но только в рамках одной пачки вставляемых данных."...

Alexey
25.05.2017
14:30:06
Версии серверов одинаковы в любом случае на обоих репликах. На втором сервере даже нет такой базы.
Проверьте количество реплик и их очереди с помощью SELECT * FROM system.replicas Посмотрите на множество реплик в ZK в ноде replicas. Иногда бывает так, что есть реплики, про которые забыли.

Прочитал ниже, что уже разобрались.

Может причина в этом: CREATE TABLE prod.table1 ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/table1', {replica} ... CREATE TABLE dev.table1 ENGINE = MergeTree(.. Имена таблиц одинаковы.
Имена таблиц никак не зависят от пути в ZK (который для удобства может содержать в себе имя таблицы).

Alex
25.05.2017
14:41:45
как сложить 2 DateTime, делаю так toDateTime('2016-06-15 23:00:00') + toDateTime(number) ошибка DB::Exception: Illegal type DateTime of second argument of function plus.

Alexey
25.05.2017
14:42:15
Можно складывать DateTime с числом секунд.

Alex
25.05.2017
14:43:27
спасибо!!

Alexander
25.05.2017
15:08:37
Вопрос: я правильно понимаю что нет ни одного поколоночного формата для вставки кроме native? (Который не рекомендуется)

Alexey
25.05.2017
15:11:44
Да. Native уже можно рекомендовать, так как он используется некоторыми драйверами для C++, Go, .Net, Python, R. Совместимость гарантируется. Фразу про не рекомендуется можно убрать.

Alexander
25.05.2017
15:13:09
Спасибо.

Alexander
25.05.2017
15:20:49
Поколоночная вставка? А можно поподробнее?
Не очень уверен про КХ, но смысл в том, что данные передаются в формате: колонка1: массив1 данных; колонка2: массив2 и ТД => для вставки не надо делать flip, а по сути достаточно одного memcpy

Pavel
25.05.2017
15:21:42
@milovidov_an Алексей, а нету планов сделать нэтив / официальную либо для С++?

Igor
25.05.2017
15:22:11
по-моему к официальной либе для С++ ближе всего artpaul )

Pavel
25.05.2017
15:22:12
текущая вполне спарвляется с задачей, но есть несколько неприятных бажков и хочется оптимизации без выделения памяти на каждом шагу:(

А он тут есть? :)

затяните его)

Alexander
25.05.2017
15:23:34
затяните его)
Я не знаю что такое с artpaul, но мой клиент на нём тормозит жутко. 20 вставок в секунду.

Google
Alexander
25.05.2017
15:23:52
Не думаю что проблема на стороне КХ

Pavel
25.05.2017
15:24:15
у меня вроде около 200 вставок, но есть жалобы на потерю данных :/

хз на чьей они стороне вот, вряд ли на кликхаусе

Alexey
25.05.2017
15:24:45
Жалобы на клиент https://github.com/artpaul/clickhouse-cpp ?

Pavel
25.05.2017
15:24:55
угумс:(

Alexander
25.05.2017
15:25:04
Ну, просто учитывая 6000 простым post'ом, начинает казаться что что-то с клиентом не то.

Pavel
25.05.2017
15:25:10
cамое вот страшное вот это https://github.com/artpaul/clickhouse-cpp/issues/18

приложение разносит вдребезги при перезапуске CH демона + подозрения на потери данных где-то перед вставкой

Alexey
25.05.2017
15:26:53
Можно писать в личку @artmkin Этот драйвер разрабатывается независимо, в свободное время.

Alexander
25.05.2017
15:27:05
И, я может не понял, но почему там в коде делается insert values ? Хотя навеоное просто не понимаю.

Pavel
25.05.2017
15:27:30
там нужно собирать столбцы данных

имя - aaa, bbb, ccc

возраст - 11, 22, 44

и потом инсертом вгонять в базу

Alexander
25.05.2017
15:29:11


А это норм? Я просто для понимания. Немного смущает.

Pavel
25.05.2017
15:30:21
не, оно работает - это железно

Alexander
25.05.2017
15:31:43
не, оно работает - это железно
Всё равно не понимаю

Pavel
25.05.2017
15:32:54
echo 'INSERT INTO t VALUES (1),(2),(3)' | POST 'http://localhost:8123/'

ну вот пример из документации

Google
Alexander
25.05.2017
15:33:13
Так это не нативный формат, хотя и формирования строки под values я там с ходу не обнаружил.

Pavel
25.05.2017
15:37:19
не, там дальше идет вставка блоками

// TODO check connection

не хватает только вот этой штуки :)

Alexey
25.05.2017
15:42:24
Для нативного протокола, отправляется запрос INSERT без данных. Затем отдельными блоками - данные в родном формате.

Alexander
25.05.2017
15:45:00
Т.е. в данном примере values просто игнорируется? Тогда всё логично.

Andrey
25.05.2017
15:45:40
Values на скрине это кусок запроса

Alexander
25.05.2017
15:49:26
Alex
25.05.2017
15:59:08
Как раз со столбцом Float64 проблемы быть не должно. Вы точно уверены, что столбец типа Float64?

Анастасия
25.05.2017
16:06:26
ого..не float64, a float32

Вы правы

обновление clickhouse решить проблему? Или лучше float64 использовать

Alex
25.05.2017
16:14:11
Фикс пока не в релизе. В качестве временного решения можно обернуть float-литералы в toFloat32: x < toFloat32(63.58). Так должно работать.

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