2017-09-28 5 views
0

좋아, 여기에 질문입니다. 은 내가postgresql에서 테이블 크기 및 배열 텍스트 []

테이블 수학 ( ID1의 BYTEA , ID2의 BYTEA , 주석 텍스트 [] )

더 컬럼있다하지만 그 하찮은의를 생성처럼 만들 일부 테이블이 있습니다. 생성 후 내가 거기 ~ 50 만 행을 삽입하고 내가 얻을 완료 그들 각각의

array_append (주석, '현재의 컴퓨팅 단계에 대한 몇 가지 의견을')

그리고 결국 포함 여러 쿼리에서 수정할 테이블 크기 약 1.6GB의

그때 실행하면

ALTER TABLE 수학은 ALTER COLUMN 코멘트 VARCHAR 유형 [] 주석을 사용 :: VARCHAR [];

테이블 크기는 크게 떨어에 약 ~ 300MB의

왜 이런 일이? 그리고 어떻게 열 유형을 변경하지 않고도 비슷한 결과를 얻을 수 있습니까?

참고 : 작성시 varchar [] 유형으로 열을 설정하려했지만 모든 쿼리를 수행 한 후에도 크기는 1.6Gb가되고 텍스트 []로 변환하면 300Mb로 다시 줄어 듭니다.

답변

0

ALTER TABLE .. ALTER TYPE ..은 테이블과 인덱스를 압축하는 전체 테이블 재 작성을 수행합니다.

대신 VACUUM FULL tablename;과 같은 결과가 나옵니다.

textvarchar은 정확하게 동일한 저장 공간을 갖습니다.