우리의 데이터베이스 아키텍처는 동일한 데이터베이스 구조의 인스턴스를 가진 두 개의 Sql Server 2005 서버로 구성됩니다. 하나는 모든 읽기 용이고 다른 하나는 모든 쓰기 용입니다. 우리는 트랜잭션 복제를 사용하여 읽기 데이터베이스를 최신 상태로 유지합니다.트랜잭션 복제에서 1 초 미만의 대기 시간을 얻을 수 있습니까?
두 서버는 실제로 매우 높은 사양이며 (쓰기 서버는 32GB RAM을 가짐) 광섬유 네트워크를 통해 연결됩니다.
이 아키텍처를 결정할 때 우리는 읽기 서버에 복제되는 데이터의 대기 시간이로드에 따라 (수천 밀리 초 정도의) 밀리 초 정도라고 생각하게되었습니다. 실제로 우리는 심지어 가장 단순한 경우조차도 약 2-5 초의 대기 시간을보고 있는데, 이는 만족스럽지 않습니다. 가장 간단한 경우는 DB 작성시 단일 테이블의 단일 행에서 단일 값을 갱신하고 읽기 데이터베이스에서 새 값을 관 {하는 데 걸리는 시간을 확인하는 것입니다.
1 초 미만의 대기 시간을 달성하려면 어떤 요소를 고려해야합니까? 심지어 달성 가능한가?
다른 방법으로 고려해야 할 복제 모드가 있습니까? 데이터 및 로그 파일의 위치에 대한 가장 좋은 방법은 무엇입니까?
편집 조언과 통찰력을위한 모든
감사합니다 - 나는 우리가 가 발생하는 대기 기간이 있다고 생각을 정상; 우리는 기대했던 대기 시간에 관해서 우리의 db 호스팅 회사에 의해 잘못 인도되었습니다!
우리는 (제목 "데이터베이스 확장"에서) this MSDN article의 하단에 설명 된 기술을 사용하고, 우리는이 경고를 제대로 처리하는 데 실패했던: 전문 등 만드는
결과 데이터베이스는 대기 시간입니다. 이제 쓰기가 독자 데이터베이스에 배포되는 데 시간이 걸릴 것입니다. 그러나 대기 시간에 대처할 수 있다면 확장 가능성은 엄청납니다.
이제 데이터 항목이 "휘발성"인 것으로 간주 될 때 쓰기 데이터베이스에서 읽기를 강제하는 캐싱 메커니즘이 변경되었습니다.
그래, 나도 그 기사를 읽을거야 :( –