我在clickhouse中有一个事件表(MergeTree),并且想要同时运行很多小插入。但是,服务器变得过载并且没有响应。而且,一些插入物丢失了。 clickhouse错误日志中有很多记录:clickhouse中的多个小插入
01:43:01.668 [ 16 ] <Error> events (Merger): Part 201 61109_20161109_240760_266738_51 intersects previous part
有没有一种方法来优化这种查询?我知道我可以使用批量插入来处理某些类型的事件。基本上,运行一个插入与许多记录,clickhouse处理相当好。但是,某些事件(如点击或打开)无法以这种方式处理。
另一个问题:为什么clickhouse决定类似的记录存在,当他们这样做呢?插入时有类似的记录,它与索引具有相同的字段,但其他字段不同。
时不时我还收到以下错误:
Caused by: ru.yandex.clickhouse.except.ClickHouseUnknownException: ClickHouse exception, message: Connect to localhost:8123 [ip6-localhost/0:0:0:0:0:0:0:1] timed out, host: localhost, port: 8123; Connect to ip6-localhost:8123 [ip6-localhost/0:0:0:0:0:0:0:1] timed out
... 36 more
天色项目建设期间,当对clickhouse数据库测试中运行。
我们有过的基础上产生的事件。将它们分批插入CH,意味着我们需要为它们建立一个临时区域,可能是一个队列或其他临时的地方。这是我们必须做的帽子吗,还是有另一种推荐的插入单行的方法? 第二个后续问题:文档指出:“为了提高性能,可以并行执行多个INSERT查询......”。这是否意味着我们可以运行并行进程/线程,每次都插入,但每个进程需要每秒并行执行一个批处理? – ipolevoy
是的,您需要在某个队列或服务的进程内缓冲区中累积事件,然后分批插入。 – uYSIZfoz
您可以并行执行多个INSERT;所有线程总共推荐每秒一个批次。 – uYSIZfoz