찾다

 >  Q&A  >  본문

mysql - 分库分表、分区、读写分离 这些都是用在什么场景下 ,会带来哪些效率或者其他方面的好处

天蓬老师天蓬老师2882일 전642

모든 응답(2)나는 대답할 것이다

  • 巴扎黑

    巴扎黑2017-04-17 16:51:52

    용도/기능

    읽기 및 쓰기 분리: 데이터베이스의 읽기 성능을 향상시킵니다.
    하위 데이터베이스 및 수직 테이블 샤딩: 시스템 부하를 분산하여 원래 한 컴퓨터에서 수행했던 작업을 여러 컴퓨터에서 수행할 수 있습니다.
    수평 테이블 분할 및 파티셔닝: 인덱스 크기를 줄여 검색 속도를 높입니다.

    사용 시나리오

    읽기-쓰기 분리: 게시물 콘텐츠 페이지를 열려면 게시물 테이블과 게시물 댓글 테이블을 선택해야 하며 각각 10ms가 걸립니다. 초당 1,000개의 쿼리가 이 데이터베이스의 한도입니다. 즉, 이 포럼은 초당 500회의 방문만 수행할 수 있습니다. 그런 다음 이 데이터베이스에서 읽기와 쓰기를 분리하여 데이터베이스의 읽기 성능을 기하급수적으로 향상시킬 수 있습니다.

    가로 테이블: 거래 내역, 이런 종류의 테이블입니다. 1년 전의 정보는 거의 쿼리되지 않기 때문입니다. 따라서 표를 연도별로 가로로 나눌 수 있습니다. 올해의 테이블을 우선순위로 삼으세요. 이렇게 하면 쿼리할 테이블의 크기가 줄어듭니다.

    하위 데이터베이스: 시스템이 매우 크고 기능이 많으면 마케팅 활동 테이블과 같이 사용자 계정 테이블과 관련되지 않은 많은 유형의 데이터베이스 테이블이 있을 것입니다. 이를 두 개의 데이터베이스로 나누어 서로 다른 독립 데이터베이스 서버에 배치할 수 있으며, 이는 데이터베이스 처리량을 두 배로 늘릴 수 있습니다.

    수직 테이블 분할: 일반적인 애플리케이션 시나리오는 기사 목록에 있습니다. 일반적으로 기사 테이블에는 제목, userId, 콘텐츠 등과 같은 필드가 있습니다. 콘텐츠 필드는 일반적으로 텍스트 또는입니다. LongText 유형이고 다른 필드는 고정 길이 데이터 유형입니다. 우리는 데이터베이스 최적화 규칙이 다음과 같다는 것을 알고 있습니다:

    테이블의 모든 필드가 고정 길이 유형인 경우 고정 길이 테이블은 동적 길이 테이블보다 쿼리 성능이 더 높습니다.

    그런 다음 수직 테이블 분할을 사용하여 기사 테이블을 기사 테이블과 기사 콘텐츠 테이블로 나눌 수 있습니다. 따라서 기사 목록 페이지에 필요한 쿼리는 고정 길이 테이블만 쿼리하면 됩니다.

    계속됩니다

    회신하다
    0
  • 怪我咯

    怪我咯2017-04-17 16:51:52

    데이터베이스 테이블은 특정 레코드 수를 초과하면 성능이 심각하게 저하됩니다. 따라서 단일 테이블의 데이터 양을 너무 많이 유지하지 않고 별도의 테이블로 나누어야 합니다.

    데이터베이스 프로그램은 대량의 IO를 통해 데이터에 접근하여 단일 슈퍼머신을 구매하지 않고도 저렴한 머신 여러 대를 동시에 사용하여 성능을 향상시키기 위해 별도의 데이터베이스를 사용합니다.

    또한 IO로 인해 일반적으로 쓰기보다 읽기가 더 많습니다. 읽기만 제공하면 쓰기 부담이 줄어들고 어느 정도의 중복성과 재해 저항도 제공됩니다.

    회신하다
    0
  • 취소회신하다