토토 결과스페이스PostgreSQL데이터베이스 관리자는 데이터베이스 개체를 나타내는 파일을 저장할 수 있는 파일 시스템의 위치를 정의할 수 있습니다. 일단 생성된 토토 결과스페이스는 데이터베이스 객체 생성 시 이름으로 참조될 수 있습니다.
관리자는 토토 결과스페이스를 사용하여 다음의 디스크 레이아웃을 제어할 수 있습니다.PostgreSQL설치. 이는 적어도 두 가지 면에서 유용합니다. 첫째, 클러스터가 초기화된 파티션이나 볼륨에 공간이 부족해 확장이 불가능한 경우, 다른 파티션에 토토 결과스페이스를 생성해 시스템이 재구성될 때까지 사용할 수 있다.
둘째, 토토 결과스페이스를 통해 관리자는 데이터베이스 개체의 사용 패턴에 대한 지식을 활용하여 성능을 최적화할 수 있습니다. 예를 들어, 매우 많이 사용되는 인덱스는 고가의 솔리드 스테이트 장치와 같이 매우 빠르고 가용성이 높은 디스크에 배치될 수 있습니다. 동시에 거의 사용되지 않거나 성능이 중요하지 않은 보관된 데이터를 저장하는 테이블은 더 저렴하고 느린 디스크 시스템에 저장할 수 있습니다.
기본 PostgreSQL 데이터 디렉토리 외부에 위치하더라도 토토 결과스페이스는 데이터베이스 클러스터의 필수적인 부분이며할 수 없습니다자율적인 데이터 파일 모음으로 취급됩니다. 이는 기본 데이터 디렉터리에 포함된 메타데이터에 의존하므로 다른 데이터베이스 클러스터에 연결하거나 개별적으로 백업할 수 없습니다. 마찬가지로 토토 결과스페이스가 손실되면(파일 삭제, 디스크 오류 등) 데이터베이스 클러스터를 읽을 수 없거나 시작할 수 없게 될 수 있습니다. RAM 디스크와 같은 임시 파일 시스템에 토토 결과스페이스를 배치하면 전체 클러스터의 안정성이 위험해집니다.
토토 결과스페이스를 정의하려면 다음을 사용하십시오.토토 결과스페이스 생성명령, 예::
CREATE TABLESPACE fastspace LOCATION '/ssd1/postgresql/data';
위치는 다음이 소유한 기존의 빈 디렉토리여야 합니다.포스트그레SQL운영 체제 사용자. 토토 결과스페이스 내에서 이후에 생성된 모든 개체는 이 디렉터리 아래의 파일에 저장됩니다. 토토 결과스페이스가 누락되거나 손실되면 클러스터가 작동하지 않을 수 있으므로 위치는 이동식 또는 임시 스토리지에 있어서는 안 됩니다.
논리 파일 시스템 내에서 개별 파일의 위치를 제어할 수 없기 때문에 일반적으로 논리 파일 시스템당 하나 이상의 토토 결과스페이스를 만드는 데에는 큰 의미가 없습니다. 그러나포스트그레SQL이러한 제한을 적용하지 않으며 실제로 시스템의 파일 시스템 경계를 직접 인식하지 않습니다. 단지 사용하도록 지시한 디렉토리에 파일을 저장합니다.
토토 결과스페이스 생성 자체는 데이터베이스 슈퍼유저로 수행되어야 하지만 이후에는 일반 데이터베이스 사용자가 사용하도록 허용할 수 있습니다. 그렇게 하려면 그들에게 다음을 부여하십시오.만들기권한이 있습니다.
테이블, 인덱스 및 전체 데이터베이스를 특정 토토 결과스페이스에 할당할 수 있습니다. 그렇게 하려면 다음을 가진 사용자가만들기주어진 토토 결과스페이스에 대한 권한은 토토 결과스페이스 이름을 관련 명령에 대한 매개변수로 전달해야 합니다. 예를 들어, 다음은 토토 결과스페이스에 테이블을 생성합니다.공간1:
토토 결과 생성 foo(i int) TABLESPACE space1;
또는 다음을 사용하세요.default_tablespace매개변수:
SET default_tablespace = space1; 토토 결과 생성 foo(i int);
언제default_tablespace빈 문자열이 아닌 다른 문자열로 설정되어 암시적토토 결과스페이스절토토 결과 생성그리고색인 생성명시적인 명령이 없는 명령입니다.
또한 있습니다temp_tablespaces매개변수는 임시 테이블과 인덱스는 물론 대규모 데이터 세트 정렬과 같은 목적으로 사용되는 임시 파일의 위치를 결정합니다. 임시 개체와 관련된 로드가 여러 토토 결과스페이스에 분산될 수 있도록 토토 결과스페이스 이름 목록이 하나가 아닌 목록일 수 있습니다. 임시 개체가 생성될 때마다 목록의 무작위 구성원이 선택됩니다.
데이터베이스와 연결된 토토 결과스페이스는 해당 데이터베이스의 시스템 카탈로그를 저장하는 데 사용됩니다. 또한, 데이터베이스 내에 생성된 테이블, 인덱스, 임시 파일에 사용되는 기본 토토 결과스페이스입니다.토토 결과스페이스절이 제공되고 다음으로 다른 선택사항이 지정되지 않습니다.default_tablespace또는temp_tablespaces(적절하게). 토토 결과스페이스를 지정하지 않고 데이터베이스를 생성하면 데이터베이스가 복사된 템플릿 데이터베이스와 동일한 토토 결과스페이스를 사용합니다.
데이터베이스 클러스터가 초기화되면 두 개의 토토 결과스페이스가 자동으로 생성됩니다.pg_global토토 결과스페이스는 공유 시스템 카탈로그에 사용됩니다.pg_default토토 결과스페이스는 기본 토토 결과스페이스입니다.템플릿1그리고템플릿0데이터베이스(따라서 다음으로 재정의되지 않는 한 다른 데이터베이스의 기본 토토 결과스페이스도 됩니다.토토 결과스페이스다음 절데이터베이스 생성).
한번 생성되면 요청하는 사용자에게 충분한 권한이 있는 경우 모든 데이터베이스에서 토토 결과스페이스를 사용할 수 있습니다. 이는 토토 결과스페이스를 사용하는 모든 데이터베이스의 모든 개체가 제거될 때까지 토토 결과스페이스를 삭제할 수 없음을 의미합니다.
빈 토토 결과스페이스를 제거하려면 다음을 사용하십시오.드롭 토토 결과스페이스명령.
기존 토토 결과스페이스 세트를 확인하려면 다음을 검사하십시오.pg_tablespace시스템 카탈로그, 예를 들어
pg_tablespace에서 spcname 선택;
그psql프로그램\dbmeta-command는 기존 토토 결과스페이스를 나열하는 데에도 유용합니다.
포스트그레SQL심볼릭 링크를 사용하여 토토 결과스페이스 구현을 단순화합니다. 이는 토토 결과스페이스를 사용할 수 있음을 의미합니다.만심볼릭 링크를 지원하는 시스템에서.
디렉토리$PGDATA/pg_tblspc클러스터에 정의된 기본 제공되지 않은 각 토토 결과스페이스를 가리키는 기호 링크가 포함되어 있습니다. 권장되지는 않지만 이러한 링크를 재정의하여 토토 결과스페이스 레이아웃을 직접 조정할 수 있습니다. 서버가 실행되는 동안에는 어떠한 경우에도 이 작업을 수행하지 마십시오. PostgreSQL 9.1 이하에서는 다음도 업데이트해야 합니다.pg_tablespace새 위치로 카탈로그를 작성하세요. (그렇지 않으면,pg_dump이전 토토 결과스페이스 위치를 계속 출력합니다.)