다음과 같은 문제점이 있습니다 (실제 상황을 알려 드리겠습니다) :
일련의 ID가 있습니다 (이러한 ID와 관련된 데이터는 물론 있지만 핵심 문제가 있습니다) 1. 위로 500000
이제 이들 시퀀스는 이지만은 임의로 "도착"하고 일부는 결코 도착하지 않을 수 있으며 다른 사람들은 여러 배치에 자주 올 수있어 불균등하게 분산됩니다 (내가 말할 때 언급하는 것은 데이터 베이스).
ID 및 모양이 일종의 카운트를 만드는 경우 양수가 올바르게 처리되도록 버킷의 적절한 수를 몇 개나 찾을 수 있습니까? 내 문제의분산이 같지 않을 경우 해시의 버킷 수를 어떻게 계산할 수 있습니까?
상황 :
내가 읽고 있던 약 hash partitioning
나는 기본적인 가정은 당신이 해시 열 값이 잘 분포되어 있다고 생각합니다. 그러나 테이블에서 잘 분산 된 열/속성에 분할 할 수없는 경우 (예 : 데이터가 잘 분산되어 있지 않음, 예 : 매우 적은 수의 제품을 구매하는 다른 제품보다 많은 것을 구매하는 고객 ID)
이렇게 처리해야합니까? 대신 파티션 범위가 작아야합니까?
SET @partitions = 4;
SELECT
id_column % @partitions as bucket,
MONTH(your_date) as month,
COUNT(*) as cnt
GROUP BY
month,
bucket;
과의 값으로 재생 : 당신이 매달 당신은 다음과 같은 문장으로 그렇게 할 수있는 파티션 당 분포를 얻고 싶다면
이미 충분한 양의 데이터가있는 경우, 일련의'SELECT id_column % @partitions as bucket, COUNT (id_column % @partitions)를 cnt GROUP BY (id_column % @partitions)'변수와'@ partitions' 변수의 값이 다른가요? – VMai
@VMai : 그래서'@ partitions'는 변수입니다. 4? 'GROUP BY 1'을 (를) 의미합니까? 실제 ID가 무엇인지에 상관없이 같은 양동이에 떨어지는 수를 계산합니다. – Jim
그래. 원하는 클라이언트 (phpMyAdmin, MySQL Workbench 등)를 사용하고 마지막 명령문의 문장 뒤에'SET @partitions = 4;'를 입력 한 다음 간단히 4를 5로 변경하고 분포. – VMai