이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 문서 : 17 : 65.1. 데이터베이스 사설 토토 레이아웃버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

58.1. 윈 토토 파일 레이아웃

이 섹션에서는 파일 수준의 저장 형식을 설명합니다. 그리고 디렉토리.

전통적으로 다음에서 사용하는 구성 및 데이터 파일은 데이터베이스 클러스터는 클러스터의 데이터 내에 함께 저장됩니다. 일반적으로 다음과 같이 참조되는 디렉토리)PGDATA(다음에 사용할 수 있는 환경 변수 이름 뒤에) 정의하세요). 의 공통 위치PGDATAis/var/lib/pgsql/data. 다중 다른 서버 인스턴스에 의해 관리되는 클러스터는 같은 기계입니다.

PGDATA디렉토리에는 여러 개가 포함되어 있습니다. 하위 디렉터리 및 제어 파일(그림 참조)표 58-1. 에서 이러한 필수 항목 외에도 클러스터 구성 파일postgresql.conf, pg_hba.confpg_ident.conf전통적으로 다음 위치에 저장됩니다.PGDATA(비록포스트그레SQL8.0 이상에서는 다음이 가능합니다. 다른 곳에 두세요).

표 58-1. 의 내용PGDATA

항목 설명
PG_VERSION 다음의 주요 버전 번호가 포함된 파일포스트그레SQL
베이스 데이터베이스별 하위 디렉터리를 포함하는 하위 디렉터리
글로벌 다음과 같은 클러스터 전체 테이블을 포함하는 하위 디렉토리pg_database
pg_clog 트랜잭션 커밋 상태 데이터가 포함된 하위 디렉터리
pg_multixact 다중 트랜잭션 상태 데이터가 포함된 하위 디렉토리(다음에 사용됨) 공유 행 잠금)
pg_notify LISTEN/NOTIFY 상태 데이터를 포함하는 하위 디렉토리
pg_serial 커밋에 대한 정보가 포함된 하위 디렉토리 직렬화 가능한 트랜잭션
pg_snapshots 내보낸 스냅샷이 포함된 하위 디렉터리
pg_stat 통계에 대한 영구 파일이 포함된 하위 디렉토리 하위 시스템
pg_stat_tmp 통계용 임시 파일이 포함된 하위 디렉토리 하위 시스템
pg_subtrans 하위 거래 상태 데이터가 포함된 하위 디렉터리
pg_tblspc 테이블스페이스에 대한 심볼릭 링크를 포함하는 하위 디렉토리
pg_twophase 준비 상태 파일이 포함된 하위 디렉토리 거래
pg_xlog WAL(Write Ahead Log) 파일이 포함된 하위 디렉토리
postmaster.opts 서버가 마지막이었던 명령줄 옵션을 기록하는 파일 다음으로 시작됨
postmaster.pid 현재 포스트마스터 프로세스 ID(PID)를 기록하는 잠금 파일, 클러스터 데이터 디렉터리 경로, 포스트마스터 시작 타임스탬프, 포트 번호, Unix 도메인 소켓 디렉터리 경로(Windows에서는 비어 있음), 첫 번째 유효한 Listen_address(IP 주소 또는*또는 TCP에서 수신하지 않는 경우 비어 있음) 및 공유 메모리 세그먼트 ID(이것은 서버 종료 후 파일이 존재하지 않습니다)

클러스터의 각 데이터베이스에는 하위 디렉토리가 있습니다.PGDATA/베이스, 데이터베이스의 OID를 따서 명명됨pg_database. 이 하위 디렉터리가 기본값입니다. 데이터베이스 파일의 위치 특히 그 시스템 카탈로그가 거기에 저장됩니다.

각 테이블과 인덱스는 별도의 파일에 저장됩니다. 보통의 경우 관계, 이 파일의 이름은 테이블이나 인덱스의 이름을 따서 지정됩니다.파일 노드번호, 다음에서 찾을 수 있음pg_class.relfilenode. 하지만 일시적인 관계의 경우 파일 이름은tBBB_FFF, 어디서BBB백엔드 ID는 파일을 생성한 백엔드 및FFF은 파일 노드 번호입니다. 두 경우 모두, 메인 파일(a/k/a 메인 포크) 외에도 각 테이블과 인덱스에는여유 공간 지도(참조섹션 58.314622_14782_fsm. 테이블에는 다음도 있습니다.가시성 지도, 접미사가 붙은 포크에 저장됨_vm, 어떤 페이지가 알려진지 추적하기 위해 데드 튜플이 없습니다. 가시성 지도는 다음에 자세히 설명되어 있습니다.롤 토토 : 문서 : 9.3 : 가시성 맵. 기록되지 않은 테이블 및 인덱스에는 초기화 포크라고 하는 세 번째 포크가 있습니다. 접미사가 붙은 포크에 저장됩니다._init(참조사설 토토 사이트 : 문서 : 9.3 : 초기화 포크).

주의

테이블의 파일 노드는 종종 OID와 일치하지만 이는 이다아님반드시 케이스; 다음과 같은 일부 작업잘라내기, REINDEX, 클러스터및 일부 형태의테이블 변경, 변경 가능 OID를 유지하면서 파일 노드. 파일 노드를 가정하지 마십시오. 및 테이블 OID는 동일합니다. 또한 특정 시스템 카탈로그의 경우 포함pg_class그 자체,pg_class.relfilenode0이 포함되어 있습니다. 이러한 카탈로그의 실제 파일 노드 번호는 다음과 같습니다. 하위 수준 데이터 구조에 저장되며 다음을 사용하여 얻을 수 있습니다.pg_relation_filenode()함수.

테이블이나 인덱스가 1GB를 초과하면 다음으로 나뉩니다. 기가바이트 크기세그먼트. 첫 번째 세그먼트의 파일 이름은 파일 노드와 동일합니다. 후속 세그먼트의 이름은 filenode.1, filenode.2 등으로 지정됩니다. 파일 크기 제한이 있는 플랫폼에서의 문제를 방지합니다. (실제로는 1GB가 기본 세그먼트 크기입니다. 세그먼트 크기는 구성 옵션을 사용하여 조정할 수 있습니다.--세그사이즈 포함빌드할 때PostgreSQL.) 원칙적으로 여유 공간 맵과 가시성 맵 포크에는 여러 세그먼트가 필요할 수도 있습니다. 하지만 실제로는 이런 일이 일어날 가능성이 없습니다.

잠재적으로 큰 항목이 있는 열이 있는 테이블은 관련이 있습니다토스트테이블입니다. 너무 큰 필드 값을 라인 외부에 저장하는 데 사용됩니다. 테이블 행을 적절하게 유지하십시오.pg_class.reltoastrelid테이블에서 해당 테이블로의 링크토스트테이블(있는 경우). 참조섹션 58.2더 보기 정보.

테이블과 색인의 내용은 다음에 자세히 설명되어 있습니다.PostgreSQL : 문서 : 9.3 : 롤 토토 페이지 레이아웃.

테이블스페이스는 시나리오를 더욱 복잡하게 만듭니다. 각각 사용자 정의 테이블스페이스에는 내부에 심볼릭 링크가 있습니다.PGDATA/pg_tblspc17687_17801테이블스페이스 생성명령). 이 심볼릭 링크는 테이블스페이스의 OID를 따서 명명되었습니다. 물리적 테이블스페이스 내부 디렉터리에는 다음 이름에 따라 이름이 지정된 하위 디렉터리가 있습니다.PostgreSQL서버 버전, 예:PG_9.0_201008051. (사용 이유는 이 하위 디렉터리는 데이터베이스의 연속 버전이 같은 것을 사용할 수 있습니다테이블스페이스 생성충돌 없는 위치 값.) 버전별 내에서 하위 디렉터리에는 각 데이터베이스마다 하위 디렉터리가 있습니다. 데이터베이스의 OID를 따라 명명된 테이블스페이스의 요소입니다. 테이블 인덱스는 파일 노드를 사용하여 해당 디렉토리 내에 저장됩니다. 명명 체계.pg_default테이블스페이스 다음을 통해 액세스되지 않습니다.pg_tblspc하지만 에 해당함PGDATA/베이스. 마찬가지로,pg_global테이블스페이스는 다음을 통해 액세스되지 않습니다.pg_tblspc, 그러나 다음과 일치함PGDATA/글로벌.

pg_relation_filepath()함수는 전체 경로를 표시합니다(관련PGDATA) 관계에 상관없습니다. 종종 다음과 같이 유용합니다. 위의 많은 규칙을 기억하는 것으로 대체하십시오. 하지만 계속 들어가세요 이 함수는 단지 첫 번째 세그먼트의 이름을 제공할 뿐입니다. 관계의 주요 포크 — 세그먼트를 추가해야 할 수도 있습니다 번호 및/또는_fsm, _vm, 또는_init모두 찾기 관계와 관련된 파일입니다.

임시 파일(보다 많은 데이터를 정렬하는 등의 작업용) 메모리에 맞을 수 있음)은 내에 생성됩니다.PGDATA/base/pgsql_tmp또는 a 이내pgsql_tmp의 하위 디렉토리 테이블스페이스가 아닌 경우 테이블스페이스 디렉터리pg_default이(가) 지정되었습니다. 의 이름 임시 파일의 형식은 다음과 같습니다.pgsql_tmpPPP.NNN, 여기서PPP은 소유 백엔드의 PID이고NNN다르다 해당 백엔드의 임시 파일입니다.