하얀늑대 :: 하얀늑대의 일상
bloghome Tags |  Guestbook | 
  Tags
닷넷 연애 엠파스 블루레이 include 광고 sql 2005 server 방송 AB형 XP window2000 홍보 JavaScript UCC 쿠폰 가상현실 입냄새 IBM 닥스훈트 파워포인트
banner
하얀늑대 ::
하얀늑대의 일상

Google
내블로그에서 검색
 하얀늑대는?
 Category
allow  모두보기 (275)
spacespace Today Story's (11)
spacespace 핫이슈 (19)
spacespace 디카질 (4)
spacespace Javascript (15)
spacespace 2000 server (9)
spacespace 2003 server (3)
spacespace 리눅스 (3)
spacespace UCC (6)
spacespace 컴퓨터 Tip (15)
spacespace IT news (65)
spacespace 웹 접근성 (3)
 Tags
vluu nv10 엑셀 include php 김정일 이벤트오류 editplus 트랜잭션 Office 핸드폰 친구 건강 온오프통합 웹페이지 전화걸기 기획 투표 wap 동영상 창업
  Calendar
<< 2008 May >>
S M T W T F S
27 28 29 30 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
 New Post
line 중국 오픈마켓 시장 진출
line 중국 오픈마켓 시장 진출
line 중국 인터넷 시장의 국제화
line 중국 인터넷 쇼핑몰 시장의
line 중국 인터넷, 바이러스 마
 New Comment
lineselee2000 : 10/10/27
reply멋진데요.
line클럽4242 : 10/08/26
reply사랑에상처는 사랑으로 치
linesusanna : 08/11/07
replyhey,find <a href=http:
line하얀늑대 : 08/05/22
reply위에 페이지는 한페이지 내
line아아아 : 08/04/26
reply개새끼는너야
 New Tracbacks
lineWeb 1.0 과 Web 2.0
line06/11/18
line괴물 - 2006. 7. 28.
line06/07/29
 New Archive
2011 April (13)
2011 March (2)
2011 January (1)
2010 December (1)
2010 November (1)
...more
  Link Site
올블로그
KOON
태터툴즈
엑스파이더
심프로그
디지털예보
thesimplog.com
feed rss
 Visitor Statistics
Total  :  325496
Today :  101
Yesterday :  147


 Google



blog bar tagsbar guest loginbarlogoutbarX-inbar
line GetRows 메서드를 이용한 성능향상
ASP 프로그래밍 | 08/05/27 | 하얀늑대
GetRows 메서드란 무엇이며 사용해야 하는 이유는 무엇인가?
GetRows 메서드란 레코드셋을 하나의 배열로 변환시키는 메서드를 말한다. 즉 GetRows 메서드를 통해 우리는 레코드셋을 하나의 변수에 배열로 반환시킬 수 있다는 뜻이다. 그렇다면, 왜 우리는 이 메서드를 굳이 사용해야 하는 것일까?

게시판을 예로 들어보자. 필자가 보아온 대부분의 게시판들은 게시물 List를 생성할 때 ADO객체를 사용하여 레코드셋을 생성한 후 루프문을 통해 리스트를 생성하는 방식을 취하고 있다.

아래 샘플 코드를 보자.

<%

strTempSql = "SELECT * FROM [테이블]"

SET objRs = Server.CreateObject("ADODB.RECORDSET")

objRs.Open strTempSql, [커넥션스트링], adOpenForwardOnly, adLockReadOnly, adCmdText


If objRs.Eof Then

       Do Until objRs.EOF

              '==리스트 생성==

              objRs.MoveNext

       Loop

End If


objRs.Close : Set objRs = Nothing

%>


위 코드를 보고 무엇이 잘못되었나 하고 의아해 하는 독자들도 있을 것이다. 위 코드는 가장 대중적인 방법으로 많은 ASP책에서 예로 사용하고 있는 기법이며, 많은 개발자들이 위 형식을 취하고 있다.

그렇다면, 위 코드의 단점은 무엇일까? 바로 리스트를 생성하는 동안 레코드셋 객체를 계속 참조해야 한다는 것이다. 위와 같은 코드가 여러 곳에 배치되어 있는 페이지를 생각해 보라. 동시접속자가 많아 질수록 성능은 극도로 나빠질 것이다. 이를 해결하기 위한 방법으로 GetRows 메서드의 사용을 고려해 보아야 한다.

위 샘플코드에 GetRows 메서드를 사용해 보자.

<%

strTempSql = "SELECT * FROM [테이블]"

SET objRs = Server.CreateObject("ADODB.RECORDSET")

objRs.Open strTempSql, [커넥션스트링], adOpenForwardOnly, adLockReadOnly, adCmdText


If objRs.Eof Then

       arrRows = objRs.GetRows()

End If

'GetRows 메서드 사용 후 객체를 바로 해제시킨다.

objRs.Close : Set objRs = Nothing


'GetRows를 이용하여 배열로 반환이 되었다면 리스트를 생성한다.

If IsArray(arrRows) Then

              'Ubound를 사용하여 크기를 알아내자

              For intI = 0 To Ubound(arrRows, 2)

                     '== 리스트를 생성한다.

              Next

End If

%>


GetRows 메서드를 사용하여, 레코드셋 객체에 대한 참조를 바로 해제 시키는 것을 볼 수 있다.

GetRows 메서드를 사용하여 배열로 반환 후 배열의 특성을 사용하여 리스트를 생성함으로써, 웹 서버의 자원 낭비를 감소시키게 되었다. 이로 인해 웹사이트는 더욱 빠른 성능을 사용자에게 제공할 수 있을 것이다. 객체가 차지하는 리소스를 얼마나 빨리 반환해 주느냐에 따라 페이지의 성능은 크게 좌우된다는 것을 알 것이다.

프로그래밍을 하면서 끊임없이 고민해야 할 점은 “어떻게 하면 최소의 비용으로 최대의 성능을 낼 수 있을까?” 라는 부분이다.

 


태그: GetRows
bullet관련글0 | 댓글0
이전/ [1] / 다음 top