나는 클릭 하우스에 이벤트 테이블 (MergeTree)이 있으며 동시에 많은 작은 삽입물을 실행하려고합니다. 그러나 서버가 과부하가되고 응답하지 않습니다. 또한 삽입물 중 일부가 손실됩니다. 클릭 하우스 오류 로그에 많은 레코드가 있습니다 :클릭 하우스에 여러 개의 작은 삽입물이 있음
01:43:01.668 [ 16 ] <Error> events (Merger): Part 201 61109_20161109_240760_266738_51 intersects previous part
그런 쿼리를 최적화 할 수있는 방법이 있습니까? 나는 어떤 종류의 이벤트에 대량 삽입물을 사용할 수 있다는 것을 알고있다. 기본적으로 클릭 하우스가 처리하는 여러 레코드로 하나의 삽입을 실행합니다. 그러나 클릭 또는 열기와 같은 일부 이벤트는이 방법으로 처리 할 수 없습니다.
다른 질문 : 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 데이터베이스에 대해 테스트
을 실행 : 는 때때로 나는 또한 다음과 같은 오류가 나타납니다.
우리는 온 오프 기준으로 생성 된 이벤트가 있습니다. 일괄 적으로 채널에 삽입하는 것은 대기열이나 다른 임시 장소를위한 준비 영역을 만들어야한다는 것을 의미합니다. 우리가해야 할 모자입니까, 아니면 단일 행을 삽입하는 다른 권장 방법이 있습니까? 두 번째 후속 질문 : 문서에서 "성능을 향상 시키려면 여러 INSERT 쿼리를 병렬로 만들 수 있습니다 ...". 이것은 각 프로세스가 삽입되는 병렬 프로세스/스레드를 실행할 수 있다는 것을 의미합니까? 그러나 각 프로세스는 초당 하나의 배치를 병렬로 수행해야합니까? – ipolevoy
예, 이벤트를 일부 대기열 또는 서비스의 in-process 버퍼에 축적하고 일괄 처리로 삽입해야합니다. – uYSIZfoz
많은 INSERT를 병렬로 수행 할 수 있습니다. 초 당 하나의 배치가 모든 스레드에서 합계로 권장됩니다. – uYSIZfoz