2010-11-20 2 views
1

안녕 친구 내 제품 중 하나에 MySQL DB를 사용하고 있습니다. 약 250 개의 학교가 지금 노래 부르며, 시간당 약 1500000 건의 삽입과 하루에 약 12000000 건이 삽입됩니다. 단 하나의 서버와 같은 현재 설정이 충돌 할 수 있다고 생각합니다. 시간과 함께 그리고 읽기도 쓰기와 동일합니다. 어떻게하면 무료로 DB 서버를 만들 수 있습니까? 지금 직면하고있는 주된 문제는 쓰기와 읽기 모두의 속도가 느린 것입니다. 어떻게해야할까요? 매우 어렵습니다. 솔루션을 얻으 려면 나에게 도움을주세요. 도와주세요. 솔루션을 수행하기위한 좋은 모델은 무엇입니까?mysql에서 빠르게 데이터를 읽고 데이터를 쓰는 방법?

+2

호기심 - 어떤 제품인가요? –

+0

a 학생 관리 시스템 .. 너무 많은 학교에 로그인 했으므로 ... 학교 당 약 600 명의 학생이 큰 데이터를 가져옵니다. –

+0

@Alex Mathew : 그들은 많은 양의 데이터를 동시에 삽입합니까? 확실합니까? – jwueller

답변

1

내 여유로운 조언은 다음과 같습니다

  • 빌드하면 응용 프로그램 경량. 활성 레코드와 같은 상위 수준의 데이터베이스 추상화 계층을 사용하지 마십시오. 그들은 스케일링에 빠지다.
  • mysql permformance에 대해 자세히 알아보십시오.
  • mysql 복제에 대해 자세히 알아보십시오.
  • 로드 균형 조정에 대해 자세히 알아보십시오.
  • 메모리 캐시에 대해 자세히 알아보십시오. (memcached)
  • (괜찮은 MySQL 지식이있는) 관리자 또는 웹 응용 프로그램 성능 전문가/컨설턴트를 고용하십시오.

구체적인 전략은 응용 프로그램과 사용 방법에 따라 다릅니다. MySQL의 복제가 적절할 수도 있고 그렇지 않을 수도 있습니다 (언급 된 샤딩 전략에도 동일하게 적용됩니다). 그러나 애플리케이션 디자인에 지나치게 영향을 미치지 않기 때문에 스케일링을 수행하는 것은 매우 간단합니다. 메모리 캐시에서 데이터베이스의로드를 막을 수는 있지만 적용 할 작업과 약간의 트레이드 오프가 필요합니다. 결국 부하가 많은 상태에서 데이터베이스 기반 응용 프로그램을 처리하는 방법에 대한 전반적인 이해가 필요합니다. 마감 기한이 긴 경우 외부 인력을 추가하십시오. 경험없이 6 주 이내에이 작업을 수행하지 않으므로 외부 인력을 추가하십시오.

2

빠른 읽기와 쓰기를 동시에 수행하기가 어렵습니다. 빠른 읽기를 얻으려면 색인을 추가해야합니다. 빠른 쓰기를 얻으려면 색인이 거의 필요하지 않습니다. 그리고 둘 다 빨리되기 위해서 서로 잠그지 않아야합니다.

필요에 따라 하나의 솔루션은 두 개의 데이터베이스를 갖는 것입니다. 라이브 데이터베이스에 새 데이터를 쓰고 조용 할 때마다 쿼리를 수행 할 수있는 다른 데이터베이스와 데이터를 동기화 할 수 있습니다. 이 접근법의 단점은 읽은 데이터가 조금 오래되었다는 것입니다. 이것은 당신이해야 할 일에 따라 문제 일 수도 있고 그렇지 않을 수도 있습니다.

3

초당 인서트 500 개는 실제로 재채기가되지 않습니다.

유연한 솔루션의 경우 일종의 샤딩을 구현할 수 있습니다. 아마도 가장 쉬운 해결책은 학교를 그룹으로 나뉘어 서로 다른 그룹의 학교에 대한 데이터를 다른 서버에 저장하는 것입니다. 예를 들어, 학교 1-10의 데이터는 서버 A, 서버 B의 학교 11-20에 저장됩니다. 이는 서로 다른 학교의 데이터간에 거의 관계가 없다고 가정 할 경우 거의 무한대로 확장 할 수 있습니다.

또한 문제 해결에 더 많은 시간을 할애하고 SSD 드라이브의 RAID에 투자 할 수 있습니다. 충분한 처리 능력이 있다고 가정하면 문제가 없습니다. 물론 거대한 데이터베이스 인 경우 SSD 드라이브의 용량이 충분하지 않을 수 있습니다.

마지막으로 데이터베이스를 비정규 화하는 것과 같이 삽입 횟수를 줄일 수 있는지 확인하십시오. 예를 들어, 각 학생의 출석을 별도의 행에 저장하는 대신 전체 클래스의 출석을 벡터로 단일 행에 넣으십시오. 물론 이러한 변경으로 인해 쿼리 기능이 크게 제한됩니다.

+0

의 thks .... 내가 어떻게 할 수 sharding 및 PHP와 연결 ?? –