2009-09-06 4 views

답변

12

성능이 중요한 경우 특정 유스 케이스의 벤치마킹을 대신 할 수 없습니다. 그렇게 중요하지 않다면, 관리하기 쉽도록하십시오! 하드웨어는 프로그래머/DBA 시간에 비해 싸고, 복잡한 설정에서 예상되는 높은 사고율과 비교됩니다. 컴퓨터가 무어의 법칙을 따르는 것은 말할 것도 없지만, 그 날은 완강하게 오래 걸리지 않습니다.

여러 개의 스키마가 실적이 더 좋은 것와 (내가 할 수 없기 때문에), 나는 하나의 데이터베이스를 추측에는 요, 특정 사용 사례를 벤치마킹하지 한 추측 해야한다면 이유는

  1. 각 연결은 하나의 데이터베이스, AFAIK입니다. PostgreSQL에서는 연결 설정/해제가 비용이 많이 듭니다.

  2. 많은 스키마가 많은 데이터베이스보다 많은 테이블에 더 가깝습니다. 많은 데이터베이스가 기대되는 것보다 많은 테이블을 최적화해야합니다.

그러나 적용 할 수있는 반례를 볼 수 있습니다. 각 데이터베이스는 단일 디렉토리에 저장됩니다. 이렇게하면 보통의 파일 시스템 도구 (예 : 마운트 지점 및/또는 심볼릭 링크)를 사용하여 파일 시스템 전반에 걸쳐 데이터베이스를 분할 할 수 있으므로 디스크 배열을 쉽게 만듭니다. 여러 어레이에 걸쳐 데이터베이스를 분할하는 것은 동일한 수의 디스크를 가진 더 큰 RAID10 어레이보다 성능이 뛰어날 수는 없지만 더 나은 격리를 제공합니다 (거대한 쿼리를 수행하는 데이터베이스 A는 데이터베이스 B만큼 큰 영향을 미치지 않음). 그러나 OS의 IO 스케줄러 설명서를 확인하십시오. 각 PostgreSQL 커넥션은 자체적 인 백엔드 프로세스를 가지므로 프로세스 별 공정성 큐잉이이를 더 잘 수행 할 수 있습니다.

또한 PostgreSQL의 CREATE TABLESPACE 및 친구들을 사용하여 파일 시스템간에 데이터를 세분 할 수 있으므로 실제로 스키마를 사용하여 위 작업을 수행 할 수 있습니다.

+0

"CREATE TABLESPACE 및 친구들, 위의 내용은 실제로 스키마에서도 가능합니다." 그래, 나는 많은 데이터베이스를 사용하여 성능 이점을 볼 수 없습니다. 덧붙여 말하자면, RAID가이 질문과 어떤 관련이 있는지 이해할 수 없습니다. DB 대 스키마 질문에 관계없이 테이블 공간을 사용하여 원하는 모든 것을 넣을 수 있습니다. –

+0

@Jeff Davis : 그렇습니다. SQL 명령이 아닌 표준 Unix 도구로 여러 데이터베이스에서 작업하기가 약간 더 쉽습니다. RAID에 대한 요점은 RAID10에 모든 디스크를 추가하기 만하면 디스크를 조심스럽게 분할하는 것보다 더 나은 성능을 얻을 수 있다는 것입니다. – derobert

0

나는 어느 쪽이든 상관 없다고 생각합니다. 각 테이블은 별도의 파일에 저장되며, 파일의 디렉토리는 유일한 질문입니다. 성능은 주로 개별 파일에 대한 읽기 및 쓰기 작업의 영향을 받기 때문에 디렉토리에있는 파일의 구성은 거의 영향을 미치지 않습니다.

2

성능면에서는 애플리케이션에 완전히 의존하게됩니다.

예를 들어, 여러 데이터베이스는 데이터베이스 당 연결 풀이 필요합니다. 수백 또는 수천 개의 데이터베이스가 있으면 연결 풀링을 수행 할 수 없다는 것을 의미합니다. 데이터베이스에 대한 단일 영구 연결이있는 클라이언트 응용 프로그램을 제외하고는 성능이 저하됩니다.

그러나 "한 번에 하나의 데이터베이스"에만 액세스 할 경우 (서로간에 몇 초 이내가 아닌) 서로 다른 데이터베이스에 항목을 저장하면 실제로 사용중인 데이터베이스에 대한 시스템 테이블 캐시를로드하면됩니다 (각 데이터베이스의 시스템 테이블이 상당히 작기 때문에) 사용자 테이블을 캐시하기 위해 더 많은 메모리를 남겨 둡니다.

대부분의 경우 스키마가 하나의 데이터베이스에서 제외됩니다. 상당히 일반적인 솔루션은 X 데이터베이스와 Y 스키마의 하이브리드입니다.

0

다수의 데이터베이스는 내가 볼 수있는 여러 스키마 (네임 스페이스)에 비해 성능상의 이점이 없습니다 (엄청나게 많은 수의 테이블이있는 경우는 예외). CREATE TABLESPACE을 사용하면 파일 시스템에 원하는 모든 것을 넣을 수 있으므로 두 경우 모두 물리적 저장소를 제어 할 수 있습니다.

여러 가지 스키마를 쿼리 할 때 가장 큰 차이점은 여러 데이터베이스를 쿼리하는 것보다 훨씬 좋은 점입니다. 또한 연결 풀이 동일한 데이터베이스에있는 경우 연결 풀러를 통해 더 많은 연결을 공유 할 수 있습니다.

관련 문제