0

우리는 클라이언트의 .NET 웹 응용 프로그램에 대해 SQL Server 2012 데이터베이스 트랜잭션 복제를 구성하여 SQL 트랜잭션 및보고를 다른 SQL Server에 배포했습니다.SQL Server 2012 데이터베이스 트랜잭션 복제 성능 문제

SQL-Node1에 대한 트랜잭션 복제를 마스터 DB 서버로 구현했습니다. SQL-Node2에서 마스터 DB 복제를 구성하여 트랜잭션 및 데이터 업로드가 많은 웹 응용 프로그램으로 보고서를 가져 왔습니다 에서 매일 약 1,000 만 건의 출품작을 처리합니다.

두 SQL Server 2012 인스턴스에서 복제를 구성한 후 몇 주 후에 몇 가지 성능 문제가 발생하여 응용 프로그램에서 해당 테이블과 데이터에 액세스 할 수없는 이유로 데이터베이스에 파일을 업로드하는 동안 일부 리소스가 잠겼습니다. 또한 사용자가 웹 응용 프로그램에 액세스 할 때 서버가 너무 느리게 수행되는 것으로 나타났습니다.

이제 우리는 SQL Server 2012의 다른 3 노드에로드를 분산하려고합니다. 웹 응용 프로그램이 SQL-Node1에서 데이터를 액세스하고 처리 할 때보고 쿼리는 SQL-Node2에서 끌어 오기 데이터를 가져오고 SQL-Node3이 사용됩니다 다른 모든 SQL 노드에서 복제 될 데이터베이스에 시트 데이터를 업로드하십시오.

현재 설치, 모든 서버에는 Windows Server 2008 Standard 및 SQL Server 2012 Enterprise Edition이 있습니다.

데이터베이스 크기의 약 15 GB/복제 사용 : SQL 노드 1/가입자 역할을 구성 거래/대리점 역할은 우리는 (다른 부하를 분산 할 수있는 문제보다 해결하는 솔루션을 찾고 2.

SQL 노드에 구성 보고, 데이터 업로드, 트랜잭션)을 수행하고 모든 SQL 노드간에 데이터를 복제합니다.

위의 시나리오에서 SQL Server 2012 HA, SQL Server Replication 또는 SQL Server Mirroring 중에서 어떤 기능을 수행 할 수 있습니까? 변경 사항이 하나 개 이상의 노드에서 발생해야하기 때문에

빠른 응답이 매우

답변

1

.... 이해할 것이다 (노드 1에서 트랜잭션 데이터는, 노드 (3)에 업로드 엑셀), "위의 방법." 위에서 언급 한 모든 기술은 데이터 변경이 한 위치에서 일어나고 다른 위치로 전파되는 것을 기반으로합니다. 피어 투 피어 (peer to peer) 복제를 볼 수는 있지만 과도한 것처럼 보입니다.

나인 경우 파일 업로드 프로세스가 성능을 저하시키고 그 문제를 해결하는 이유를 진단하려고합니다. 일단 그렇게하면 해당 프로세스를 노드 1로 다시 이동하고보고 필요성을 충족시킬 가용성 그룹을 구현합니다 (HA의 추가 보너스 포함).

0

모든 기술은 하나의 큰 트랜잭션에서 수행되는 대용량 데이터 가져 오기를 망칠 것입니다. 나는 그것을 ETL과 같은 ETL로 제안한다. 스테이징 테이블로 가져 와서 데이터를 바이트 단위의 청크로 프로덕션 테이블로 마이그레이션하십시오 (많은 데이터 행 크기를 테스트하여 환경에 가장 적합한 크기를 찾으십시오). 2 개의 서버는 당신이 말하는 작업로드가있는 HA를위한 클러스터에서 복제되어야합니다.