내 Crate.io 데이터베이스에는 현재 50mio 행과 16GB 크기의 테이블이 있습니다. 나는 다음과 같은 문으로 하루 항목의 양을 좀하려고하면 모두 (성능을 제외하고,하지만이 순간에 문제가되지 않습니다) 잘 작동 : 내가 만들려고하면별개의 문제입니까?
SELECT
date_format('%Y-%m-%d', date_trunc('day', "days")) AS "Day",
count(*) AS "Count"
FROM "doc"."mytable"
WHERE
date_format('%Y-%m-%d', date_trunc('day', "days")) BETWEEN date_format('%Y-%m-%d', date_trunc('day', current_timestamp + -2592000000))
AND date_format('%Y-%m-%d', date_trunc('day', current_timestamp + -86400000))
GROUP BY date_format('%Y-%m-%d', date_trunc('day', "days"))
ORDER BY date_format('%Y-%m-%d', date_trunc('day', "days")) ASC limit 100;
그러나 이런 다른 열에서의 구별을 :
SELECT
date_format('%Y-%m-%d', date_trunc('day', "days")) AS "Day",
count(DISTINCT customerid) AS "Count"
FROM "doc"."mytable"
WHERE
date_format('%Y-%m-%d', date_trunc('day', "days")) BETWEEN date_format('%Y-%m-%d', date_trunc('day', current_timestamp + -2592000000))
AND date_format('%Y-%m-%d', date_trunc('day', current_timestamp + -86400000))
GROUP BY date_format('%Y-%m-%d', date_trunc('day', "days"))
ORDER BY date_format('%Y-%m-%d', date_trunc('day', "days")) ASC limit 100;
는 문
SQLActionException [실패한다 CircuitBreakingException : 0] 것보다 큰 제 : 수집 용 [질의] 데이터 너무 큰 데이터 [1267571097/1.1gb] 한도
왜 COUNT (DISTINCT col)에 데이터가 너무 많은데 COUNT (*)에 문제가 있는지 아이디어가 있습니까? 어떻게이 문제를 해결할 수 있습니까?
답변 해 주셔서 감사합니다. 나는 더 많은 메모리가 성능을 향상시킬 것이라는 것을 이해하지만 실제 질문은 : 대략 3TB의 데이터를 가지고 있다면 (얼마나 많은 메모리가 필요합니까? (이 테이블에서 계획 한 실제 데이터 양은 얼마입니까?) 현재 소형 시스템에서는 16GB 만 테스트 중입니다. 지금까지의 모든 테스트는 데이터를 저장하는 데 많은 메모리가 필요하지 않지만 데이터를 저장하는 데는 많은 메모리가 필요하다는 것을 보여줍니다. 그러나 이것은 또한 우리가 ES/Kibana에서 필요로했던 것보다 훨씬 적습니다. 이것이 우리가 크레이트를 사용하려는 이유 중 하나였습니다. 그러나 이제 나는이 결정에 대해 정말로 확신하지 못합니다. l. – Ragin
고유 수에 사용되는 열 유형이 고정 크기 유형 인 경우 (예 : 길면,이 타입이 필요로하는 필수 바이트 수만큼 다른 값의 수를 배가시킬 수 있습니다 (예 : https://github.com/crate/crate/blob/master/core/src/main/java/io/crate/types를 참조하십시오). /LongType.java#L150). 그것은 당신에게 대략적인 평가를 줄 것입니다. 문자열 유형이라면 문자열 값이 필요로하는 바이트가 문자열 값의 길이에 따라 달라 지므로 추정하기가 훨씬 어려울 것입니다. –