디스크 및 RAM 용량 계획
데이터베이스 서버의 디스크 및 메모리 용량 계획은 까다로운 작업입니다. 더 좋습니다. 빠를수록 좋습니다.
일반적인 지침으로 다음을 제공합니다.
- 당신은 당신 것보다 더 많은 디스크 공간이 원하는 EVER 필요합니다.
향후 3-5 년 동안 필요한 디스크 공간을 최대한 추정 한 다음 두 배로 늘리십시오.
- 데이터베이스 인덱스를 메모리에 보관하고 최소 2 회 이상 가장 큰 쿼리를 처리하고 정상적인 OS 디스크 캐시를위한 충분한 공간을 확보 할 수있는 충분한 RAM이 필요합니다.
인덱스 크기는 데이터베이스에 따라 다르며 다른 모든 것은 데이터 세트 및 쿼리 / 데이터베이스 구조에 따라 크게 달라집니다. 제안으로 "최소 테이블 크기의 2 배 이상"을 제안하지만,이 제안은 가장 큰 테이블이 수십 또는 수백 기가 바이트가 될 수있는 실제로 큰 데이터웨어 하우징 작업으로 분류됩니다.
모든 데이터베이스 공급 업체에는 디스크 / 메모리 / OS 커널의 성능 조정에 대한 지침이 있습니다. 배포 전에이 설명서를 사용하여 시간을 보내십시오. 도움이 될거야.
워크로드 벤치마킹 및 용량 계획
아직 배포하지 않았다고 가정하면 ...
많은 데이터베이스 시스템은 벤치마킹 도구 와 함께 제공됩니다 ( 예 :
PostgreSQL 은
pgBench 와 함께
제공) .
이러한 도구는 데이터베이스 성능 벤치마킹의 첫 번째 단계 여야합니다. 가능하면 모든 새 데이터베이스 서버에서이를 실행하여 데이터베이스 서버가 수행 할 수있는 "작업량"을 느끼십시오.
이제 실제 벤치마킹으로 벤치마킹에 ABSOLUTELY MEANINGLESS
대한보다 현실적인 접근 방법을 고려해 보겠습니다. 데이터베이스 스키마를로드하고 더미 데이터로 채우는 프로그램을 작성한 다음 해당 데이터에 대해 애플리케이션 쿼리를 실행하십시오.
이는 세 가지 중요한 사항을 벤치마킹합니다. 1. 데이터베이스 서버 (하드웨어) 2. 데이터베이스 서버 (소프트웨어) 3. 데이터베이스 디자인 및 데이터베이스가 위의 (1) 및 (2)와 상호 작용하는 방식.
이렇게하려면 간단한 사전 구축 된 벤치 마크보다 훨씬 많은 노력이 필요합니다. 채우기 pgBench
를 수행하려면 코드를 작성해야하며 쿼리 및 보고서 실행 시간을 수행하려면 일부 코드를 작성해야합니다.
이러한 종류의 테스트도 훨씬 더 정확합니다. 스키마와 쿼리를 사용하여 작업하는 방법을 확인할 수 있으며 데이터베이스 / 쿼리를 프로파일 링하고 개선 할 수있는 기회를 제공합니다.
이러한 벤치 마크 결과는 이상적인 데이터베이스 뷰입니다. 안전을 위해 프로덕션 환경에서이 성능의 50-70 % 만 달성한다고 가정합니다 (나머지는 예기치 않은 성장, 하드웨어 오류, 워크로드 변경 등을 처리 할 수있는 쿠션입니다).
너무 늦었 어! 생산 중입니다!
시스템이 프로덕션 환경에 들어가면 "벤치 마크"에 도달하기에는 너무 늦습니다. 쿼리 로깅 / 타이밍을 짧게 켜고 시간이 얼마나 걸리는지 확인할 수 있으며, 오프 동안 큰 데이터 세트에 대해 "스트레스 테스트"쿼리를 실행할 수 있습니다. 시간. 또한 시스템의 CPU, RAM 및 I / O (디스크 대역폭) 사용률을보고 얼마나 많은로드가 있는지에 대한 아이디어를 얻을 수 있습니다.
불행히도 이러한 모든 작업은 시스템이 수행하는 작업에 대한 아이디어와 포화 상태에 대한 모호한 개념을 제공합니다.
그것은 우리를…
지속적인 모니터링
시스템에 갑자기 새로운 / 다른 사용 패턴이 나타나는 경우 전 세계의 모든 벤치 마크가 도움이되지 않습니다.
더 나은 또는 더 나쁜 데이터베이스 배포는 정적 인 것이 아닙니다. 개발자가 상황을 바꾸고, 데이터 세트가 커지고 (수축되지 않는 것처럼 보임), 사용자는 테스트에서 예측하지 못한 미친 듯이 조합 된 이벤트를 생성하게됩니다.
데이터베이스에 대한 적절한 용량 계획을 수행하려면 데이터베이스 성능이 더 이상 기대치를 충족하지 않을 때 경고하기 위해 일종의 성능 모니터링을 구현해야합니다. 이 시점에서 치료 작업 (새 하드웨어, DB 스키마 또는 리소스 사용 최적화를위한 쿼리 변경 등)을 고려할 수 있습니다.
참고 : 이것은 데이터베이스 하드웨어의 크기를 조정하고 남용 할 수있는 정도를 파악하는 매우 높은 수준의 일반적인 안내서입니다. 특정 시스템이 귀하의 요구를 충족시키는 지 판단하는 방법이 여전히 확실하지 않은 경우 데이터베이스 전문가에게 문의하십시오.
특히 데이터베이스 관리 전용의 dba.stackexchange.com Stack Exchange 사이트도 있습니다 . 성능 조정에 대한 추가 조언이 필요하면 해당 질문 아카이브를 검색하거나 데이터베이스 엔진 고유의 태그를 찾아보십시오.