2013-03-03 5 views
0

InnoDB & MySQL을 사용할 때 큰 테이블을 여러 개의 작은 테이블로 분할 할 때 장점 또는 단점이 있습니까? 물론 실제 innoDB 파일을 분할하는 것에 대해 이야기하는 것이 아니라, 여러 테이블을 사용할 때 어떤 일이 발생하는지 궁금합니다.하나의 큰 테이블 대신 여러 개의 테이블 사용?

상황 : 나는 수백만 개의 행 (항목)이있는 실제 큰 표가 있으며 카테고리 (열 "카테고리")로 분류됩니다. 이제 각 카테고리에 별도의 테이블을 사용하는 방법에 대해 생각해 보겠습니다. 어떤 상황에서도 여러 테이블에 걸쳐 데이터가 필요하지는 않습니다.

+2

[Partitioning] (http://dev.mysql.com/doc/refman/5.1/en/partitioning-overview.html) –

답변

0

일반적으로 테이블이 서로 관련성이 없다면 모든 테이블을 포착하는 것이 아니라 별도의 테이블에 있어야합니다.

그러나 관련이 있다면 실제로 하나의 테이블에 있어야합니다. 여러 가지 방법으로 큰 테이블의 성능을 관리 할 수 ​​있습니다. 너무 커져 문제가 발생하면 partitioning the tables을 보시기 바랍니다.

수백만 행은 "실제 큰 테이블"이 아닙니다. 우리는 수천만 개의 행과 수십억 개의 테이블을 많이 보유하고 있습니다. 식칼 인덱싱, 파티션 분할 및 읽기 복제본

편집 1 - 의견에 응답 : - 당신이 관계를 격파하고 당신이 바로, 이상한 못생긴 그냥 아주 잘못 말한대로

키 값 쌍에 각각의 키에 동적 테이블 만들기입니다 RDBMS의 일부 당신의 스키마와 당신이 달성하고자하는 것에 대한 상세한 정보가 여전히이 질문에 결여되어 있지만 다음과 같이 구체적으로 설명하는 것은 불가능합니다. 그러나 나는 원래의 대답을 편집 할만큼 충분히 이해하고 있습니다.

동일한 데이터베이스 내에서 테이블을 파티셔닝하고 다른 데이터베이스에서 새 테이블을 만드는 것에 대한 이야기가 아주 다릅니다. 성능에 대해 물어 보면, 일반적으로 기본 데이터 저장소에 대한 색인 및 IO를위한 메모리와 같은 충분한 리소스를 갖추고 있다면 동일한 테이블 (1000GB 데이터베이스의 새 테이블과 0GB 데이터베이스의 새 테이블)을 수행해야합니다. 병목.

동적 테이블 ("table_ {category}")을 만들거나 값/카테고리를 텍스트 파일에 저장하려는 이유가 실제로 어울리지 않습니다. 이것은 1-N 관계와 JOIN이 필요한 것처럼 들립니다.

+0

귀하의 의견에 감사드립니다. 나의 예는 실제 시나리오 1 : 1을 반영하지 않는다. 나는 오히려 비유하려고 노력하고 있었다. 내 RL 시나리오에서 별도의 테이블을 생성하는 것은 비정상적이고 추한 것 같은 동적 테이블 생성이 필요합니다. 나는 "가치"와 "범주"라는 두 개의 열이있는 테이블을 가지고 있습니다. 그래서 각 "범주"에 대해 새로운 테이블을 만드는 것에 대해 생각하고 있습니다. 그러나 그렇게 할 때 어떤 이점이 있는지 모르겠습니다 (성능). 그것은 하나의 테이블에 모든 것을 보관하는 것이 훨씬 쉽고 더 우아 할 것입니다. 그러나 데이터가 관련이 없기 때문에 나는 물류 창고에서 문제없이 여러 테이블을 사용할 수 있습니다. –

+0

@Benedik B는 키 값 쌍 테이블입니까? 스키마 및 목표와 같은 정보를 더 제공하면 내 대답을 확장 할 수 있습니다. – Steve

+0

감사합니다. 나는 당신이 그것을 가치/가치 표 ("가치"와 "범주")라고 부를 수 있다고 생각한다. 이제는 "category"열 대신 "value"열만있는 동적 테이블 "table_ {category}"을 만들 수 있습니다. MySQL 대신 텍스트 파일을 사용하려고 생각했습니다. 나는 며칠마다 행을 채울 것이지만, 나는 테이블을 일주일에 몇 번 읽는다. (항상 테이블 전체가 아니라 테이블 전체를 읽을 것이다.) –

관련 문제