DB2 프로그램 작성 기법(6)

보고 있 는 db2 강 좌 는 DB2 프로그램 작성 기법(6)입 니 다.2.2 SQL 문 구 는 가능 한 한 복잡 한 SQL 을 쓴다.   가능 한 한 큰 복잡 한 SQL 문장 을 사용 하고 많 고 간단 한 문장 을 큰 SQL 문장 으로 조합 하면 성능 이 개 선 될 것 이다.   DB2 의 SQL Engieer 는 복잡 한 문장의 최적화 능력 이 비교적 강하 기 때문에 기본적으로 문장의 성능 문 제 를 조심 하지 않 아 도 된다.Oracle 반대로 복잡 한 문 구 를 단순화 하 는 것 을 추천 합 니 다.SQL Engieer 의 최적화 능력 은 특별히 좋 지 않다.이것 은 모든 SQL 문장 에 reset 가 있 기 때문이다. SQLCODE 와 SQLSTATE 등 각종 조작 은 데이터베이스 성능 에 소모 된다.하나의 전체적인 사상 은 SQL 문장의 개 수 를 최대한 줄 이 는 것 이다.2.3 SQL  SP 및 C SP 의 선택 우선,C 의 sp 성능 은 sql 보다 의 sp 높다일반적으로 SQL 문 구 는 복잡 하지만 논리 가 간단 합 니 다.sql sp ...과 c sp 성능 차이 가 적 을 수 있 으 므 로 작업량 을 고려 해 SQL 로 쓰 는 것 이 좋 습 니 다.논리 가 복잡 하면 SQL 이 간단 하고 c 로 쓰 는 것 이 좋다.2.4 조회 최적화(HASH 및 RRTO_RS) db2set  DB2_HASH_JOIN=Y(HASH 정렬 최적화)   정렬 을 지정 할 때 HASH 정렬 을 사용 합 니 다.db2 는 표 join 에 있 을 때 각 표 에 hash 정렬 을 한 다음 join 을 하면 성능 을 크게 향상 시 킬 수 있 습 니 다.   극 심 강 은 실험 을 한다 고 말 했다.7 개의 천만 개의 기록 표를 join 으로 10000 개의 기록 을 얻 고 색인 이 없 는 상황 에서  72 초.db2set  DB2_RR_TO_RS=Y         이 설정 후 RR 격 리 단 계 를 정의 할 수 없습니다.RR 을 정의 하면 db2 도 자동 으로 RS 로 떨 어 집 니 다.이렇게 db2 는 관리 하지 않 아 도 됩 니 다 Next key,물건 을 적 게 관리 하면 성능 을 향상 시 킬 수 있 습 니 다.      2.5 count 사용 을 피하 기(*) 그리고 exists 방법 1.먼저 count(*)작업 을 피해 야 합 니 다.count(*)는 기본적으로 시 계 를 모두 스 캔 해 야 하기 때문에 많이 사용 하면 느 릴 수 있 습 니 다.2.exists 는 count(*)보다 빠 르 지만 전체적으로 시 계 를 스 캔 합 니 다.첫 번 째 일치 하 는 기록 에 부 딪 히 기만 하면 멈 춥 니 다.하면,만약,만약...       select into 서 비 스 는 이 두 단 계 를 생략 할 수 있 습 니 다.직접 사용 select into 기 록 된 필드 를 선택 하 십시오.기록 이 없 으 면 db2 회장  sqlcode=100 화해시키다 sqlstate=20000'여러 개의 기록 이 있다 면 db2 에 오류 가 발생 할 수 있 습 니 다.프로그램 생 성 가능  continue handler for  exception                continue handler for  not found 에서 검 측 합 니 다.이것 은 가장 빠 른 방법 이다.3.만약 에 하나 인지 아 닌 지 를 판단 할 때 커서 로 계산 하고 하나의 카운터 로 누적 하여 예 정 된 값 에 도달 한 후에 떠 날 수 있 습 니 다.이 속도 도 count(*)보다 빨리 해 야 합 니 다.예 정 된 값 만 스 캔 하면 스 캔 을 하지 않 기 때 문 입 니 다.전체 표 의 scan 을 하지 않 아 도 되 지만 쓰기 가 귀 찮 습 니 다.3 DB2 표 및 sp 관리 3.1 저장 프로 세 스 텍스트 select 보기 text from syscat.procedures where procname='PROC1'; 3.2 표 구조 describe table syscat.procedures describe select * from syscat.procedures 3.3 각 표 가 sp 에 미 치 는 영향(어떤 sp 에 의 해 사용 되 는 지)select PROCNAME from SYSCAT.PROCEDURES where SPECIFICNAME in(select dname from sysibm.sysdependencies where bname in ( select PKGNAME  from syscat.packagedep where bname='TB_BRANCH')) <

좋은 웹페이지 즐겨찾기