웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
예전에 책원고로 만들었던것인데 필요한분 사용하세요
2005.10.22 14:23
예전에 성** 기획으로 책을 공동집필로 쓸기회가 있었는데 그때 만든 원고 부분입니다.
제가 원고를 처음 써봐서 어색하고 이상할지 모릅니다.
그책은 결국 빛을 보지 못햇지만, 여러분이 유용하다 생각하시면 수정하고 발전시켜 사용하세요.
발전시킨후 피드백은 의무입니다. ㅎ
내용은 여러분이 많이 고민하는 각 커뮤니티 메인페이지의 속도 문제와 관계있으며
서버의 세팅과는 그리 관계없이 웹호스팅 환경에서도 사용할수 있습니다.
졸필입니다. 소스도 포함되어있습니다
제가 원고를 처음 써봐서 어색하고 이상할지 모릅니다.
그책은 결국 빛을 보지 못햇지만, 여러분이 유용하다 생각하시면 수정하고 발전시켜 사용하세요.
발전시킨후 피드백은 의무입니다. ㅎ
내용은 여러분이 많이 고민하는 각 커뮤니티 메인페이지의 속도 문제와 관계있으며
서버의 세팅과는 그리 관계없이 웹호스팅 환경에서도 사용할수 있습니다.
졸필입니다. 소스도 포함되어있습니다
댓글 7
-
유창화
2005.10.23 13:02
-
유창화
2005.10.23 00:37
참, 다들 기본은 아시겠지만
제 원고를 사용하시거나
소스를 사용, 수정발전시켜 사용하실때
원작자 정도는 명시해 주시기 바랍니다. -
유창화
2005.10.22 14:24
음 제가 궁금해서 그러는데
내용이 어렵나요 쉽나요?
유익한 내용인가요?
활용하긴 쉬운가요?
만약 책으로 냈다면 괜찮았을까요?
ㅎㅎㅎ 이런게 궁금해요
보신분들은 코멘트좀 달아주세요. -
감기군
2005.10.23 22:22
혹시, 성안당인가요? :) -
유창화
2005.10.23 22:45
출판사에 대해서는 언급하고 싶지 않습니다.
그냥 그런 사실이 있었다 정도입니다.
음 저하고는 거의 20년 터울이네요:) -
타스케
2005.10.27 10:18
잘 봤습니다 ^^
책 제목이 무엇인가요? 한번 읽어보고 싶네요 -
타스케
2005.10.27 10:18
아 빛을 보지 못했다는 것은.. ㅠ
제목 | 글쓴이 | 날짜 |
---|---|---|
[PHP 동영상강좌] 9. form태그를 이용한 값의 전달 [15] | 서기 | 2005.11.22 |
[PHP 동영상강좌] 8. Get방식의 전달과 테이블, 스타일태그의 사용 [13] | 서기 | 2005.11.22 |
[PHP 동영상강좌] 7. Get방식을 이용한 변수의 전달 [12] | 서기 | 2005.11.22 |
[PHP 동영상강좌] 6. Hello PHP [14] | 서기 | 2005.11.22 |
[PHP 동영상강좌] 5. 웹서버/웹브라우져/PHP란 무엇인가 [12] | 서기 | 2005.11.17 |
[PHP 동영상강좌] 4. 스타일 시트 [17] | 서기 | 2005.11.17 |
[PHP 동영상강좌] 3. 테이블 태그의 심화 [10] | 서기 | 2005.11.17 |
[PHP 동영상강좌] 2. 하이퍼링크, 테이블태그의 사용방법 [15] | 서기 | 2005.11.17 |
[PHP 동영상강좌] 1. HTML이란 무엇인가! [22] | 서기 | 2005.11.17 |
주민등록번호 진위확인 [5] | 엔시™ | 2005.11.08 |
예전에 책원고로 만들었던것인데 필요한분 사용하세요 [7] | 유창화 | 2005.10.22 |
이쁜 달력소스입니다. [2] | 최문혁 | 2005.09.05 |
자기계정에서 file()가 잘안될때.... [5] | 이진환님 | 2005.08.18 |
일년치 달력을 한꺼번에 보자!!! [4] | 未淚 | 2005.08.07 |
효율적인 경로 지정하기 [9] | 대류 | 2005.07.27 |
대용량 파일 업로드 컴포넌트 [4] | OTLNO | 2005.06.15 |
트랙백 기능 구현하기. | 태규 | 2005.06.12 |
나만의 미니홈 만들기 ㅡ 메모장 소스 | 예뜨락 | 2005.06.09 |
mysql 테이블 스키마 보는법. [2] | 최문혁 | 2005.05.14 |
나만의 미니홈 만들기 ㅡ 메모장 디자인 (html 소스) [4] | 예뜨락 | 2005.05.12 |
팁에 대한 설명을 조금 해야 할듯합니다.
소스에 포함되어있는 Ysummary를 사용할경우 엄청나게 많은양의 쿼리실행을 줄일수 있습니다.
예로서 phpschool.com을 들면 (이하 학교로 표현합니다.)
제가 학교의 모든 부분을 알수는 없기에 몇가지 전제를 하고 설명합니다.
이하 경어체는 생략합니다.
1. 메인페이지의 하루 페이지뷰는 10만이다.
2. 메인페이지는 총 10개의 게시판에서 최신글만 뽑아서 뿌려준다.
3. 각 게시판은 모두 다른 테이블이다.
4. 다른 방법은 사용하지 않고 데이타베이스만 사용한다.
5. 하루에 데이터의 변동수는 1000개 미만이다(새로운글, 수정, 삭제, 코멘트 등)
6. 각 하부페이지도 모두 한번씩 이상의 쿼리 실행이 있다.
7. 하루 최대 동시접속자수는 300 이다.
8. 별도의 캐쉬 프로그램은 사용하지 않는다.
한번의 메인페이지 방문으로 실행되는 쿼리의 수는 총 10개이다.
그럼 메인페이지가 하루 10만페이지뷰일때 총 실행되는 쿼리의 수는
100,000 * 10 = 1,000,000
백만번이다.
만약 Ysummary를 사용할 경우는
전체에서 하루에 총 업데이트되는 데이터양이 1000건이라고 한다면
각 업데이트가 실행될때마다 Ysummary에서 필요한 2번의 쿼리가 실행되므로
1000 * 2 = 2,000
2천건이다.
따라서 Ysummary를 사용함으로서 하루의 줄일수 있는 쿼리실행수는
1,000,000 - 2,000 = 998,000
구십구만팔천건이다.
그럼 방향을 바꿔서 동시접속자로 생각해보면
일단 이해를 돕기 위해 웹서버의 조건은 무시한다.
그냥 수치적인 설명을 위한 것일뿐 동접에 대한 의미와
디비의 maxconnections의 대한 의미는 따지지 말도록 한다.
단지 이해를 돕기 위한 차원의 설명이니 의미만 이해해 주기 바란다.
데이터베이스는 동시접속을 255 만을 허용할수 있다고 가정한다.
하루 최대 동접이 300명(메인페이지에 100명 나머지 하부페이지에 200명이 분산되어있다고 가정)이면 그때는 too many connections 와 같은 에러를 뿌린다.
하지만 Ysummary를 사용했을 경우는
메인에 100명은 쿼리실행이 없으므로 나머지 200명의 쿼리실행만 있다.
즉 too many connections와 같은 에러를 뿌리지 않게 된다.
다른 방법(크론으로 스케줄링)과의 비교
크론을 사용하는 방법은 다음과 같다고 가정한다.
1. 일정시간 (5분이라 가정) 에 한번씩 스크립트를 실행하도록 설정한다.
2. 일단 5분에 한번씩이므로 메인에서 실시간은 포기된다.
3-1. 총 10개의 테이블에서 최신글을 가져오고 배열로 저장하는 스크립트를 작성한다
3-2. 현재의 10번의 쿼리를 실행하는 메인페이지를 그대로 실행 시키고 그 결과를 파일로서 저장하는 스크립트를 작성한다.
3-3. 기타 여러가지 방법이 있을수 있다.
4-1. 메인페이지에서는 저장된 배열을 인클루드하여 사용한다.
4-2. 메인페이지는 저장된 메인페이지를 읽어와서 뿌려준다.
일단 실시간이 포기된다는게 가장 큰 차이다.
하지만 Ysummary를 사용할때보다 페이지를 통째로 저장하는 방식이 메인페이지 실행은 더 빠를수 있다.
쿼리 실행수를 비교해보자.
아무런 초치를 하지 않았을때 메인에서 실행되는 총 쿼리수는 위에서 계산했듯이 1,000,000건이다
5분에 한번씩 스크립트를 실행한다면 하루가 24시간이고 1시간은 60분, 5분의 12배이다.
스크립트 한번 실행될때 실행되는 쿼리수는 10(테이블의 수와 동일하다)번이다
따라서 메인페이지를 보여주기 위해 실행되는 총 쿼리수는
10 * 12 * 24 = 2,880
이천팔백팔십건이다.
크론을 사용하는 방법이 Ysummary를 사용시보다 메인페이지를 보여주는 시간은 단축할수 있으나
실시간을 포기해야 하며, 실행쿼리수는 더 많다.
만약 스크립트 실행 시간을 매 1분으로 한다면 * 5가된다.
일단 다른 부분에 대한 것은 배제하고
쿼리실행의 개수만으로 비교한것입니다.