2012-07-08 2 views
-1

나는 모든 테이블이 innodb 엔진을 사용하는 30GB의 큰 mysql 데이터베이스를 가지고 있습니다. 이 공간의 대부분은 대형 텍스트를 이진 형식으로 저장하는 하나의 큰 테이블 (약 25GB)이 차지하지만 99 %의 쿼리는 다른 작은 테이블을 사용합니다.mysql/innodb 데이터베이스 크기가 성능에 미치는 영향은 무엇입니까?

내 서버의 메모리가 16GB이고 시스템 메모리가 매우 부족하여 항상 스왑을 사용하고 내 사용자에게 많은 고통을줍니다. 내 innodb_pool_buffer_size6G으로 설정했습니다.

나는이 텍스트를 데이터베이스에서 파일 시스템으로 옮겨서이 성능 문제를 해결할 생각이다.

대부분의 쿼리에서이 대형 테이블을 사용하지 않으면 25GB의 텍스트를 파일 시스템으로 이동하여이 문제를 해결할 수 있습니까? 가장 큰 innodb 테이블이 쿼리에 너무 많이 사용되지 않는 경우에도 데이터베이스 크기가 서버 성능에 영향을 줍니까?

+0

'innodb_file_per_table' 옵션을 사용합니까? – raina77ow

+0

나는 이것이 훨씬 더 나은 시스템이 될 것에 동의한다. SilverLight는 25G 테이블의 간섭으로 인해 다른 풀이 느려질 수 있으므로이 기능을 확실히 켜야합니다. –

답변

3

답변을 제공하는 데 필요한 정보가 충분하지 않습니다.

문제에 대한 가능한 해결책을 적용하기 전에 체계적으로 접근하여 문제을 찾아야합니다. 그렇지 않으면 알 수없는 질병에 대해 무작위 약을 처방하고 있습니다. 문제를 더 악화 시키거나 아무런 효과가 없으므로 문제를 악화시킬 가능성이 큽니다.

느린 쿼리에서 EXPLAIN을 실행하여 시작하고 있는지 확인하십시오. 쿼리를 개선하기 위해 테이블을 올바르게 인덱싱했는지 확인하십시오 (아직없는 경우). 그리고 여전히 멈춘다면 가장 느린 쿼리를 게시하고 여기에 새로운 질문으로 EXPLAIN의 출력을 게시하면 더 유용한 답변을 얻을 수 있습니다.

+0

+1 예, 체계적인 접근이 필요합니다. 시스템이 너무 짧아서 스와핑이나 페이징이 너무 많은 경우 추가 메모리를 추가하거나 다른 목적을 위해 메모리를 비우기 위해'inno_pool_buffer_size'를 낮춰야 할 수도 있습니다. MySQL을 실행하는 것 외에도 서버가 수행하는 작업은 무엇입니까? – HeatfanJohn

0

전적으로 Flimzy에 동의합니다. 데이터베이스를 사용하는 방법을 면밀히 검사해야하며, 최적화에 도움이 필요하면 더 많은 정보가 필요합니다.

그러나 두 가지 질문에 답변 할 수 있습니다. 99.9 %의 경우, 파일 기반 시스템으로 이동하는 것이 MySQL보다 좋지 않습니다. MySQL은 표준 파일 시스템의 데이터를 정렬, 정렬 및 선택하는 데 훨씬 더 나은 접근법을 가지고 있습니다. 기본적으로 모든 OS는 하나의 디렉토리에 많은 양의 파일을 유지하는 데 정말 좋지 않으며 HDD의 I/O 및 지연 시간은 단순히 지붕을 통과하게됩니다.
그리고 두 번째 질문에 : 아니오, 데이터베이스/테이블 크기는 서버 성능에 영향을주지 않아도됩니다. 145 GiB InnoDB 테이블 (부여, 그것이 SSD에 있음)을 사용하고 있으며, 사이트가 큰 타격을 입지 않고도 심하게 사용되고 있습니다. : Flimzy는 SQL 서버, 테이블 디자인 및 인덱싱을 최적화 한 다음 최적의 성능을 위해 쿼리해야한다고 말했습니다.

관련 문제