SQL Server 클러스터 성능

SQL Server 클러스터 성능

제가 정말 간단한 질문이길 바라는 것에 대답하도록 도와줄 수 있는 사람이 있나요?

SQL Server 데이터베이스에 대해 실행 중인 응용 프로그램이 있고 성능 테스트를 실행 중이라고 가정해 보겠습니다. 데이터베이스 서버 클러스터를 설정하면 성능 향상을 기대할 수 있습니까? 아니면 장애 조치 등을 통해 시간과 가용성 특성을 더 좋게 "그냥" 구입하는 것입니까?

저는 후자를 생각하는 경향이 있어서 데이터베이스 성능이 약하다고 느끼면 추가 하드웨어를 구입하기보다는 애플리케이션 설계에 힘쓰는 것이 좋을 것 같아요...

감사합니다, 에밀

답변1

이는 클러스터가 구성되고 액세스되는 방식에 따라 크게 달라집니다. "클러스터"라는 단어가 여러 가지 다른 배열을 포괄할 수 있다는 것은 도움이 되지 않습니다.

일부 배열은 거의 영향을 미치지 않으며 일부는 눈에 띄게 속도를 늦춥니다 (예를 들어 여러 활성 서버의 경우 트랜잭션이 커밋된 것으로 간주되기 전에 모든 서버가 업데이트될 때까지 기다려야 하며 다음을 포함하는 작업에 상당한 트랜잭션 대기 시간이 추가될 수 있음) 삽입/업데이트, 서버 간 잠금 정보 마샬링은 읽기 전용 작업에 비슷하게 영향을 미칠 수 있습니다.) 일부 배열은 작업 속도를 높일 수 있습니다 (여러 읽기 전용 복제본을 사용하여 여러 시스템에 걸쳐 읽기 전용 로드를 관리하고 잠금 요구 사항이 허용됨). 사례) .

그래서: 예, 아니오, 아니면 아마도요! 배열을 좀 더 자세히 설명하면 [머신, OS, DBMS, 클러스터 구성, 클러스터에 액세스하는 코드(단일 웹 서버, 다수의 웹 서버, 다수의 외부 클라이언트 등), 로드 패턴 등... ] 훨씬 더 나은 답변을 얻을 수 있습니다.

(불행히도 그것은 당신이 기대했던 것만큼 간단한 질문이 아닙니다. 죄송합니다!)

답변2

아니요. 성능이 향상되지는 않습니다. MS SQL 서버의 클러스터링 솔루션은 고가용성만을 위한 것이며 확장이나 로드 밸런싱에는 적합하지 않습니다.

클러스터의 두 노드를 동시에 활성화하도록 설정할 수 있지만, 그러면 두 노드는 서로 다른 데이터베이스를 제공하게 되며, 실패할 경우 다른 노드의 데이터베이스만 "인계"하게 됩니다.

단일 서버가 생성할 수 있는 것보다 SQL 서버에서 더 많은 성능을 얻는 것은 복잡한 문제입니다. 따라서 저는 어떤 상황에서든 더 많은 RAM을 사용하면 데이터베이스 성능 문제를 더 쉽게 해결할 수 있다고 주장하겠습니다. 디스크 속도를 높이고 데이터베이스 코드를 조정합니다.

답변3

공유 스토리지(SAN/NAS)가 있어야 하며 이는 직접 연결된 디스크보다 성능이 더 좋을 가능성이 높지만 클러스터는 독립 실행형 인스턴스보다 성능이 더 좋지 않습니다. 하드웨어 오류 위험을 줄이기 위한 목적으로만 사용되는 클러스터입니다.

관련 정보