
Анастасия
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

Dig
25.05.2017
12:19:04
Может причина в этом:
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
изменился атрибут в справочнике

Andrey
25.05.2017
13:57:04

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
Прочитал ниже, что уже разобрались.

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
Спасибо.

Andrey
25.05.2017
15:16:58

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

Анастасия
25.05.2017
15:54:55

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). Так должно работать.