2012-04-03 3 views
0

현재 테이블 크기는 1 천만 개이며 성능을 대폭 향상시켜야합니다.MySQL 대용량 테이블 선택 성능

나는이 1 개의 테이블을 500k의 20 개 더 작은 테이블로 나누는 것에 대해 생각해 봤지만 성능이 향상되지는 못했습니다.

4 개의 열에 대해 4 개의 색인을 생성하고 모든 열을 INT로 변환했으며 다른 열도 있습니다.

내 기본 쿼리는 select primary from from mytable where column1 = int and bitcolumn = b'1'입니다. 여전히 매우 느립니다. 성능을 향상시킬 수있는 방법이 있습니까?

서버 사양

32기가바이트 메모리, 2TB 스토리지, 표준 INI 파일을 사용하여이 또한 내 프로세서가 MySQL 서버를 놀 더 많은 메모리를 제공하는 것 외에도 AMD 페넘 II X6의의 1090T

+0

더 나은 CPU를 삽입 하시겠습니까? :) – barsju

+0

@ barjju LOL, CPU가 심지어 쿼리를 실행할 때 10 %를 넘지 않아 도움이 될 것이라고 생각하지 않습니다. –

+0

항상 하나의 열 + 비트 만 선택 하시겠습니까? –

답변

0

입니다 불필요한 색인을 제거하고 column1에 색인이 있는지 확인하십시오 (귀하의 경우). 가능한 경우 sql에 제한 절을 추가하십시오.

+0

일반적으로 불필요한 인덱스는 제거하는 것이 좋지만 SELECT 성능에는 영향을 미치지 않습니다. INSERT/UPDATE/DELETE 성능에 영향을줍니다. –

+0

튜닝을위한 팁을 얻으려면 http://dev.mysql.com/doc/refman/5.0/en/server-parameters.html – jornare

+0

@EricJ. 예.하지만 잘못된 색인이 메모리를 차지합니다. 구성이 잘못되면 디스크로 밀려 시스템이 느려질 수 있습니다. – jornare

0

안정적으로 문제를 진단하는 데 필요한 정보가 충분하지 않지만 32G 메모리가있는 시스템에서 "기본"my.cnf/my.ini 파일을 사용한다고 명시되어 있습니다.

MySQL Documentation에서 다음과 같은 사전 구성 파일이 제공됩니다 :

  • 작은 : 시스템 < 64 메가 바이트 메모리를 가지고 있으며, MySQL은 자주 사용되지 않습니다.
  • 중간 : 시스템에 최소 64MB의 메모리가 있습니다.
  • 대형 : 시스템에 512MB 이상의 메모리가 있으며 서버는 주로 MySQL을 실행합니다.
  • 거대 : 시스템 메모리가 적어도 1GB이고 서버가 주로 MySQL을 실행합니다.
  • Heavy : 시스템에 최소 4GB의 메모리가 있으며 서버는 주로 MySQL을 실행합니다.

가장 좋은 경우, 시스템에서 메모리의 1/8을 사용하는 구성 파일을 사용하고 있습니다 ("무거운"파일을 사용하는 경우 기본 파일이 아니라고 생각합니다). 기본적으로 중간 또는 보통이라고 생각합니다.)

my.cnf 파일을 적절하게 편집하는 것이 좋습니다.

거기에 대한 귀하의 특정 사건에 대한 성능을 극대화하기 위해 메모리 할당을 조정할 수 있습니다 several areas of MySQL. 보다 구체적인 조언을 위해 여기에 my.cnf/my.ini 파일을 게시 할 수 있습니다. MySQL Tuner을 사용하여 자동화 된 조언을 얻을 수도 있습니다. (서버)에

0

에 다운로드 :

MySQLTuner.pl

이 그것을 설치를 실행하고 말하는 볼 - 더 나은 여기에 출력을 붙여 넣습니다. 모든

-1

먼저, 쿼리는

select primary from from mytable where column1 = int and bitcolumn = b'1' 

이 개 from 조항과 같은 약간의 오차가있다.두 번째로 테이블을 분할하고 불필요한 인덱스를 사용하면 결코 성능에 도움이되지 않습니다. 몇 가지 팁은 다음과 같습니다.

1) 일부 열을 반복적으로 쿼리하는 경우 복합 인덱스를 사용하십시오. 복합 인덱스에서는 인덱스에 컬럼을 배치하는 순서가 중요하기 때문에주의를 기울여야합니다.

2) 기본 키가 int 열에 있으면 더 유용합니다.

3) 색인 및 최적화에 관한 몇 가지 기사를 읽으십시오. Google에서 검색 할 때 너무 많습니다.