2017-11-10 3 views
0

redshift 테이블에 최대 크기 20,000의 varchar 열이 있습니다. 행 중 약 60 %가이 열을 null 또는 비어 있습니다. 그러한 경우 성능에 미치는 영향은 무엇입니까? 문서 this에서 나는 읽기 : 데이터 테이블의 크기에 최소한의 영향을 필요 이상으로 훨씬 더 큰Redshift : 큰 varchar 열에 null/empty가 많이 발생하는 단점

아마존 Redshift에 매우 효과적으로 열 데이터를 압축하기 때문에, 만들어 열을. 그러나 복잡한 쿼리를 처리하는 동안 중간 쿼리 결과는 임시 테이블에 저장해야 할 수 있습니다. 임시 테이블은 압축되지 않으므로 불필요한 큰 열은 과도한 메모리 및 임시 디스크 공간을 사용합니다.이 경우 은 쿼리 성능에 영향을 미칠 수 있습니다.

이렇게하면 쿼리 성능이 좋지 않을 수 있습니다. 이 외에도 다른 단점이 있습니까?

+0

해당 열을 포함하는 어떤 검색어를 실행합니까? (질문을 예제로 업데이트하십시오.) –

답변

1

redshift 테이블에 저장하려면 문서에 제안 된대로 중요한 성능 저하가 없으며 압축 인코딩은 데이터를 압축 유지하는 데 도움이됩니다.

null 값을 사용하여 열을 쿼리하는 경우 where 절에서이를 사용하는 등의 추가 처리가 필요합니다. 이는 쿼리 성능에 영향을 미칠 수 있습니다. 따라서 성능은 쿼리에 따라 다릅니다.

EDIT (귀하의 의견에 대한 답변) - Redshift는 각 열을 "블록"에 저장하고 이러한 블록은 지정한 정렬 키에 따라 정렬됩니다. Redshift는 각 블록의 최소/최대 기록을 유지하며 반환 할 데이터를 포함 할 수없는 블록을 건너 뛸 수 있습니다. 특정 열에 대한 디스크 공간을 쿼리하고 다른 열에 대해 크기를 확인하십시오.

잘못된 가정을 한 경우 의견을 보내 주시면 답변을 다시 작성하겠습니다.

+0

내 경우 where 절에서 열이 사용되지 않습니다. – ishan3243

+0

이 열을 사용할 다른 사용 사례는 무엇입니까? –

+0

그래서 조인 기준으로 사용되지 않으며 대부분 select 문에서 사용됩니다. – ishan3243

관련 문제