0

Postgres 데이터베이스에서 몇 개의 테이블을 삭제했습니다. 그러나 테이블을 삭제하기 전에 데이터베이스 크기는 6586kB 였고 데이터베이스를 삭제 한 후에도 데이터베이스의 테이블 크기는 동일하게 유지되었습니다. 크기를 줄여야한다고 생각합니다.PostgreSQL drop table 명령으로 DB 크기가 줄어들지 않습니다

실제 크기를 얻으려면 어떻게해야합니까?

나는 VACUUM 명령에 대해 알고 있습니다. 나는 그것을 사용해야합니까? 그리고 어떻게?

+1

모든 태그와 함께 무엇입니까? – PeeHaa

+2

실제 버전은 무엇입니까? 태그를 수정하십시오. 크기를 어떻게 측정합니까? 제발 자세한 내용을 제공하십시오. –

+0

select pg_size_pretty (pg_database_size (databaseName))를 통해 크기를 측정합니다. 명령 –

답변

1

6586KB는 "비어있는"(새로 생성 된) 데이터베이스의 크기와 비슷합니다. 놓은 테이블이 매우 작거나 비어 있으면 테이블을 떨어 뜨리더라도 크기가 많이 줄어들지 않습니다.

채워진 대형 테이블을 삭제하면 psql의 "\ l +"명령에서 볼 수 있듯이 데이터베이스 크기의 축소가 즉각적으로 반영되어 진공 또는 체크 포인트가 필요하지 않습니다.

+0

6586kB가 비어 있지 않습니다. DB 크기. 빈 DB 크기는 6562kB입니다. 데이터 증가를 알아야합니다. 그래서 테이블을 떨어 뜨린 후 원래 크기가 필요합니다. –

+1

정확한 크기는 컴파일 된 옵션, 하드웨어 등에 달려 있습니다. 34kb는 실제로 걱정할 사항입니까? 반올림 오류입니다. 당신이 무슨 일이 일어나고 있는지 알아 내려고한다면, 충분히 큰 테이블을 사용하십시오. 가능한 가장 작은 데이터 크기를 기반으로 학습하려고하면 지식이 실제로 추정 할 수 없음을 알게됩니다. – jjanes

2

VACUUM (또는 VACUUM FULL)은 에서 테이블 내의 공간 만 회수하므로이 경우 거의 유용하지 않습니다.

글쎄, 테이블을 삭제 한 후에 죽은 튜플을 남기게하는 항목이 카탈로그 테이블에 있습니다. 따라서 데이터베이스는 테이블이 생성되고 다시 삭제 된 후에 약간 더 많은 공간을 차지할 수 있습니다.

다시 최소 크기로 아래로 DB를 얻을 클라이언트 도구 vacuumdb with the --full option 실행하려면 : 나중에 포스트 그레스 9.0에

vacuumdb -f mydb 

, 이것은 또한 prestine 상태에서 인덱스를 다시 작성합니다. Postgres의 위키에서 세부 사항 : 전용 object size functions과 : 포스트 그레스는 데시벨 크기를 측정하는 방법 http://wiki.postgresql.org/wiki/VACUUM_FULL

SELECT pg_size_pretty(pg_database_size(mydb)); 
2

사용 잘라 내기가, MVCC 처음

TRUNCATE에 대한 경고를 이해하고 빠르게 모든 행을 제거 테이블 세트에서. 각 테이블에 대한 규정되지 않은 DELETE와 동일한 효과가 있지만 실제로 테이블을 스캔하지 않으므로 더 빠릅니다. 또한 후속 VACUUM 작업을 요구하기보다는 즉시 디스크 공간을 재 확보합니다. 이것은 대형 테이블에서 가장 유용합니다.

http://www.postgresql.org/docs/9.1/static/sql-truncate.html

관련 문제