젠 토토 : 문서 : 9.6 : 젠 토토 | |||
---|---|---|---|
PostgreSQL : 문서 : 9.6 : 범퍼카 토토 유형 | PostgreSQL : 문서 : 9.6 : 데이터 배트맨 토토 | 8장. 데이터 토토 결과 | PostgreSQL : 문서 : 9.6 : PG_LSN 롤 토토 |
개체 식별자(OID)는 다음에서 내부적으로 사용됩니다.PostgreSQL다양한 시스템 테이블의 기본 키로 사용됩니다. OID는 다음과 같은 경우를 제외하고는 사용자가 생성한 테이블에 추가되지 않습니다.OIDS 포함테이블이 생성될 때 지정되거나default_with_oids구성 변수가 활성화되었습니다. 토토 결과oid객체 식별자를 나타냅니다. 에 대한 여러 별칭 토토 결과도 있습니다.oid: regproc, regprocedure, regoper, regoperator, regclass, regtype, regrole, regnamespace, regconfig및regdictionary. 표 8-24개요를 보여줍니다.
그oid유형은 현재 부호 없는 4바이트 정수로 구현됩니다. 따라서 대규모 데이터베이스 또는 대규모 개별 테이블에서 데이터베이스 전체의 고유성을 제공할 만큼 크지 않습니다. 따라서 사용자가 생성한 테이블의 OID 열을 기본 키로 사용하는 것은 권장되지 않습니다. OID는 시스템 테이블에 대한 참조에만 사용하는 것이 가장 좋습니다.
그oid유형 자체에는 비교할 수 없는 작업이 거의 없습니다. 그러나 정수로 변환한 다음 표준 정수 연산자를 사용하여 조작할 수 있습니다. (이렇게 하면 서명된 대 서명되지 않은 혼동이 발생할 수 있으니 주의하세요.)
OID 별칭 유형에는 특수한 입력 및 출력 루틴을 제외하고 자체 작업이 없습니다. 이러한 루틴은 다음을 입력하는 원시 숫자 값 대신 시스템 개체에 대한 기호 이름을 허용하고 표시할 수 있습니다.oid사용하겠습니다. 별칭 유형을 사용하면 개체에 대한 OID 값을 간단하게 조회할 수 있습니다. 예를 들어, 다음을 조사하려면pg_attribute테이블과 관련된 행마이테이블, 다음과 같이 쓸 수 있습니다.
SELECT * FROM pg_attribute WHERE attrelid = 'mytable'::regclass;
다음보다는:
SELECT * FROM pg_attribute WHERE attrelid = (pg_class WHERE relname = 'mytable'에서 oid 선택);
그 자체로는 그렇게 나쁘지는 않지만 여전히 지나치게 단순화되어 있습니다. 이름이 지정된 테이블이 여러 개 있는 경우 올바른 OID를 선택하려면 훨씬 더 복잡한 하위 선택이 필요합니다.마이테이블다른 스키마에서. 그만큼regclass입력 변환기는 스키마 경로 설정에 따라 테이블 조회를 처리하므로 다음을 수행합니다."옳은 일"자동으로. 마찬가지로 테이블의 OID를 다음으로 캐스팅합니다.regclass숫자 OID를 상징적으로 표시하는 데 유용합니다.
표 8-24. 객체 식별자 유형
이름 | 참고자료 | 설명 | 값 예 |
---|---|---|---|
oid | 아무거나 | 숫자 개체 식별자 | 564182 |
regproc | pg_proc | 함수 이름 | 합 |
regprocedure | pg_proc | 인수 토토 결과이 있는 함수 | 합계(int4) |
regoper | pg_operator | 운영자 이름 | + |
regoperator | pg_operator | 인수 토토 결과이 있는 연산자 | *(정수,정수)또는-(없음,정수) |
regclass | pg_class | 관계 이름 | pg_type |
regtype | pg_type | 데이터 유형 이름 | 정수 |
regrole | pg_authid | 역할 이름 | 대장장이 |
regnamespace | pg_namespace | 네임스페이스 이름 | pg_catalog |
regconfig | pg_ts_config | 텍스트 검색 구성 | 영어 |
regdictionary | pg_ts_dict | 텍스트 검색 사전 | 간단한 |
네임스페이스로 그룹화된 개체에 대한 모든 OID 별칭 유형은 스키마에 따른 이름을 허용하며, 개체가 정규화되지 않은 채 현재 검색 경로에서 발견되지 않으면 출력에 스키마에 따른 이름을 표시합니다.regproc그리고regoper별명 유형은 고유한(오버로드되지 않은) 입력 이름만 허용하므로 사용이 제한됩니다. 대부분의 용도에 사용regprocedure또는regoperator더 적합합니다. 에 대한regoperator, 단항 연산자는 쓰기로 식별됩니다.없음사용되지 않은 피연산자용.
대부분의 OID 별칭 유형의 추가 속성은 종속성 생성입니다. 이러한 유형 중 하나의 상수가 저장된 식(예: 열 기본 식 또는 뷰)에 나타나는 경우 참조된 개체에 대한 종속성이 생성됩니다. 예를 들어 열에 기본 표현식이 있는 경우nextval('my_seq'::regclass), 포스트그레SQL기본 표현식이 순서에 따라 다르다는 것을 이해합니다.my_seq; 시스템은 먼저 기본 표현식을 제거하지 않고는 시퀀스를 삭제할 수 없습니다.regrole속성에 대한 유일한 예외입니다. 이 토토 결과의 상수는 그러한 표현식에서 허용되지 않습니다.
참고:OID 별칭 토토 결과은 트랜잭션 격리 규칙을 완전히 따르지 않습니다. 또한 플래너는 이를 단순한 상수로 처리하므로 최적이 아닌 계획이 발생할 수 있습니다.
시스템에서 사용하는 또 다른 식별자 토토 결과은xid또는 거래(약어)정확함) 식별자입니다. 이것은 시스템 열의 데이터 토토 결과입니다.xmin그리고xmax. 거래 식별자는 32비트 수량입니다.
시스템에서 사용하는 세 번째 식별자 유형은 다음과 같습니다.시드또는 명령 식별자. 이것은 시스템 열의 데이터 유형입니다.cmin그리고cmax. 명령 식별자도 32비트 수량입니다.
시스템에서 사용하는 최종 식별자 유형은 다음과 같습니다.tid또는 튜플 식별자(행 식별자). 이것은 시스템 열의 데이터 유형입니다.ctid. 튜플 ID는 테이블 내 행의 물리적 위치를 식별하는 쌍(블록 번호, 블록 내 튜플 인덱스)입니다.
(시스템 열에 대한 자세한 내용은 다음에 설명되어 있습니다.섹션 5.4.)