문제

제가 일하는 회사에서는 기본 데이터베이스의 읽기 부하를 줄이기 위한 토론 방법을 사용합니다.

제안된 옵션 중 하나는 기본 데이터베이스에서 슬레이브 데이터베이스로 실시간 단방향 복제를 수행하는 것입니다.그런 다음 애플리케이션은 슬레이브 데이터베이스에서 읽고 기본 데이터베이스에 직접 씁니다.그래서...

  • 애플리케이션이 슬레이브에서 읽습니다.
  • 애플리케이션이 기본에 쓰기
  • 기본 업데이트 슬레이브 자동으로

이 방법의 주요 장점과 단점은 무엇입니까?

도움이 되었습니까?

해결책

몇 가지 단점:

  • 실패 포인트 2개
  • 애플리케이션 논리는 무언가를 쓴 후 읽는 사이의 지연을 고려해야 합니다. 왜냐하면 해당 항목은 보조 데이터베이스에서 즉시 사용할 수 없기 때문입니다.

제가 사용한 전략은 주요 보고 데이터를 야간에 보조 데이터베이스에 전송하고 도중에 비정규화하여 테이블을 잠그고 OLTP 서버에서 리소스를 훔치는 대신 해당 데이터베이스에서 강력한 쿼리를 실행할 수 있도록 하는 것입니다.저는 공식적인 데이터 웨어하우징이나 복제 도구를 사용하지 않고, 최신 데이터가 없어도 괜찮은 문제 쿼리를 식별하고 해당 쿼리에 대해 특별히 보조 서버에 데이터 구조를 만듭니다.

"모든 것을 복제"하는 접근 방식에는 확실히 장점이 있습니다.

  • 보조 데이터베이스에 모든 데이터가 포함되어 있으므로 임시 쿼리를 실행할 수 있습니다.
  • 기본 서버가 중단되면 신속하게 보조 서버의 용도를 변경하여 인계받을 수 있습니다.

다른 팁

단방향 복제를 사용하고 있지만 동일한 애플리케이션에서는 사용하지 않습니다.우리 애플리케이션은 마스터 데이터베이스를 읽고 쓰고 있으며 데이터는 복제 데이터베이스에 동기화되고 보고 도구는 이 복제본을 사용하고 있습니다.

우리는 응용 프로그램이 다른 데이터베이스에서 읽는 것을 원하지 않으므로 이 시나리오에서는 파일 그룹을 사용하고 마스터 데이터베이스에서 분할하는 것을 제안합니다.파일 그룹(특히 다른 드라이브)을 사용하고 파일과 인덱스를 분할하면 성능에 많은 도움이 될 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top