2012-02-20 2 views
0

사용자가 게시물에 대해 의견을 말할 수있는 소셜 네트워크 플랫폼에서 작업하고 있습니다.데이터베이스에서 선택하고 소프트웨어로 제한하거나 데이터베이스 (mysql)로 제한

그리고 각 게시물 (페이지를로드 할 때)에 대한 모든 주석을 선택하고 소프트웨어를 사용하여 줄이거 나 또는 mysql 쿼리를 사용하여 결과를 제한해야하는지에 대한 딜레마가 생겼습니다.

이 딜레마의 이유는 mysql이 자체 최적화 및 쿼리/결과 캐싱을 수행하고, 출력을 제한하면 쿼리 캐싱이 쓸모 없게 될 수도 있지만 그렇지 않다면 필요한 것보다 더 많은 데이터를 얻는 것뿐만 아니라 소프트웨어 오버 헤드가 있습니다.

질문은이 한글 MYSQL and the LIMIT clause과 같을 수는 있지만 제한 사항 1을 언급하지만, 내 경우에는 결과 수가 0에서 3000 (또는 그 이상) 일 수 있습니다. 한도는 일반적으로 3이지만 사용자가 더 많은 댓글을보고 싶은 경우 달라집니다.

쿼리에 ORDER BY id DESC 절이 있고 그 SELECT * (반드시 있어야 함)에 대해 언급해야합니다. 기본적으로, SELECT * FROM table where postid = '$ variable'ORDER BY id DESC.

나는 또한 소프트웨어가 2 년 이상 잘 실행되었다는 것을 언급해야하지만, 나는 그것을 최적화하는 과정에있다. 그래서, 어떤 도움이 될 것입니다.

편집 : TL : DR 주요 질문은 다음과 같습니다. 하나의 데이터베이스 쿼리를 사용하고 소프트웨어를 사용하여 필요한 부분에 정확한 데이터를 요청하는 것보다 더 좋습니다 (제한 절 포함)?

+0

왜 테스트하지 않는 것이 좋을까요? 당신은 당신 자신을 위해 그것을 시험해 볼 필요가있을만큼 구체적인 소리를 낸다. –

+0

성능 차이를 찾는 정확한 방법이 없다는 것을 제외하면 두 가지 방법 모두 잘 동작한다. 그리고 몇몇 전문가의 견해가 도움이 될 것입니다. – Sina

+0

또한 테스트하기 쉽지 않다고 덧붙여 야합니다. 시스템에 접속하려면 수천 명의 사용자가 필요하며 가변 길이의 변수 게시물을 작성한 다음 수천 개의 주석을 작성한 다음 비교하기 위해로드하는 데 걸리는 시간을 적어 두십시오. 그래서 기본적으로 테스트 할 수 없습니다. – Sina

답변

0

두 가지 방법 모두 정상적으로 작동하는 경우 데이터베이스를 제한하는 것이 좋습니다.

이렇게하면 일부 처리를 데이터베이스로 옮길 수 있으므로 나중에 서버를 분리하고 강화하는 것이 더 쉬울 것입니다.

풍선 도움말의 개수가 많은 경우 상상해보십시오. 데이터베이스를 비싼 서버로 옮기면 성능이 향상됩니다.

+0

아시다시피 트위터, fb 등과 같은 소셜 네트워크에서 최신 게시물 만 볼 수 있습니다. 댓글을 달았고, 잊혀 질 것입니다. 그래서 중요한 것은 많은 사용자가 동일한 프로세스를 실행하고 있다는 것입니다. 나는 그것이 빠르게 변화함에 따라 캐싱을 할 수 없다. 또한, 모든 것을로드하고 mysql 캐시를 저장하게하는 것이 무엇이든지 필요한 것만로드하는 것보다 성능 이점을 가질 수 있는지 여부를 알고 싶습니다. – Sina

+0

당신이 말한 것을 기반으로합니다.데이터베이스에서 캐시 할 수없고 http에서도 캐시 할 수 없습니다. 그렇다면 db를 제한하여 메모리 사용량을 줄이는 것이 가장 좋은 방법입니다. 그렇지 않다면 당신의 PHP는 단지 1000을 표시하고 싶어도 모든 1000 개의 주석을로드해야합니다. 5. 데이터베이스가 데이터 필터링을 처리하도록하십시오. – iWantSimpleLife

+1

또 하나는 관계형 테이블을 사용하지 마십시오. 테라코타 또는 큰 테이블과 같은 일부 nosql 솔루션을 살펴보십시오. 페이스 북이나 트위터와 같은 대부분의 사이트는 하드웨어를 추가하여 쉽게 확장 할 수 있으므로이를 사용합니다. – iWantSimpleLife

관련 문제