2011-08-26 6 views
2

postgres 데이터베이스 내에 여러 스키마가있는 프로젝트에서 작업하고 있습니다. 때때로 한 데이터베이스에서 다른 스키마로 스키마를 이동해야합니다. 내 데이터 구조에서는 oid가 스키마가 이동 된 새 데이터베이스의 기존 oid와 충돌하기 때문에 이동 중에 문제를 일으키는 많은 oid 열을 사용하고 있습니다.Postgres : oid 또는 바이트 배열 사용 여부

나는 그들의 대부분은 크기 그래서 대해 생각하고있는 몇 KB에있을 것입니다,

pg_dump -f <file> -F t -o --blobs -n <schema> <database> 

pg_restore -d <database> -F t -v <file> 

내 모든 파일

공간이 100MB 크기 아래에있는 스키마를 백업을 복원하려면 다음 명령을 사용하고 있습니다 oid 대신 bytea 데이터 형식을 사용하십시오.

좋은 움직임인가 나쁜 것입니까?

파일 크기가 매우 큰 경우 설명서에 따라 oid을 사용하는 것이 좋지만 내 경우에는 파일 크기가 작습니다.

인덱싱/검색과 같은 oid 대신 bytea을 사용하면 성능에 영향이 있습니까?

답변

1

이런 상황에 oid (또는 serial)을 사용하지 않는 이유는 순차적으로 증가하므로 충돌이 발생하는 것은 놀라운 일이 아닙니다.

나는 100 % 확신 할 수는 없지만 문서를 읽는 중 byteavarchar과 비슷하게 저장 공간의 측면에서 구현되므로 색인 크기, 검색 속도 및 저장 요구 사항이 비슷합니다. 즉 정수 나 긴 값을 사용하면 공간이 더 많이 필요하고 느려질 것입니다. 그러나, 얼마나 더 느리게 그리고 당신의 유스 케이스에 대해 중요한지 확실하지 않습니다.

정수 (또는 long)를 사용하지 말고 왜 순차 대신 무작위 값을 사용합니까? 그래도 작동하지 않는다면, 직접 생성 된 데이터로 바이트 배열을 채우기보다는 uuid 형식으로 빌드하는 것이 좋습니다.