2016-12-03 7 views
0

Netezza에 큰 테이블이 있고 테이블 크기가 약 600GB입니다. 기존 테이블에서 새 테이블을 만들려고 할 때 테이블 크기가 증가했습니다. 새 테이블 크기는 617GB입니다.CTAS 명령을 사용한 후 Netezza 테이블 크기가 증가했습니다.

새 테이블을 만드는 데 사용한 SQL : create table new_table_name from select * from old_table_name distribution on (column_name); new_table_name에 대한 통계를 생성합니다. 그러나 새 테이블과 이전 테이블의 행 수는 같습니다.

테이블 크기를 늘릴 수있는 이유는 무엇입니까?

미리 감사드립니다.

+0

'old_table_name'도'column_name'에 배포되어 있습니까? –

+0

아니요. 이전 테이블에는 배포 키가 없습니다. – Amlan

+0

그리고 "테이블 크기"라고 말하면 사용 된 공간 또는 할당 된 공간을 의미합니까? –

답변

0

이 개 관련 측정 테이블의 '크기'에 대한 있습니다 할당 도움이 될 것입니다 _v_table_storage_stat 당신이 작은 테이블의 경우 주어진 테이블

모두 크기를 보면 (두 바이트) 크기를 사용, 할당 된 크기 사용 된 크기보다 몇 배나 커질 수 있으며 행이 고르게 분포된다고 가정하면 각 데이터 조각에 최소 3MB가 할당됩니다. 나는 대부분의 작업을 480 개의 데이터 슬라이스가있는 이중 랙 MAKO 시스템에서 수행합니다. 따라서 14,4GB 이하와 모든 테이블이 다소 관련이없는

그럼에도 불구하고 당신이 보는 것을 설명하려고합니다 '크기'의 최적화를위한이다 : 당신은 1) 네티의 모든 데이터가 압축되어 있음을 깨달아야한다. 2) 압축은 각 데이터 슬라이스의 '블록'데이터에 대해 수행됩니다. 3) 압축 비율 (압축 후의 데이터 크기를 이전 크기로 나눈 값)은 각 블록의 데이터가 상상할 수있는 가장 '혼합 된'상황과 비교하여 많은 유사성을 공유하는 경우 더 좋아집니다. 4) '배포하다'와 '정리하다'모두이 문제에 영향을 미칠 수 있습니다. 테이블에 데이터를 추가 할 때 사용되는 select 문에서 'order by'또는 'group by'도 가능합니다.

제 시스템에서는 은행의 하루에 여러 개의 '복사본'이있는 매우 넓은 테이블이 있습니다. 우리 고객의 계정. 각 사본은 이전 사본과 99 % 동일하며 '잔액'과 같은 유일한 변경 사항이 있습니다.

AccountID에 배포하고 AccountID에서 구성함으로써 Timestamp - 10-15 % 더 작은 크기를 보았습니다. 데이터에 다른 패턴을 가진 많은 '시스템'계정 ID가 포함되어 있기 때문에 일부 데이터 조각이 더 효과적이었습니다. A)는 완벽하게 자연 B이다) 때문에 그것에 대해 너무 많이 걱정하지 마십시오 : 한마디로

C)는 Netezza를 시스템에 '큰'표와 4 코어 데이터베이스와 동일하지 않습니다 너무 적은 메모리와 슬 루우 디스크 :