クリックハウスにイベントテーブル(MergeTree)があり、同時に多くの小さなインサートを実行したいです。ただし、サーバーが過負荷になり、応答しなくなります。さらに、インサートの一部が失われます。クリックハウスエラーログには多くのレコードがあります:クリックハウスに複数の小さなインサートがあります
01:43:01.668 [ 16 ] <Error> events (Merger): Part 201 61109_20161109_240760_266738_51 intersects previous part
このようなクエリを最適化する方法はありますか?私はいくつかの種類のイベントに対して一括挿入を使用できることを知っています。基本的には、多くのレコードで1つのインサートを実行しています。しかし、クリックやオープンなどのイベントの一部は、この方法では処理できませんでした。
もう1つの質問: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
を。
イベントはオン/オフベースで生成されています。バッチでCHに挿入すると、ステージング領域を作成する必要があります。キューにはキューやその他の一時的な場所があります。この帽子は私たちがやらなければならないのでしょうか、あるいは単列を挿入するための別の推奨方法がありますか? 2番目のフォローアップの質問:文書では、「パフォーマンスを向上させるために、複数のINSERTクエリを並行して作成することができます...」と述べています。これは、それぞれが挿入する並列プロセス/スレッドを実行できることを意味しますが、各プロセスは1秒あたり1バッチを並列で実行する必要がありますか? – ipolevoy
はい、イベントを一部のキューまたはサービスのインプロセスバッファに蓄積し、バッチで挿入する必要があります。 – uYSIZfoz
多くのINSERTを並行して実行できます。 1秒あたり1バッチがすべてのスレッドで合計で推奨されます。 – uYSIZfoz