2012-11-18 4 views
0

이것은 SQL Server의 성능을 향상시키기위한 것입니다.로드 균형 SQL 서버

단일 Windows Server 2008 서버에 Sql Server 2008 Enterprise Edition 인스턴스가 있습니다. SQL Server, OS 파일, MDF 파일, LDF 파일의 이진 파일은 모두 하나의 디스크에 있습니다.

이전에는 IIS에로드 균형 조정을 제공하기 위해 NLB를 사용했습니다. 우리에게는 2 대의 Windows Server 2008 컴퓨터가 있었고 두 웹 사이트 모두 동일한 웹 사이트가 구성되었으며 웹 사이트에 데이터를 제공하는 별도의 컴퓨터가있었습니다. 사용자는 가상 IP 주소에 액세스 할 것이고 각 노드의 현재로드에 따라 클러스터는 트래픽을 나눕니다.

  1. 이 별도의 시스템에 SQL 서버의 두 인스턴스를 설치합니다

    은 지금은 내가이 계획 traffic.What로드 밸런싱 SQL Server의 같은 시도 할 수 있는지 알고 싶습니다.

  2. 두 인스턴스 모두에 이 표시되는 SAN, RAID 5와 같은 공유 미디어에 MDF, LDF 파일을 배치하고 두 인스턴스 모두에 MDF 및 LDF를 연결하십시오.
  3. 두 노드에서 클러스터를 만들고 응용 프로그램이 클러스터 IP 주소 에 액세스하게하십시오.

이 경우 IIS와 마찬가지로 클러스터는 2 노드 사이에서 트래픽을 나누고 단일 MDF와 LDF에 액세스하기 때문에 동기화 문제가 발생하지 않을 것입니다.

내 질문은 :

  1. 이 실제로 SQL 서버의의 performace을 향상시킬 것인가?
  2. 다른 의미가 있습니까 (우리는 코드 에서 많은 거래를 사용합니까)?

답변

5

두 개 이상의 SQL Server 인스턴스가 동일한 MDF/LDF 파일을 공유 할 수 없습니다. 각 SQL 서버는 자신의 데이터베이스 파일에 독점적으로 액세스해야합니다. 따라서 이러한 방식으로 SQL 서버의로드 균형을 조정할 수 없습니다.

기본적으로 세 가지 옵션이 있습니다. 아마도 더 많은 것이있을 수 있지만 가장 일반적으로 사용되는 세 가지입니다.

옵션 1 : 마스터 - 슬레이브는

하나의 옵션은 마스터 슬레이브 시나리오에서 여러 SQL 서버 인스턴스를 설정하는 것입니다. 하나의 데이터베이스 서버가 마스터이고 모든 데이터와 변경 사항을 쓰는 데이터베이스입니다. 슬레이브는 마스터와 동기화되고 웹 서버가 읽기 작업을 위해 슬레이브를 사용하게합니다. 대부분의 웹 사이트는 일반적으로 작성하는 것보다 더 많은 데이터를 읽으므로 데이터베이스 처리량을 향상시키는 데 도움이됩니다. 읽기 및 쓰기 작업을 위해 별도의 데이터베이스에서 작동하도록 웹 사이트 코드를 변경해야합니다. 로드 밸런서 뒤에 슬레이브가있을 수 있으므로 코드는 하나의 쓰기 데이터베이스 서버와 하나의 읽기 데이터베이스 서버 만 지원하면됩니다. 읽을 때로드 밸런서는 모든 슬레이브에로드를 균등하게 분산합니다.

옵션 2 : 샤딩

이 시나리오에서는 당신은 여러 데이터베이스 서버에서 데이터를 배포 할 수 있습니다.간단한 예제는 두 데이터베이스 서버에 분산 된 사용자 데이터베이스입니다. 홀수 UserID (예 : 1, 3, 5 등)를 가진 모든 사용자는 데이터베이스 서버 1에 저장되고 짝수 사용자 ID (예 : 2, 4, 6 등)를 가진 모든 사용자는 데이터베이스 서버 2에 저장됩니다. 평균적으로 각 데이터베이스 서버가 부하의 절반 정도를 차지한다는 장점이 있습니다. 점점 더 많은 데이터베이스 서버를 추가하고 자신 만의 사용자 정의 스키마로 데이터를 점점 더 많이 배포 할 수 있기 때문에 확장 성도 좋습니다. 여러 데이터베이스 서버를 지원하기 위해 코드를 변경해야하지만, 여러 다단계 설계가 좋은 경우이 모델을 지원하기 위해 하나의 계층을 변경해야합니다.

옵션 3 : 비 - SQL 데이터베이스 솔루션을 사용하여 SQL 데이터베이스

를 사용하지 마십시오. 이들은 Commong 이름 인 NoSQL에서 점점 인기를 얻고 있습니다. 이것은 'Not SQL'을 의미합니다. SQL을 전혀 사용해서는 안된다는 의미는 아니지만 모든 것을 위해 사용하지 마십시오. 당신의 문제를 해결할 수있는 SQL에 비해 장점 (그리고 단점)이 많은 다른 데이터베이스 시스템이 있습니다. 좋은 소식은 블로그 게시물 인 35+ Use Cases for Choosing Your Next NoSQL Database입니다.

선택하는 옵션은 응용 프로그램과 데이터베이스 모델에 따라 다릅니다. 두 시나리오를 동시에 사용할 수 있습니다. 예 : 사용자 데이터베이스에 대한 샤딩 (sharding) 및 주문 테이블에 대한 마스터 - 슬레이브 (웹 상점에서). 트랜잭션 지원이 필요하거나 많은 조인 작업이 필요한 경우, 취할 시나리오를 결정할 때이를 고려해야합니다. 데이터베이스 확장은 꽤 복잡한 주제이며 모든 문제에 대한 해결책은 하나도 없습니다.

관련 문제