2009-08-24 3 views
0

PHP와 MySQL에서 잘 작동하는 예쁜 CPU 및 메모리 집약적 인 작업을 수행하기위한 좋은 서버 측 언어는 무엇입니까? 현재, 상당히 큰 데이터베이스의 큰 하위 세트를 기반으로 한 일부 계산을 실행하는 PHP 스크립트가 있으며 해당 계산 (1.5millions 행)을 기반으로 데이터베이스가 업데이트됩니다. 현재 구현은 매우 느리며 서버의 다른 활동에 따라 1-2 시간이 걸립니다. 나는 이것을 개선하고 사람들의 의견이 이러한 유형의 일에 좋은 언어를 사용하고 있는지 궁금해하고 있었습니까?CPU/메모리 집약적 인 프로세스를위한 서버 측 언어

답변

2

언어는 문제가되지 않습니다. 문제는 아마도 이고, 여기에이 계산을 수행하고 있습니다. 가능한 경우 SQL로 작성하는 것이 더 나을 것 같네요. 그렇지? 뭐하고 있니?

+0

예 가능합니다. 최상의 결과를 얻을 것이라고 생각하십니까? – giroy

+0

가장 확실합니다. 그것은 서버에서 바로 실행되고 데이터가 PHP/무엇이든간에 전송 될 필요가 없음을 의미합니다. –

3

병목 현상은 어디에서 발생합니까? 실제 프로파일 링을 실행하고 정확하게 문제의 원인을 확인하십시오. DB I/O입니까? 그것은 cpu입니까? 알고리즘이 비효율적입니까? 느린 라이브러리 메서드를 긴밀한 내부 루프에서 호출하고 있습니까? 사전 계산을 사용할 수 있습니까?

당신은 A 지점에서 B 지점까지 어떤 차량을 타야하는지, 그리고 트럭, 자동차, 자전거, 비행기, 제트기 및 헬리콥터를 제공했는지 거의 묻습니다. 대답은 더 이상의 맥락 없이는 의미가 없습니다.

+0

프로파일 링을위한 좋은 도구를 제안 해 주시겠습니까? – giroy

+0

http://www.linuxjournal.com/article/7213 유용하거나 유용하지 않을 수 있습니다. 이것은 python을위한 cprofile 모듈처럼 보입니다. 꽤 편리합니다. –

0

병목 현상이 계산이 아닌 것으로 생각됩니다. 몇 백만 개의 레코드를 업데이트하는 데 몇 시간이 걸립니다.

이 경우, MySQL의 c/C++에서 사용자 정의 함수를 작성하고 저장 프로 시저에서 함수를 실행할 수 있습니다.

Google의 데이터베이스에서 키 순환 중에 일부 중요한 필드를 다시 암호화합니다. 키 - 로테이션 시간이 수일에서 수 시간으로 줄어 들었습니다. 그러나 MySQL의 복사본을 유지하는 것은 쉽지 않습니다. 우리는 대안을 찾고 있었지만이 방법의 성능에 근접한 것은 없습니다.

관련 문제