이 문서는 지원되지 않는 버전의 토토 결과을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다PostgreSQL : 문서 : 17 : 5.6. 젠 토토 열버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

5.4. 토토 결과 열

모든 테이블에는 여러 가지토토 결과 열토토 결과에 의해 암시 적으로 정의됩니다. 그러므로, 이 이름은 사용자 정의 열의 이름으로 사용할 수 없습니다. (이 제한은 이름과 분리되어 있습니다. 핵심 단어 여부입니다. 이름을 인용하면 탈출 할 수 없습니다 이러한 제한 사항.) 당신은 실제로 걱정할 필요가 없습니다. 이 칼럼은 존재한다는 것을 알고 있습니다.

OID

개체 행의 식별자 (객체 ID). 이 칼럼은 전용입니다 테이블을 사용하여 생성 된 경우OIDS와 함께또는default_with_oids구성 변수가 당시에 설정되었습니다. 이 칼럼은입니다 유형OID(와 같은 이름 열); 보다PostgreSQL : 문서 : 8.2 : 객체 식별자 토토 사이트 순위유형에 대한 자세한 정보.

Tableoid

이 행이 포함 된 테이블의 OID. 이 칼럼은입니다 상속에서 선택한 쿼리에 특히 편리합니다 계층 구조 (참조범퍼카 토토 PostgreSQL), 그것 없이는 아무 말도하기가 어렵습니다 개별 테이블 행이 나왔습니다. 그만큼Tableoid에 가입 할 수 있습니다OID열의pg_class테이블 이름을 얻으려면

xmin

삽입의 ID (트랜잭션 ID) 이 행 버전의 거래. (행 버전은 행의 개별 상태; 행의 각 업데이트는 a를 만듭니다 동일한 논리 행을위한 새 행 버전.)

cmin

명령 식별자 (0에서 시작) 내 거래 삽입.

xmax

삭제의 ID (트랜잭션 ID) 거래되지 않은 행 버전의 경우 트랜잭션 또는 0입니다. 그것은 이 열이 눈에 보이는 행에서 0이 될 수 있습니다. 버전. 일반적으로 삭제임을 나타냅니다 거래는 아직 약속되지 않았거나 시도하지 않았습니다 삭제가 롤백되었습니다.

cmax

삭제 트랜잭션 내 명령 식별자, 또는 0.

CTID

그 내의 행 버전의 물리적 위치 테이블. 비록CTID행을 찾는 데 사용할 수 있습니다 매우 빨리 버전, 행의CTID업데이트 될 때마다 변경됩니다 또는 움직임진공 Full. 그러므로CTID는 장기적으로 쓸모가 없습니다 행 식별자. OID 또는 더 나은 사용자 정의 일련 번호는 논리적 행을 식별하는 데 사용해야합니다.

OIDS는 32 비트 수량이며 단일에서 할당됩니다. 클러스터 전체 카운터. 크거나 오래된 데이터베이스에서는 그렇습니다 카운터가 포장 할 수 있습니다. 따라서 나쁘다 조치를 취하지 않는 한 OID가 독특하다고 가정하도록 연습하십시오. 이것이 사실인지 확인하십시오. 행을 식별 해야하는 경우 시퀀스 생성기를 사용하는 테이블을 강력히 권장합니다. 그러나 몇 가지 추가로 OID도 사용할 수 있습니다. 예방 조치가 취해집니다 :

  • OID 열에 고유 한 제약 조건을 생성해야합니다. OID를 사용하여 행을 식별하는 데 사용되는 각 테이블. 그러한 고유 한 제약 (또는 고유 한 색인)이 존재하면 시스템은 일치하는 OID를 생성하지 않도록주의합니다. 이미 존재하는 행. (물론 이것은 경우에만 가능합니다 테이블에는 2 미만32(4 억) 행, 실제로 테이블 크기는 훨씬 적었습니다. 그보다 또는 성능이 어려움을 겪을 수 있습니다.)

  • OID는 결코 테이블 전체에 독특하다고 가정해서는 안됩니다. 의 조합 사용Tableoid및 ROW OID 데이터베이스 전체 식별자가 필요한 경우

  • 물론 문제의 테이블을 만들어야합니다OIDS와 함께. 기준토토 결과 8.1, OIDS없이기본값입니다.

트랜잭션 식별자도 32 비트 수량입니다. a 수명이 긴 데이터베이스 트랜잭션 ID가 랩을 할 수 있습니다. 약. 이것은 적절한 유지 보수를 고려할 때 치명적인 문제가 아닙니다 절차; 보다토토 베이 : 문서 : 8.2 : 일상적인 데이터베이스 유지 관리 작업세부. 그러나 독창성에 의존하는 것은 현명하지 않습니다. 장기적으로 거래 ID (10 억 이상 업무).

명령 식별자도 32 비트 수량입니다. 이것은 a를 만듭니다 2의 하드 제한32(4 억)SQL단일 트랜잭션 내에서 명령. ~ 안에 이 한도를 연습하는 것은 문제가되지 않습니다. 한도는 수SQL명령이 아닙니다 처리 된 행의 수.