문제

나는 데이터베이스로 작업하는 스키마로 실행 확장성 문제입니다.하나의 테이블 스키마에서 성장하는 약 10 만 행,그리고 나는 탐험 분할 및 파티션 옵션을 허용하는 이 스키마를 확장하는 더 큰 데이터 집합(말 1 억 100 억 행).우리의 응용 프로그램을 수도 있어야 합 배포에는 여러 데이터베이스를 포함하여 제품에 제한되지 않을 Oracle,MS SQL Server,MySQL.

이것은 큰 문제가 일반적으로,저는 읽고 싶에 어떤 옵션이 사용할 수 있습니다.무슨 자원이 나이(책,백서,웹 사이트)에 대한 데이터베이스 분할 및 분할 전략?

도움이 되었습니까?

해결책

샤드에 의지하기 전에 스키마와 인덱스를 살펴 봐야한다는 다른 답변에 동의합니다. 1 천만 행은 주요 데이터베이스 엔진의 기능 내에 있습니다.

그러나 샤딩의 주제에 대해 배우기위한 자료를 원한다면 다음과 같이 시도하십시오.

다른 팁

Mike Woodhouse의 현재 크기가 문제가되어서는 안된다는 관찰에 동의하며 질문자는 동의합니다.

대부분의 상업용 DBM은 일부 이름 또는 다른 이름으로 조각난 테이블을 지원합니다. 주요 질문 중 하나는 데이터를 조각으로 분할하는 합리적인 방법이 있는지 여부입니다. 한 가지 일반적인 방법은 날짜를 기준으로 그렇게하는 것이므로 2008 년 11 월에 대한 모든 값은 한 조각으로, 2008 년 10 월에 다른 조각으로 들어갑니다. 이전 데이터를 제거 할 때가되면 장점이 있습니다. 다른 조각에 영향을 미치지 않고 2001 년 10 월 (7 년 데이터 보유)의 데이터가 포함 된 조각을 삭제할 수 있습니다. 이러한 종류의 조각화는 또한 '조각 제거'에 도움이 될 수 있습니다. 쿼리가 주어진 조각에서 데이터를 읽을 필요가 없다면 읽지 않으면 웅장한 성능 이점을 줄 수 있습니다. (예를 들어, 최적화 제가 쿼리가 2008 년 10 월의 날짜임을 알고 있다면 2008 년 10 월의 데이터를 포함하는 조각을 제외한 모든 조각을 무시합니다.)

다른 조각화 기술이 있습니다. 라운드 로빈은 여러 디스크에 대한 하중을 분배하지만 조각 제거로부터 혜택을받을 수 없음을 의미합니다.

1 천만 행은 DBMS 용어로 크지 않으며 파편이나 파티션으로 데이터의 물리적 배포를 계획하기 전에 인덱싱 및 쿼리 계획을 먼저 살펴 보았습니다. 몇 배 순서.

물론 모든 IMHO.

내 경험에 대형 테이블 항상 당신을 공격 I/O side.저렴한 솔루션을 추가하는 것이 충분히 다 열 인덱스는 귀하의 모든 쿼리 데이터를 얻을 수 있습에서 직접 인덱스를 로드하지 않고 주요 데이터 페이지입니다.이것은 당신의 삽입 업데이트를 이상의 I/O 집중하지만,이 될 수있다 확인.다음을 쉽게 옵션이 그것을 밖으로 최대 RAM 에서 당신의 서버입니다.아무 이유 없이보다 적은 32GB 는 경우에 데이터베이스입니다.그러나 끝에서 당신은 여전히 자신을 찾을 수 있 I/O,그리고 당신이 찾고있을거야에서 많이 구입하고 하드 드라이브 및 유지 복잡한 분할 계획이 비용,운 하드웨어와 노동.나는 희망이 있다는 더 나은 대안이 일-이동 데이터베이스에서 회전하는 하드드라이브를 SLC 고체 드라이브-이해인 임의 읽기 및 쓰기를 백 배 이상 빠른 최고의 SAS 드라이브를 제거합 I/O 병목 현상이 발생합니다.Ssd 를 시작$10per 기가 바이트,그래서 당신은 몇 그랜드 하지만 그것은 여전히는 것보다 훨씬 저렴 San,etc.

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