2017-03-31 2 views
0

우선 내 문제를 설명하려고합니다. 클라이언트는 1 년 동안 애플리케이션을 사용하고 있으며 약 7 백만 개의 레코드를 mysql 데이터베이스에 저장했습니다. 그의 계획은이 애플리케이션에 대해 더 많은 작업을 계속하는 것이지만이 데이터 양으로 속도가 느려집니다. 물론MySQL : 많은 양의 데이터

이 질문이 꽤 ~ 데이터의 98 %가 하나 개의 관계형 테이블에 저장된 특정 경우가 내년에 두 개 또는 5 ...

을 무슨 일이 생긴 것입니다 것입니다 (이 사이의 링크입니다 2 개의 테이블).

이 경우 가장 좋은 해결책은 무엇입니까? 최상은 안전하고 잘 디자인 된 응용 프로그램을 오랫동안 사용할 수있게 만들고 이러한 상황을 방지하는 가장 논리적 인 솔루션을 포함합니다.

내 테이블 : 현재 테이블을 기록 테이블로 유지하고 지난 3 개월 동안 레코드를 저장할 수있는 새 테이블을 만들고 레코드가 오래되면 어떤 동작을합니까?

존중!

+1

우리는 거대한 테이블 중 일부에 대해 이렇게합니다. – Barmar

+0

또한 분할 된 테이블과 MERGE 엔진을 살펴보십시오. – Barmar

+1

안녕하세요. StackOverflow에 오신 것을 환영합니다. 귀하의 질문을 읽고 그냥 "이 경우 가장 좋은 해결책은 무엇입니까?"라는 질문에서 "최고"를 정의하는 방법에 대해 궁금합니다. 의견을 바탕으로 한 답변을 생성하는 질문은 여기에서 눈살을 찌푸리게됩니다. 측정 할 수있는 방식으로 (또는 방법으로) 당신에게 가장 좋은 것이 무엇을 의미하는지 정의 할 수 있습니까? –

답변

0

많은 : 많은 매핑 테이블의 경우 여기에 설명 된 팁을 사용하십시오 : http://mysql.rjweb.org/doc.php/index_cookbook_mysql#many_to_many_mapping_table. 그러면 많은 경우 성능이 향상됩니다.

SHOW CREATE TABLESELECTs의 속도가 느려집니다.

데이터의 상당 부분이 '링크'테이블에있는 경우 쿼리는 CROSS JOIN과 어떻게 다른가요?

파티셔닝은 성능을 향상시키지 않습니다. 다시 말하지만, 쿼리를 볼 필요가 있습니다. MERGE은 MyISAM 기반의 PARTITION kludge입니다. 사용하지 마십시오.

기록 표? 쿼리가 "최신"것을 찾습니까? 다시 말하지만, 스키마와 쿼리를 볼 필요가 있습니다.

관련 문제