| 젠 토토 9.1.24 문서 | ||||
|---|---|---|---|---|
| PostgreSQL : 문서 : 9.1 : 토토 캔 조건 | 토토 핫 : 문서 : 9.1 : 데이터 정의 | 제5장. 데이터 정의 | PostgreSQL : 문서 : 9.1 : 토토 핫 수정 | |
모든 테이블에는 여러 개가 있습니다.젠 토토 열젠 토토에 의해 암시적으로 정의됩니다. 그러므로, 이러한 이름은 사용자 정의 열의 이름으로 사용할 수 없습니다. (이러한 제한사항은 이름이 핵심 단어인지 아닌지; 이름을 인용해도 탈출할 수 없습니다 이러한 제한사항이 있습니다.) 실제로 걱정할 필요는 없습니다. 이 열; 존재한다는 것만 알아두세요.
행의 개체 식별자(개체 ID)입니다. 이 칼럼 테이블이 다음을 사용하여 생성된 경우에만 존재합니다.OIDS 포함또는 다음과 같은 경우default_with_oids구성 변수가 당시에 설정되었습니다. 이 칼럼은 유형oid(와 같은 이름 열); 참조PostgreSQL : 문서 : 9.1 : 객체 식별자 스포츠 토토 사이트유형에 대한 자세한 내용을 확인하세요.
이 행을 포함하는 테이블의 OID. 이 칼럼은 상속에서 선택하는 쿼리에 특히 유용합니다. 계층 구조(참조토토 핫 : 문서 : 9.1), 이것이 없으면 어느 것인지 알기 어렵습니다. 개별 테이블에서 행이 나왔습니다.테이블로이드다음에 대해 합류할 수 있습니다.oid열pg_class테이블 이름을 얻으려면.
삽입 ID(거래 ID) 이 행 버전에 대한 트랜잭션입니다. (행 버전은 행의 개별 상태; 행을 업데이트할 때마다 동일한 논리적 행에 대한 새 행 버전입니다.)
명령 식별자(0부터 시작) 거래를 삽입하는 중입니다.
삭제 ID(거래 ID) 트랜잭션이거나 삭제되지 않은 행 버전의 경우 0입니다. 그것은 이 열은 보이는 행에서 0이 아닐 수 있습니다. 버전. 이는 일반적으로 삭제 중임을 나타냅니다. 트랜잭션이 아직 커밋되지 않았거나 시도가 있었습니다. 삭제가 롤백되었습니다.
삭제 트랜잭션 내의 명령 식별자, 또는 0입니다.
행 버전의 물리적 위치 테이블. 참고하세요.ctid행을 찾는 데 사용할 수 있습니다. 버전이 매우 빠르게, 한 행ctid업데이트되면 변경됩니다. 이사했습니다진공 가득 참. 그러므로ctid장기적으로는 쓸모가 없습니다 행 식별자. OID 또는 더 나은 사용자 정의 일련 번호는 논리적 행을 식별하는 데 사용되어야 합니다.
OID는 32비트 수량이며 단일에서 할당됩니다. 클러스터 전체 카운터. 규모가 크거나 수명이 긴 데이터베이스에서는 카운터를 감싸는 것이 가능합니다. 그러므로 그것은 나쁘다. 조치를 취하지 않는 한 OID가 고유하다고 가정하는 연습을 하십시오. 이것이 사실인지 확인하십시오. 행을 식별해야 하는 경우 테이블을 생성하려면 시퀀스 생성기를 사용하는 것이 좋습니다. 그러나 몇 가지 추가 사항이 있는 경우 OID도 사용할 수 있습니다. 예방조치를 취하고 있습니다:
OID 열에 고유 제약 조건이 생성되어야 합니다. OID가 행을 식별하는 데 사용되는 각 테이블입니다. 이러한 고유 제약 조건(또는 고유 인덱스)이 존재하는 경우 시스템은 다음과 일치하는 OID를 생성하지 않도록 주의합니다. 이미 존재하는 행. (물론 이는 다음과 같은 경우에만 가능합니다. 테이블에 2개 미만이 포함되어 있습니다.32(40억) 실제로는 테이블 크기가 훨씬 작아야 합니다. 그렇지 않으면 성능이 저하될 수 있습니다.)
OID는 테이블 전체에서 고유하다고 가정해서는 안 됩니다. 다음의 조합을 사용하세요.테이블로이드및 데이터베이스 전체 식별자가 필요한 경우 행 OID.
물론 문제의 테이블이 생성되어야 합니다.OIDS 포함. 현재젠 토토 8.1, OIDS 제외기본값입니다.
트랜잭션 식별자도 32비트 수량입니다. 에서 수명이 긴 데이터베이스에서는 트랜잭션 ID를 래핑할 수 있습니다. 주변. 적절한 유지 관리를 통해 치명적인 문제는 아닙니다. 절차; 참조롤 토토 : 문서 : 9.1 : 일상적인 데이터베이스 유지 관리 작업용 세부 사항. 그러나 그 고유성에 의존하는 것은 현명하지 못하다. 장기적으로 거래 ID(10억 개 이상) 거래).
명령 식별자도 32비트 수량입니다. 이것은 하드 제한 232(40억)SQL단일 트랜잭션 내의 명령. 에서 이 한도를 실천하는 것은 문제가 되지 않습니다. 한도가 설정되어 있다는 점에 유의하세요. 수SQL명령, 처리된 행 수가 아닙니다. 또한 현재젠 토토8.3, 실제로 실행되는 명령만 데이터베이스 내용을 수정하면 명령이 사용됩니다. 식별자.