database.sarang.net
UserID
Passwd
Database
ㆍDBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
DBMS Tutorials 107 게시물 읽기
 News | Q&A | Columns | Tutorials | Devel | Files | Links
No. 107
ODBC 와 JDBC 를 이용한 데이터로의 접근 (IV)
작성자
정재익(advance)
작성일
2001-12-02 23:16
조회수
4,799

Data Access Via ODBC and JDBC

 

Database Performance

 

여러분들이 퍼포먼스 문제의 원인으로 data access middleware 를 지적한다면 잘못 가르킨 것이다.

 

데이터베이스 디자인이 database access middleware 의 선택보다는 훨씬 더 크게 퍼포먼스를 지배하게 된다. 대부분의 데이터베이스는 테이블 디자인을 변경하고, 인덱스 컬럼과 query design 을 선택함으로서 성능향상을 가져 올수 있다. 만약 여러분들이 먼저 이런 분야에 포커스를 둔다면, 여러분들은 여러분들의 데이터베이스를 더 빠르게 노력을 들인것 보다는 훨씬 더 큰 수확을 거둬 들일수 있을것이다.

 

데이터베이스의 디자인을 정규화 (normalize) 하는 것은 필요없는 자료들을 제거하고, data group 을 반복하는 것을 피하고, 카테고리가 다른 자료들은 분리된 테이블에 저장하는 것 등의 과정을 포함한다. 적절하게 정규화된 데이터베이스는 일반적으로 각각 적은 컬럼을 가진 많은 테이블로 구성되는 경우가 많다. 정규화는 다음의 이유로 퍼포먼스를 향상시킨다 :

 

. 테이블 내에 적은 컬럼을 수를 가지므로 소팅이 빠르고 인덱스 생성 속도가 빠르다.

. 보다 많은 테이블이 있으므로 Index 를 cluster 할수 있다.

. Index 가 보다 compact 해 진다.

. 테이블당 좀더 적은 수의 인덱스를 가지므로 INSERT, UPDATE 그리고 DELETE 등의 문장이 좀더 빠르게 실행된다.

 

자료를 정규화하는데 도움을 주는 idnex 와 key 의 선택이 퍼포먼스 향상에 도움을 준다. 적절한 key 와 index 를 사용하여 오랫동안 실행되는 질의를 단순화하여 반응시간을 줄일수 있으며, transaction volumn 이 작을 때를 선택해서 전체 테이블을 탐색하는 복잡한 질의를 실행시키는 방법을 고려해봐야 한다.

 

데이터베이스를 정규화 하고, 될수 있는 한 간단한 SQL 명령어를 이용하는 것이 데이터베이스 서버의 SQL compiler 가 처리하는 시간을 줄여서 더욱더 좋은 퍼포먼스를 얻을수 있다. SQL compiler 는 자연어 (SQL) 을 이해하고 인식해야 하며, SQL 구문을 데이터베이스 엔진이 추출, 갱신 작업을 할수 있도록 명령어를 번역해 주어야 한다. SQL compiler 의 일이 될수 있는 한 빨리 실시간으로 동작할수 있어야 한다.

 

SQL compiler 는 각각의 SQL 구문을 다섯 가지 기본 단계로 처리한다. 첫번째 단계는 SQL 을 구문분석 (parse) 하는 것이다. SQL 의 구문 에러를 조하며, 다음으로 SQL parse tree 를 내부 구현 형식으로 변환해야 한다. SQL을 개발한 IBM은 이러한 내부 형식을 QGM (Query Graph Model) 으로 불렀다. 두번째 단계는 재구성된 SQL 문장이 referential integrity 를 범하지 않았는가를 조하사는 것이다. 두번째 단계에서 데이터베이스 엔진은 SQL의 constraint 나 trigger 를 조사하게 된다.

 

다음으로 SQL compiler 는 SQL 문장을 다시 작성하는데, view reference 를 실제적인 컬럼이름으로 대체하고, 최적화기를 통해서 SQL 처리를 변환하게 된다. 이 변환과정에서 불필요한 join 을 없애고, 술부를 포함시키며, INTERSECT 절을 EXISTS subquery 로 전환시킨다. 최적화기 (optimizer) 자체는 네번째 단계에서 SQL 을 가장 효율적으로 실행시킬 수 있는 방법을 결정하기 위하여 cost 를 기반으로 한 알고리듬을 사용한다. 예를 들면 최적화기는 가장 좋은 join 순서를 찾아 내며, SQL 구문의 실행이 CPU- 또는 I.O-bound 일 것인지를 결정한다. 최적화기는 데이터베이스 엔진이 가장 빠른 반응시간을 보일수 있도록 SQL 문장의 실행 경로 (execution path) 를 선택한다. 다섯번째 단계는 SQL 구문의 필수적인 부분을 "기억(remember)" 하는 것이다. 이것은 다음에 다른 SQL 문장과 비교를 하기 위함이다 - SQL compiler 는 구문을 어떻게 최적화 시켰는지 하는 과거력을 기록하여 데이터베이스로 접근하는 가장 빠른 방법을 "학습(learn)" 할수 있도록 하고 있다. 마지막으로 SQL compiler 의 다섯번째 단계는 컴파일된, 그리고 최적화된 SQL 문장을 데이터의 추출 및 갱신작업을 위해 데이터베이스 엔진으로 전달한다.

 

정규화와 SQL compiler 의 기능을 이해하는 것이 여러분들이 데이터베이스로의 접근을 될수 있는 한 빠르게 하는 지름길이다. Database Access middleware 가 느리다고 탓하기 전에, 여러분들의 데이터베이스의 파라메터들을 튜닝하기 전에, 먼저 이러한 점들을 살펴보도록 하라.

 

Appendix - Sources for ODBC and JDBC Drivers

 

ODBC

IBM : http://www.ibm.com/

Oracle : http://www.oracle.com/

Sybase : http://www.sybase.com/

Informix : http://www.informix.com/

Microsoft : http://www.microsoft.com/

Information Builders : http://www.ibi.com/

Cross Access : http://www.crossaccess.com/

INTERSOLV : http://www.intersolv.com/

Visigenic : http://www.visigenic.com/

 

JDBC

Agave Software : http://www.agave.com/

Asgard Software : http://www.asgardsw.com/

Avenir : http://www.avenir.net/

Borland : http://www.borland.com/

Bulletproof JAGG : http://www.bulletproof.com/

Connect Software : http://www.connectsw.com/

DataRamp : http://www.dataramp.com/

dbANYWHERE : http://www.symantec.com/

IBM : http://www.software.ibm.com/data/db2/jdbc/db2java.html

IDS Software : http://www.idssoftware.com/

INTERSOLV : http://www.intersolv.com/

JavaSoft : http://splash.javasoft.com/jdbc/jdbc.drivers.html

JetConnect : http://www.xdb.com/

Microsoft : http://www.microsoft.com/

NCSA Decibel : http://twinge.ncsa.uiuc.edu/decibel

OpenLink Software : http://www.openlinksw.com/

Oracle Web Server : http://www.oracle.com/

Reese's mSQL : http://www.imaginary.com/Java

Sybase : http://www.sybase.com/

WebLogic : http://www.weblogic.com/

 

여러분들은 최신의 JDBC driver 를 얻고자 한다면 http://www.javasoft.com/marketing/collateral/jdbc_ds.html 를 방문하면 된다.

[Top]
No.
제목
작성자
작성일
조회
136DB 테이블 디자인에 도전하기 (1)
정재익
2001-12-07
11249
132연관 규칙과 의사결정트리를 이용한 패턴 탐사
정재익
2001-12-06
5647
108SQL 함수의 모든 것 - aggregate function
정재익
2001-12-03
11389
107ODBC 와 JDBC 를 이용한 데이터로의 접근 (IV)
정재익
2001-12-02
4799
104ODBC 와 JDBC 를 이용한 데이터로의 접근 (III)
정재익
2001-12-01
6593
98ODBC 와 JDBC 를 이용한 데이터로의 접근 (II)
정재익
2001-11-28
7432
86Modeling, Metadata, and XML (영문)
정재익
2001-11-19
4008
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.049초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다