2014-02-21 2 views
0

대형 테이블에 대한 MySQL 및 최적화에 관한 질문. MySQL 서버는 제한된 용량의 서버에서 실행되며 가능한 한 많이 최적화해야합니다.최적화 대형 테이블 용 MySQL

우리는 초당 하나의 측정 속도로 데이터를 샘플링하고이를 웹 응용 프로그램에 그래프로 그리는 데 사용합니다.

현재 이러한 모든 데이터는 단일 테이블 안에 있으며 수억 개의 데이터 포인트가 있습니다.

우리는 모두 두 개의 ID가있는 여러 데이터 소스를 가지고 있습니다. 하나는 위치에 대한 것이고 다른 하나는 소스 자체에 대한 것입니다. 우리는 두 ID를 함께 사용하여 고유 한 ID를 가지며 우리는 데이터의 크기를 줄이기 위해 MySQL id를 사용하지 않습니다. posix와 id 두 개를 테이블 기본 키로 함께 사용하고이를 DB 쿼리에 사용합니다. 이 ID는 SQL에 의해 생성되지 않습니다.

보통 우리는 시간 세그먼트와 여러 소스에서 약 400 포인트를 사용하여 그래프를 그립니다.

질문 : 이러한 디자인을위한 최적의 최적화는 무엇입니까?

첫 번째 질문 : 모든 데이터를 단일 테이블에 보관하거나 여러 테이블로 분할하는 것이 더 좋습니까? 동적 테이블이있는 것처럼 코드를 복잡하게하는 단점이 있습니다.

단일 테이블에 두는 것이 더 좋은 경우 ID 및 POSIX를 기반으로하는 기본 키를 사용하는 올바른 방법입니까?

그런 목적을위한 특정 MySQL 최적화가 있습니까?

감사

답변

0

나는 잘 이해하면이 상황에 가장 최적화는 distributed database를 낳게 될 것이다. 더 구체적으로 말하자면,이 테이블에 horizontal partitioning method을 적용 할 것입니다.

대략적으로 말하자면, 이것은 테이블을 조각으로 분할하여 특정 기준에 따라 처리하는 방식이므로 엄청난 양의 데이터를 한꺼번에 처리 할 필요가 없습니다. 이를 사용하여 특정 쿼리에 대한 관련 데이터 만 처리하거나 병렬 처리를 사용하여 모든 데이터를 처리 할 수도 있습니다.

정확히 설명해 줄 수 없기 때문에 더 이상 설명하지 말고, 자신의 페이스대로이 문제에 관해 더 잘 읽을 수 있기 때문에. 희망이 당신에게 출발점을 제공함으로써 도움이됩니다.

+0

귀하의 짧은 설명에서 우리의 요구, 시간 또는 소스에 의한 분열 여부에 완벽하게 부합하는 것으로 보입니다. 나는 그것에 더 많은 독서를 얻을 것이다. – Damien

+0

실제로, 시간 소인 분열은 요인 8로 쿼리를 개선했습니다. – Damien

+0

Splendid! 그래서 내가 도울 수있어서 기뻐! – lucasnadalutti

관련 문제