PostgreSQL“임시 파일 크기”


13

데이터를 새 데이터베이스 (약 600m 행의 타임 스탬프, 정수, 이중)로 가져 왔습니다. 그런 다음 인덱스를 만들고 일부 열을 변경하려고했는데 (일부 공간 부족 문제가 있음) 데이터베이스가 비워졌습니다.

이제 pgAdmin III는 " 임시 파일의 크기 "가 50G ~ + 라고 알려줍니다 .

  1. 이 임시 파일은 무엇입니까? 이것들은 SQL Server 트랜잭션 로그와 같은 것입니까?
  2. 어떻게 제거 할 수 있습니까? 데이터베이스가 데이터베이스보다 훨씬 큰 것 같습니다 (데이터베이스의 총 크기는 91GB입니다)

Windows 2012 서버 에서 Posgres 9.4.1 사용

데이터베이스 통계 탭의 스크린 샷 :

데이터베이스 통계 탭의 스크린 샷


"임시 파일 크기"열 값은 무엇을 나타 냅니까?
Ofiris

답변:


12

pgAdmin 설명서에서 아무것도 발견하지 못했지만 소스 코드는 이러한 항목 뒤의 쿼리를 보여줍니다 (Postgres 9.2 이상에 추가).

그것은 다음과 같이 요약됩니다.

SELECT temp_files AS "Temporary files"
     , temp_bytes AS "Size of temporary files"
FROM   pg_stat_database db;

그리고 Postgres 매뉴얼에는 다음에 대한 세부 정보가 있습니다pg_stat_database .

tmp_files bigint 이 데이터베이스에서 쿼리로 작성된 임시 파일 수 임시 파일이 작성된 이유 (예 : 정렬 또는 해싱)와 log_temp_files 설정에 관계없이 모든 임시 파일이 계산됩니다 .

temp_bytes bigint 이 데이터베이스의 쿼리로 임시 파일에 기록 된 총 데이터 양입니다. 임시 파일이 작성된 이유 및 log_temp_files 설정에 관계없이 모든 임시 파일이 계산됩니다 .

이 값은 데이터베이스 크기에 영향을 주지 않습니다 . 그러나 설정 work_mem이 너무 낮을 수 있으므로 많은 정렬 작업이 디스크에 유출됩니다 ( RAM과 비교할 때 매우 느림).

관련 :

실제로 데이터베이스 크기를 압축하려면 다음을 수행하십시오.

크기를 측정하려면

따로 : WAL (Write Ahead Log) 은 Postgres에서 SQL Server의 트랜잭션 로그에 해당합니다. SO에 대한이 관련 답변에 대한 좋은 설명 :


10

에 따르면 :

http://www.postgresql.org/message-id/BLU0-SMTP179B92C5102247CD961A4B3CF2A0@phx.gbl

임시 카운터 (사용 된 파일 및 공간)는 아마도 클러스터 생성 이후에 사용 된 모든 임시 파일의 총계를 보여줍니다. 임시 파일이 사용하는 현재 공간을 반영하지 않습니다.

예를 들어 내 시스템은 거의 700GB의 임시 파일이 사용되었지만 /var/lib/pgsql/9.3/data/base/pgsql_tmp의 임시 파일이 차지하는 실제 공간은 현재 53MB입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.