mysql - 파티션 - 테이블 파티셔닝




데이터베이스 분할 및 파티션 분할 (3)

1 백만 개의 행과 100 개의 열이있는 데이터베이스의 테이블을 고려해보십시오. Partitioning 에서는 다음과 같은 속성을 갖는 2 개 이상의 테이블로 테이블을 나눌 수 있습니다.

  1. 0.4 백만 행 (표 1), 0.6 백만 행 (표 2)

  2. 1 백만 행 및 60 열 (표 1) 및 1 백만 행 및 40 열 (표 2)

    그런 경우가 여러 개있을 수 있습니다.

이것은 일반적인 파티셔닝입니다.

그러나 Sharding 은 행을 기반으로 데이터를 나누는 첫 번째 경우에만 참조됩니다. 테이블을 여러 개의 테이블로 나눌 경우 여러 개의 테이블이있는 것처럼 여러 개의 비슷한 스키마 복사본을 유지해야합니다.

최근 스케일 러블 아키텍처에 대해 읽었습니다. 이러한 맥락에서 wrt 데이터베이스를 계속 보여주는 두 단어는 샤딩파티셔닝 입니다. 검색 엔진, 위키 백과 및 stackoverflow에 대한 설명을 검색했지만 여전히 혼란 스러웠습니다.

stackoverflow의 전문가가 기본을 올바르게 얻을 수 있습니까?

  • 샤딩파티셔닝 의 차이점은 무엇입니까?
  • '모든 샤드 드 데이터베이스가 본질적으로 (다른 노드를 통해) 파티션되지만 사실상 모든 파티션 된 데이터베이스가 반드시 샤드되는 것은 아닙니까 ?

나는 이것에 대해서도 뛰어 들고 있었고, 비록 내가이 문제에 대한 참고서 일 뿐이었지만, 내가 모아 놓은 중요한 사실들이 거의 없으며 공유하고 싶다는 점도있다.

파티션 은 논리적 데이터베이스 또는 해당 구성 요소를 고유 한 독립 부품으로 나눈 것입니다. 데이터베이스 파티셔닝 은 일반적으로로드 밸런싱과 마찬가지로 관리 성, 성능 또는 가용성의 이유로 수행됩니다.

https://en.wikipedia.org/wiki/Partition_(database)

샤딩 (Sharding)수평 분할 (HP : Horizontal Partitioning )

테이블을 작은 별개의 부분으로 분할하는 VP ( Vertical Partitioning )도 있습니다. 정규화는 또한 테이블을 가로 지르는이 열의 분할을 포함하지만, 수직 파티션은 이미 표준화 된 경우에도 열과 파티션 열을 능가합니다.

https://en.wikipedia.org/wiki/Shard_(database_architecture)

Quora에서 Tony Baco의 대답이 정말 마음에 드는데, 그가 어디에서 (열과 행보다는) 스키마에 관해 생각하게 만드는지. 그가 말하길 ...

" 수평 분할 "또는 샤딩은 스키마를 복제 (복제) 한 다음 샤드 키를 기준으로 데이터를 나눕니다.

" 수직 파티셔닝 "은 스키마 분할 (그리고 데이터가 타고 있음)을 포함합니다.

https://www.quora.com/Whats-the-difference-between-sharding-DB-tables-and-partitioning-them

Oracle Database Partitioning Guide에는 좋은 수치가 있습니다. 기사에서 발췌 한 내용을 일부 복사했습니다.

https://docs.oracle.com/cd/B28359_01/server.111/b32024/partition.htm

테이블을 분할해야하는 경우

다음은 테이블을 분할하는 경우에 대한 몇 가지 제안 사항입니다.

  • 2GB보다 큰 테이블은 항상 파티션 분할의 후보로 간주되어야합니다.
  • 새로운 데이터가 최신 파티션에 추가되는 히스토리 데이터가 포함 된 테이블. 일반적인 예는 현재 달의 데이터 만 업데이트 할 수 있고 다른 11 개월은 읽기 전용 인 기록 테이블입니다.
  • 테이블의 내용을 다른 유형의 저장 장치에 분산해야하는 경우.

파티션 가지 치기

파티션 정리는 파티션을 사용하여 성능을 향상시키는 가장 간단하고 가장 중요한 방법입니다. 파티션 프 i은 종종 u 리 성능을 몇 x 째 오름차순으로 향상시킬 수 있습니다. 예를 들어 응용 프로그램에 주문 내역 레코드가 포함 된 Orders 테이블이 있고이 테이블이 주별로 분할되었다고 가정 해보십시오. 한 주 동안 주문을 요청하는 쿼리는 Orders 테이블의 단일 파티션에만 액세스합니다. Orders 테이블에 2 년의 기록 데이터가있는 경우이 쿼리는 104 개의 파티션 대신 하나의 파티션에 액세스합니다. 이 쿼리는 파티션 정리 (partition pruning) 때문에 100 배나 빠르게 수행 될 수 있습니다.

분할 전략

  • 범위
  • 해시시
  • 명부

당신은 텍스트를 읽고 모든 것을 잘 설명하는 이미지를 시각화 할 수 있습니다.

그리고 마지막으로, 데이터베이스는 매우 리소스 집약적이라는 것을 이해하는 것이 중요합니다.

  • CPU
  • 디스크
  • I / O
  • 기억

많은 DBA가 동일한 시스템에서 파티션을 생성합니다. 파티션은 모든 리소스를 공유하지만 데이터 및 / 또는 인덱스를 분할하여 디스크 및 I / O를 향상시킵니다.

다른 전략은 100 %의 CPU, 디스크, I / O 및 메모리를 자체적으로 가지고있는 분리 된 별개의 컴퓨팅 장치 (노드)에 샤드가 상주하는 "무 공유"아키텍처를 사용합니다. 자신 만의 장점과 복잡성을 제공합니다.

https://en.wikipedia.org/wiki/Shared_nothing_architecture






database-partitioning