DB 성능고도화핵심원리 비투엔컨설팅 수석컨설턴트 조시형

Size: px
Start display at page:

Download "DB 성능고도화핵심원리 비투엔컨설팅 수석컨설턴트 조시형"

Transcription

1 DB 성능고도화핵심원리 비투엔컨설팅 수석컨설턴트 조시형

2 원리를알아야답이보인다!!

3 SQL 개발자 (Developer) 데이터모델을통해업무를이해하고, SQL 을정확히구사하는능력 DB 성능고도화전문가양성 SQL 전문가 (Professional) 성능을고려한고급 SQL 작성능력

4 DB 성능고도화핵심원리실습문제 declare l_ 수납금액 number; begin for c in (select 고객ID, sum( 입금액 ) 입금액 from 은행입금내역 where to_char( 입금일시, 'yyyymmdd') = ' ' group by 고객ID) loop begin select 수납금액 into l_ 수납금액 from 수납 where 고객ID = c. 고객ID and 수납일자 = ; execute immediate ' update 수납 set 수납금액 = ' c. 입금액 ' where 고객ID = ' c. 고객ID ' and 수납일자 = '; exception when no_data_found then execute immediate 'insert into 수납 ( 고객 ID, 수납일자, 수납금액 ) values(' c. 고객 ID ', , ' c. 입금액 ')'; end; 은행입금내역 # 입금일시 : DATE # 고객 ID : NUMBER # 은행코드 : VARCHAR2(2) * 입금액 : NUMBER 집계 수납 # 수납일자 : VARCHAR2(8) # 고객 ID : NUMBER * 수납금액 : NUMBER commit; end loop; end;

5 declare l_ 수납금액 number; begin for c in (select 고객ID, sum( 입금액 ) 입금액 from 은행입금내역 where to_char( 입금일시, 'yyyymmdd') = ' ' group by 고객ID) loop begin select 수납금액 into l_ 수납금액 from 수납 where 고객ID = c. 고객ID and 수납일자 = ; execute immediate ' update 수납 set 수납금액 = ' c. 입금액 ' where 고객ID = ' c. 고객ID ' and 수납일자 = '; 보관주기 : 일주일 exception when no_data_found then execute immediate 'insert into 수납 ( 고객 ID, 수납일자, 수납금액 ) values(' c. 고객 ID ', , ' c. 입금액 ')'; end; 은행입금내역 # 입금일시 : DATE # 고객 ID : NUMBER # 은행코드 : VARCHAR2(2) * 입금액 : NUMBER 집계 수납 # 수납일자 : VARCHAR2(8) # 고객 ID : NUMBER * 수납금액 : NUMBER commit; end loop; end;

6 declare l_ 수납금액 number; begin for c in (select 고객ID, sum( 입금액 ) 입금액 from 은행입금내역 where to_char( 입금일시, 'yyyymmdd') = ' ' group by 고객ID) loop begin select 수납금액 into l_ 수납금액 from 수납 where 고객ID = c. 고객ID and 수납일자 = ; execute immediate ' update 수납 set 수납금액 = ' c. 입금액 ' where 고객ID = ' c. 고객ID ' and 수납일자 = '; 보관주기 : 일주일 보관주기 : 10 년 exception when no_data_found then execute immediate 'insert into 수납 ( 고객 ID, 수납일자, 수납금액 ) values(' c. 고객 ID ', , ' c. 입금액 ')'; end; 은행입금내역 # 입금일시 : DATE # 고객 ID : NUMBER # 은행코드 : VARCHAR2(2) * 입금액 : NUMBER 집계 수납 # 수납일자 : VARCHAR2(8) # 고객 ID : NUMBER * 수납금액 : NUMBER commit; end loop; end;

7 declare l_ 수납금액 number; begin for c in (select 고객ID, sum( 입금액 ) 입금액 from 은행입금내역 where to_char( 입금일시, 'yyyymmdd') = ' ' group by 고객ID) loop begin select 수납금액 into l_ 수납금액 from 수납 where 고객ID = c. 고객ID and 수납일자 = ; execute immediate ' update 수납 set 수납금액 = ' c. 입금액 ' where 고객ID = ' c. 고객ID ' and 수납일자 = '; 보관주기 : 일주일 보관주기 : 10 년 exception when no_data_found then execute immediate 'insert into 수납 ( 고객 ID, 수납일자, 수납금액 ) values(' c. 고객 ID ', , ' c. 입금액 ')'; end; PK : 입금일시 + 고객 ID+ 은행코드 은행입금내역 # 입금일시 : DATE # 고객 ID : NUMBER # 은행코드 : VARCHAR2(2) * 입금액 : NUMBER 집계 수납 # 수납일자 : VARCHAR2(8) # 고객 ID : NUMBER * 수납금액 : NUMBER PK : 수납일자 + 고객 ID commit; end loop; end;

8 declare l_ 수납금액 number; begin for c in (select 고객ID, sum( 입금액 ) 입금액 from 은행입금내역 where to_char( 입금일시, 'yyyymmdd') = ' ' group by 고객ID) loop begin select 수납금액 into l_ 수납금액 from 수납 where 고객ID = c. 고객ID and 수납일자 = ; execute immediate ' update 수납 set 수납금액 = ' c. 입금액 ' where 고객ID = ' c. 고객ID ' and 수납일자 = '; 보관주기 : 일주일 보관주기 : 10 년 exception when no_data_found then execute immediate 'insert into 수납 ( 고객 ID, 수납일자, 수납금액 ) values(' c. 고객 ID ', , ' c. 입금액 ')'; end; PK : 입금일시 + 고객 ID+ 은행코드 은행입금내역 # 입금일시 : DATE # 고객 ID : NUMBER # 은행코드 : VARCHAR2(2) * 입금액 : NUMBER 집계 수납 # 수납일자 : VARCHAR2(8) # 고객 ID : NUMBER * 수납금액 : NUMBER PK : 수납일자 + 고객 ID commit; end loop; end;

9 declare l_ 수납금액 number; begin for c in (select 고객ID, sum( 입금액 ) 입금액 from 은행입금내역 where to_char( 입금일시, 'yyyymmdd') = ' ' group by 고객ID) loop begin select 수납금액 into l_ 수납금액 from 수납 where 고객ID = c. 고객ID and 수납일자 = ; 20 만건 execute immediate ' update 수납 set 수납금액 = ' c. 입금액 ' where 고객ID = ' c. 고객ID ' and 수납일자 = '; 10 만건 보관주기 : 일주일 보관주기 : 10 년 exception when no_data_found then execute immediate 'insert into 수납 ( 고객 ID, 수납일자, 수납금액 ) values(' c. 고객 ID ', , ' c. 입금액 ')'; end; PK : 입금일시 + 고객 ID+ 은행코드 은행입금내역 # 입금일시 : DATE # 고객 ID : NUMBER # 은행코드 : VARCHAR2(2) * 입금액 : NUMBER 집계 수납 # 수납일자 : VARCHAR2(8) # 고객 ID : NUMBER * 수납금액 : NUMBER PK : 수납일자 + 고객 ID commit; end loop; end;

10 declare l_ 수납금액 number; begin for c in (select 고객ID, sum( 입금액 ) 입금액 from 은행입금내역 where to_char( 입금일시, 'yyyymmdd') = ' ' group by 고객ID) loop begin select 수납금액 into l_ 수납금액 from 수납 where 고객ID = c. 고객ID and 수납일자 = ; execute immediate ' update 수납 set 수납금액 = ' c. 입금액 ' where 고객ID = ' c. 고객ID ' and 수납일자 = '; exception when no_data_found then execute immediate 'insert into 수납 ( 고객 ID, 수납일자, 수납금액 ) values(' c. 고객 ID ', , ' c. 입금액 ')'; end; commit; end loop; end; 20 만건 10 만건 보관주기 : 일주일 보관주기 : 10 년 PK : 입금일시 + 고객 ID+ 은행코드 은행입금내역 # 입금일시 : DATE # 고객 ID : NUMBER # 은행코드 : VARCHAR2(2) * 입금액 : NUMBER 집계 수납 # 수납일자 : VARCHAR2(8) # 고객 ID : NUMBER * 수납금액 : NUMBER PK : 수납일자 + 고객 ID 20 분소요 è 성능개선방안은?

11 DBMS 내부처리과정? select ename, job, sal from emp e, dept d where d.deptno = e.deptno and loc = NEW YORK 블랙박스

12 DBMS 내부처리과정? select ename, job, sal from emp e, dept d where d.deptno = e.deptno and loc = NEW YORK 블랙박스

13 내부아키텍처와 SQL 수행원리를 알아야하는이유?

14 1) 알아야효과적으로일을지시할수있기때문

15 SQL 1 select lpad( 상품번호, 30) lpad( 상품명, 30) lpad( 고객ID, 10) lpad( 고객명, 20) to_char( 주문일시, 'yyyymmdd hh24:mi:ss') from 상품주문 where 주문일시 between :start and :end order by 상품번호 SQL 2 select lpad( 상품번호, 30) lpad( 상품명, 30) lpad( 고객ID, 10) lpad( 상품명, 20) to_char( 주문일시, 'yyyymmdd hh24:mi:ss') from ( select 상품번호, 상품명, 고객ID, 고객명, 주문일시 from 상품주문 where 주문일시 between :start and :end order by 상품번호 )

16 SQL 3 select min(a. 고객명 ), min(a. 연락처 ), min(a. 주소 ), sum( 주문금액 ) from 고객 a, 주문 b where b. 주문일자 = ' ' and a. 연령 between 21 and 30 and a. 고객ID = b. 고객ID group by a. 고객ID SQL 4 select a. 고객명, a. 연락처, a. 주소, b. 주문금액 from 고객 a,(select 고객ID, sum( 주문금액 ) 주문금액 from 주문 where 주문일자 = ' ' group by 고객ID) b where a. 고객ID = b. 고객ID and a. 연령 between 21 and 30

17 SQL 5 select * from 고객 where 고객 ID = : 고객 ID; select * from 고객 where 고객 ID = C18973 ; SQL 6 select * from 고객불만 where 처리상태 = : 처리상태 ; select * from 고객불만 where 처리상태 = 미처리 ;

18 1) 알아야효과적으로일을지시할수있기때문

19 2) 알아야문제를해결할수있기때문

20 3) 알아야전문가로성장할수있기때문

21 아키텍처와 SQL 수행원리 대주제프로세스메모리구조파일구조인덱스구조조인수행원리옵티마이저원리 소주제 서버프로세스 : 전용 (Dedicated) 서버, 공유 (Shared) 서버 백그라운드프로세스 : SMON, PMON, DBWn, LGWR, ARCn, CKPT 등 시스템공유메모리 : Buffer Cache, Shared Pool, Log Buffer 등 프로세스전용메모리 : PGA, UGA, CGA 등 데이터파일 : 블록, 익스텐트, 세그먼트, 테이블스페이스와의관계 임시파일 로그파일 : 트랜잭션로그, Online Redo 로그, Archived Redo 로그 인덱스탐색원리 다양한인덱스구조 다양한인덱스스캔방식 NL 조인 Sort Merge 조인 Hash 조인 옵티마이저종류및구성요소 비용계산원리와통계정보의중요성 쿼리변환

22 Oracle 아키텍처

23 SQL Server 아키텍처

24 부하지점 è 캐싱대상 시스템공유메모리의 3 대캐시영역 DB Buffer Cache : 데이터블록, 인덱스블록 Library Cache : SQL 과실행계획, 저장형함수 / 프로시저등 (=Procedure Cache) Log Buffer : Redo Log, Transaction Log 캐시를두는이유 : 해당영역의데이터를읽고쓸때부하가되기때문

25 DB 튜닝 핵심 원리 I/O를 최소화하고, 버퍼 캐시에 적재 된 데이터 블록을 오랫동안 재사용 하는 방안은? 무거운 파싱과정 을 거쳐 캐시에 적재된 SQL 실행 계획의 재사용성 을 높이는 방안은? Server Process Server Process Server Process 1. DB Buffer Cache è I/O 효율화 2. Library Cache è SQL 파싱 부하 해소 3. 작업요청 è 데이터베이스 Call 최소화 데이터베이스 Call 최소화 방안은?

26 DB 튜닝 핵심 원리 I/O를 최소화하고, 버퍼 캐시에 적재 된 데이터 블록을 오랫동안 재사용 하는 방안은? 무거운 파싱과정 을 거쳐 캐시에 적재된 SQL 실행 계획의 재사용성 을 높이는 방안은? Server Process Server Process Server Process 1. DB Buffer Cache è I/O 효율화 2. Library Cache è SQL 파싱 부하 해소 3. 작업요청 è 데이터베이스 Call 최소화 데이터베이스 Call 최소화 방안은?

27 DB 튜닝 핵심 원리 I/O를 최소화하고, 버퍼 캐시에 적재 된 데이터 블록을 오랫동안 재사용 하는 방안은? 무거운 파싱과정 을 거쳐 캐시에 적재된 SQL 실행 계획의 재사용성 을 높이는 방안은? Server Process Server Process Server Process 1. DB Buffer Cache è I/O 효율화 2. Library Cache è SQL 파싱 부하 해소 3. 작업요청 è 데이터베이스 Call 최소화 데이터베이스 Call 최소화 방안은?

28 DB 튜닝 핵심 원리 I/O를 최소화하고, 버퍼 캐시에 적재 된 데이터 블록을 오랫동안 재사용 하는 방안은? 무거운 파싱과정 을 거쳐 캐시에 적재된 SQL 실행 계획의 재사용성 을 높이는 방안은? Server Process Server Process Server Process 1. DB Buffer Cache è I/O 효율화 2. Library Cache è SQL 파싱 부하 해소 3. 작업요청 è 데이터베이스 Call 최소화 데이터베이스 Call 최소화 방안은?

29 DB 튜닝핵심원리 Log I/O 튜닝 Log Writer Online Redo Log Online Redo Log Online Redo Log Log Switch Server Process Server Process Server Process 커밋시점조절 비동기식커밋 배치커밋 Nologging 모드 Insert Minimal Logging 모드 Insert

30 DB 튜닝핵심원리 Lock 튜닝 DML Lock, DDL Lock, Library Cache Lock/Pin, Latch, Buffer Lock 등 공격이최상의수비 : Lock 자체튜닝보다는프로세스가작업을빨리마치도록하는것이최상의 Lock 튜닝

31 DB 튜닝핵심원리 DB Buffer Cache è I/O 효율화 I/O 를최소화하고, 버퍼캐시에적재된데이터블록을오랫동안재사용하는방안은? 2. Library Cache è SQL 파싱부하해소 3. 작업요청 è 데이터베이스 Call 최소화 Server Process Server Process Server Process

32 블록 (= 페이지 ) 단위 I/O 데이터저장구조 Tablespace Segment Extent Block Block Row

33 논리적인블록 I/O 물리적인블록 I/O Server Process 블록읽기요청 메모리 I/O 전기적신호 Buffer Cache 버퍼캐시 Miss 디스크 I/O 액세스 Arm DB File 버퍼캐시히트율 (BCHR) = 논리 I/O 물리 I/O 논리 I/O 100 필요한데이터블록을버퍼캐시에서찾은비율 논리적인블록 I/O 를줄여야물리적인블록 I/O 도감소

34 Table Access By Index Scan Full Table Scan 인덱스테이블테이블 인덱스효용성 스캔을통한테이블액세스 : 한레코드를읽기위해하나의블록 I/O(à Random I/O) 손익분기점이하소량데이터검색시에만효과적 소요시간 ( 초 ) 손익분기점 Table Access By Index Scan Full Table Scan 추출건수

35 I/O 효율화튜닝의첫번째원칙 : 인덱스를타야할때인덱스를타고, Full Table Scan 해야할때 Full Table Scan 하게하자.

36 declare l_ 수납금액 number; begin for c in (select 고객ID, sum( 입금액 ) 입금액 from 은행입금내역 where to_char( 입금일시, 'yyyymmdd') = ' ' group by 고객ID) loop 명시적 (Explicit) 형변환 begin select 수납금액 into l_ 수납금액 from 수납 where 고객ID = c. 고객ID and 수납일자 = ; 보관주기 : 일주일 은행입금내역 # 입금일시 : DATE # 고객 ID : NUMBER # 은행코드 : VARCHAR2(2) * 입금액 : NUMBER 집계 execute immediate ' update 수납 set 수납금액 = ' c. 입금액 ' where 고객ID = ' c. 고객ID ' and 수납일자 = '; exception when no_data_found then execute immediate end; commit; end loop; end; 보관주기 : 10 년 'insert into 수납 ( 고객ID, 수납일자, 수납금액 ) values(' 묵시적 (Implicit) 형변환 : c. 고객ID ', , ' c. 입금액 to_number( ')'; 수납일자 ) = to_number( 수납일자 ) = 수납 # 수납일자 : VARCHAR2(8) # 고객 ID : NUMBER * 수납금액 : NUMBER

37 인덱스컬럼변형에주의!! select 수납금액 from 수납 where 고객ID = :cust_num and 수납일자 = ; 은행입금내역 수납 (O) Id Operation Name Rows Bytes Cost (%CPU) Time SELECT STATEMENT (5) Full Table 00:00:01 Scan * 1 TABLE ACCESS FULL 수납 (5) 00:00: 한건을읽기위해매번 Predicate Information (identified by operation id): PLAN_TABLE_OUTPUT filter(" 고객 ID"=TO_NUMBER(:CUST_NUM) AND TO_NUMBER(" 수납일자 ")= )

38 인덱스컬럼변형에주의!! select 수납금액 from 수납 where 고객ID = :cust_num and 수납일자 = ; 은행입금내역 수납 (O) Id Operation Name Rows Bytes Cost (%CPU) Time SELECT STATEMENT (0) 00:00:01 1 TABLE ACCESS BY INDEX ROWID 수납 (0) 00:00:01 * 2 INDEX UNIQUE SCAN 수납 _PK 1 1 (0) 00:00: 인덱스스캔을통해한번씩만 Table Random Access Predicate Information (identified by operation id): PLAN_TABLE_OUTPUT access(" 수납일자 "=' ' AND " 고객 ID"=TO_NUMBER(:CUST_NUM))

39 declare l_ 수납금액 number; begin for c in (select 고객ID, sum( 입금액 ) 입금액 from 은행입금내역 where to_char( 입금일시, 'yyyymmdd') = ' ' group by 고객ID) loop begin select 수납금액 into l_ 수납금액 from 수납 where 고객ID = c. 고객ID and 수납일자 = ' '; execute immediate ' update 수납 set 수납금액 = ' c. 입금액 ' where 고객ID = ' c. 고객ID ' and 수납일자 = '' '''; exception when no_data_found then execute immediate 'insert into 수납 ( 고객 ID, 수납일자, 수납금액 ) values(' c. 고객 ID ', '' '', ' c. 입금액 ')'; end; commit; end loop; end; 데이터타입일치화

40 DB 튜닝핵심원리 DB Buffer Cache è I/O 효율화 2. Library Cache è SQL 파싱부하해소 무거운파싱과정을거쳐캐시에적재된 SQL 실행계획의재사용성을높이는방안은? 3. 작업요청 è 데이터베이스 Call 최소화 Server Process Server Process Server Process

41 옵티마이저란? 옵티마이저 : SQL 이라는구조화된질의언어로사용자의작업요청을받아처리루틴 (Execution Plan) 을생성 옵티마이저에의한처리루틴을 Library Cache 에캐싱 저장형함수 / 프로시저처럼 Dictionary 에영구저장되지않으며, 캐시에서밀려나면처리루틴을다시생성 처리루틴의목표는비용최소화 - 비용? I/O 일량!! - 최근옵티마이저는 CPU 비용까지고려하지만여전히 I/O 비용이 90% 을이상

42 하드파싱 vs. 소프트파싱 User Parse Call SQL 과실행계획이캐시에존재? No Hard Parsing Yes Soft Parsing Execute Optimization 말그대로 무거운 처리과정 Row-Source Generation 하드파싱을줄이고, SQL 커서를공유할수있는형태로애플리케이션작성

43 커서공유 커서 (Cursor) 공유커서 세션커서 애플리케이션커서

44 커서공유 커서 (Cursor) 공유커서 세션커서 애플리케이션커서

45 커서공유 커서 (Cursor) 공유커서 세션커서 애플리케이션커서

46 커서공유 커서 (Cursor) 공유커서 세션커서 애플리케이션커서

47 커서공유 커서 (Cursor) 공유커서 세션커서 애플리케이션커서 공유커서란, SQL 과실행계획, 그밖에실행에필요한각종정보를담기위해라이브러리캐시에할당된메모리공간

48 커서공유 Library Cache 커서 1 select * from customer 커서 2 select * from Customer 커서식별자 à SQL 문장그자체 Server Process1 select * from customer Server Process2 select * from customer Server Process3 select * from Customer

49 커서공유 공유할수없는 SQL 1 SELECT * FROM CUSTOMER; SELECT * FROM CUSTOMER; SELECT * FROM CUSTOMER; SELECT * FROM Customer; SELECT * FROM CUSTOMER; SELECT * FROM HR.CUSTOMER; SELECT * FROM CUSTOMER; SELECT /*+ all_rows */ * FROM CUSTOMER; SELECT * FROM CUSTOMER; SELECT /* 주석문 */ * FROM CUSTOMER; SELECT * FROM CUSTOMER WHERE LOGIN_ID = 'oraking'; SELECT * FROM CUSTOMER WHERE LOGIN_ID = 'javaking'; SELECT * FROM CUSTOMER WHERE LOGIN_ID = 'tommy'; SELECT * FROM CUSTOMER WHERE LOGIN_ID = 'karajan';

50 Parameterization SELECT * FROM CUSTOMER WHERE LOGIN_ID = 'oraking'; SELECT * FROM CUSTOMER WHERE LOGIN_ID = 'javaking'; SELECT * FROM CUSTOMER WHERE LOGIN_ID = 'tommy'; SELECT * FROM CUSTOMER WHERE LOGIN_ID = 'karajan ; procedure LOGIN_ORAKING( ) { } procedure LOGIN_JAVAKING( ) { } procedure LOGIN_TOMMY( ) { } procedure LOGIN_KARAJAN( ) { } SELECT * FROM CUSTOMER WHERE LOGIN_ID = :LOGIN_ID; procedure LOGIN(login_id in varchar2) { }

51 declare l_ 수납금액 number; begin for c in (select 고객ID, sum( 입금액 ) 입금액 from 은행입금내역 where to_char( 입금일시, 'yyyymmdd') = ' ' group by 고객ID) loop begin select 수납금액 into l_ 수납금액 from 수납 where 고객ID = c. 고객ID and 수납일자 = ' '; create procedure 1 번고객 _ 수납액을 _1000 으로 _ 갱신 ( ) { } ; create procedure 2 번고객 _ 수납액을 _4000 으로 _ 갱신 ( ) { } ; create procedure 3 번고객 _ 수납액을 _7000 으로 _ 갱신 ( ) { } ; create procedure 4 번고객 _ 수납액을 _2000 으로 _ 갱신 ( ) { } ; create procedure 5 번고객 _ 수납액을 _1000 으로 _ 갱신 ( ) { } ;.. execute immediate ' update 수납 set 수납금액 = ' c. 입금액 ' where 고객ID = ' c. 고객ID ' and 수납일자 = '' '''; to_number( 수납일자 ) = 하드 파싱반복 exception when no_data_found then execute immediate 'insert into 수납 ( 고객 ID, 수납일자, 수납금액 ) values(' c. 고객 ID ', '' '', ' c. 입금액 ')'; end; commit; end loop; end;

52 declare l_ 수납금액 number; begin for c in (select 고객ID, sum( 입금액 ) 입금액 from 은행입금내역 where to_char( 입금일시, 'yyyymmdd') = ' ' group by 고객ID) loop begin select 수납금액 into l_ 수납금액 from 수납 where 고객ID = c. 고객ID and 수납일자 = ' '; execute immediate 'update 수납 set 수납금액 = :amt where 고객 ID = :cust_id and 수납일자 = :dt' using c. 입금액, c. 고객 ID, ' ' ; exception when no_data_found then execute immediate 'insert into 수납 ( 고객 ID, 수납일자, 수납금액 ) values(:cust_id, :dt, :amt)' using c. 고객 ID, ' ', c. 입금액 ; end; commit; end loop; end; create procedure 수납변경 ( 고객 ID, 수납금액 ) { } ; call 수납변경 (1, 1000); call 수납변경 (2, 4000); call 수납변경 (3, 7000); call 수납변경 (4, 2000); call 수납변경 (5, 1000);..

53 SQL> select sql_text, parse_calls, loads, executions, fetches 2 from v$sql 3 where sql_text like '% 수납 %' ; 바인드변수를사용하지않았을때 SQL_TEXT PARSE_CALLS LOADS EXECUTIONS FETCHES update 수납 set 수납금액 where 고객ID = 1 and update 수납 set 수납금액 where 고객ID = 2 and update 수납 set 수납금액 where 고객ID = 3 and update 수납 set 수납금액 where 고객ID = 4 and update 수납 set 수납금액 where 고객ID = 5 and insert into 수납 ( 고객번호,, ) values(1,, ) insert into 수납 ( 고객번호,, ) values(2,, ) insert into 수납 ( 고객번호,, ) values(3,, ) insert into 수납 ( 고객번호,, ) values(4,, ) insert into 수납 ( 고객번호,, ) values(5,, ) 바인드변수를사용했을때 SQL_TEXT PARSE_CALLS LOADS EXECUTIONS FETCHES update 수납 set 수납금액 where 고객ID = :cust_id insert into 수납 (... ) values(:cust_id, :dt, :amt)

54 애플리케이션커서캐싱 캐시에서공유커서를찾는과정생략 à No Parse!! 커서 (Cursor) 공유커서 세션커서 애플리케이션커서

55 애플리케이션커서캐싱 JAVA - Method 1 PreparedStatement stmt = conn.preparestatement("select PWD FROM CUSTOMER WHERE LOGIN_ID =?"); for (int i = 1; i <= count; i++) { stmt.setstring(1, "id" + i); ResultSet rs=stmt.executequery(); // Do Anything rs.close(); } stmt.close();

56 애플리케이션커서캐싱 JAVA - Method 2 // Statement cache size 를 0 보다크게설정 ((OracleConnection)conn).setStatementCacheSize(3); // Implicit caching 을활성화 ((OracleConnection)conn).setImplicitCachingEnabled(true); for (int i = 1; i <= count; i++) { PreparedStatement stmt = conn.preparestatement("select PWD FROM CUSTOMER WHERE LOGIN_ID =?"); stmt.setstring(1, "id" + i); ResultSet rs=stmt.executequery(); // Do Anything } rs.close(); stmt.close();

57 애플리케이션커서캐싱 Pro*C for( ; ; ) { EXEC ORACLE OPTION (HOLD_CURSOR=YES); EXEC ORACLE OPTION (RELEASE_CURSOR=NO); EXEC SQL INSERT ; // SQL 수행 EXEC ORACLE OPTION (RELEASE_CURSOR=YES); }

58 애플리케이션커서캐싱 Oracle PL/SQL - Method 1 loop begin select 수납금액 into l_ 수납금액 from 수납 where 고객ID = c. 고객ID and 수납일자 = ' '; Static SQL update 수납 set 수납금액 = c. 입금액 where 고객 ID = c. 고객 ID and 수납일자 = ' ' ; exception when no_data_found then insert into 수납 ( 고객 ID, 수납일자, 수납금액 ) values(c. 고객 ID, ' ', c. 입금액 ); end; end loop;

59 애플리케이션커서캐싱 Oracle PL/SQL - Method 2 loop begin select 수납금액 into l_ 수납금액 from 수납 where 고객ID = c. 고객ID and 수납일자 = ' '; session_cached_cursors > 0 (10g 이후 ) execute immediate 'update 수납 set 수납금액 = :amt where 고객 ID = :cust_id and 수납일자 = :dt' using c. 입금액, c. 고객 ID, ' ' ; exception when no_data_found then execute immediate 'insert into 수납 ( 고객 ID, 수납일자, 수납금액 ) values(:cust_id, :dt, :amt)' using c. 고객 ID, ' ', c. 입금액 ; end; end loop;

60 애플리케이션커서캐싱 바인드변수를사용했을때 (+ 애플리케이션에서커서를캐싱하지않을때 ) SQL_TEXT PARSE_CALLS LOADS EXECUTIONS FETCHES update 수납 set 수납금액 where 고객ID = :cust_id insert into 수납 (... ) values(:cust_id, :dt, :amt) 바인드변수를사용했을때 (+ 애플리케이션에서커서를캐싱할때 ) SQL_TEXT PARSE_CALLS LOADS EXECUTIONS FETCHES update 수납 set 수납금액 where 고객ID = :cust_id insert into 수납 (... ) values(:cust_id, :dt, :amt)

61 DB 튜닝핵심원리 DB Buffer Cache è I/O 효율화 2. Library Cache è SQL 파싱부하해소 3. 작업요청 è 데이터베이스 Call 최소화 Server Process Server Process Server Process 데이터베이스 Call

62 public class ParseCall{ public static void insertreceipt( Connection con, String param1, long param2, long param3) throws Exception{ } String SQLStmt = "insert into 수납 ( 수납일자, 고객 ID, 수납금액 ) values(?,?,?)"; PreparedStatement st = con.preparestatement(sqlstmt); st.setstring(1, param1); st.setlong(2, param2); st.setlong(3, param3); st.execute(); st.close(); public static void updatereceipt( Connection con, String param1, long param2, long param3) throws Exception{ } String SQLStmt = "update 수납 set 수납금액 =? where 고객 ID =? and 수납일자 =?"; PreparedStatement st = con.preparestatement(sqlstmt); st.setlong(1, param3); st.setlong(2, param2); st.setstring(3, param1); st.execute(); st.close();

63 public static void execute(connection con, String input_date) throws Exception { String SQLStmt1 = "select 고객 ID, sum( 입금액 ) 입금액 " + "from 은행입금내역 " + "where to_char( 입금일시, 'yyyymmdd') = '" + input_date + "' " + "group by 고객 ID"; } String SQLStmt2 = "select 수납금액 " + "from 수납 " + "where 고객 ID =? " + "and 수납일자 = '" + input_date + "'"; PreparedStatement stmt1 = con.preparestatement(sqlstmt1); ResultSet rs1 = stmt1.executequery(); while(rs1.next()){ long 고객 ID = rs1.getlong(1); long 입금액 = rs1.getlong(2); PreparedStatement stmt2 = con.preparestatement(sqlstmt2); stmt2.setlong(1, 고객 ID); ResultSet rs2 = stmt2.executequery(); if(rs2.next()) updatereceipt(con, input_date, 고객 ID, 입금액 ); else insertreceipt(con, input_date, 고객 ID, 입금액 ); rs2.close(); stmt2.close(); } rs1.close(); stmt1.close();

64 User Call vs. Recursive Call Recursive Call 사용자정의함수 / 프로시저, 트리거내에서수행되는 SQL SQL 파싱과최적화과정에서 Dictionary 를조회하기위해내부적으로수행되는 SQL User Call 네트워크를경유해 DBMS 외부로부터인입되는 Call 성능부하 User Call > Recursive Call

65 데이터베이스 Call Parse Call : SQL 처리루틴생성요청 ( 캐싱돼있으면그것을사용 ) select 수납금액 from 수납 where 고객 ID = :1 and 수납일자 = ' call count cpu elapsed disk query current rows Parse Execute Call : Execute Fetch SQL 3.08 실행요청 total Misses in library cache during parse: 1 Fetch Call : 데이터전송요청

66 데이터베이스 Call update 수납 set 수납금액 = :1 where 고객 ID = :2 and 수납일자 = :3 call count cpu elapsed disk query current rows Parse Execute Fetch total Misses in library cache during parse: 1 insert into 수납 ( 수납일자, 고객 ID, 수납금액 ) values (:1, :2, :3) call count cpu elapsed disk query current rows Parse Execute Fetch total Misses in library cache during parse: 1

67 update 수납 r set 수납금액 = (select sum( 입금액 ) from 은행입금내역 where 고객ID = r. 고객ID and 입금일시 between to_date(' ', 'yyyymmdd') and to_date(' ', 'yyyymmdd') - 1/24/60/60) where 수납일자 = ' and exists (select 'x' from 은행입금내역 where 고객ID = r. 고객ID and 입금일시 between to_date(' ', 'yyyymmdd') and to_date(' ', 'yyyymmdd') - 1/24/60/60); insert into 수납 ( 고객ID, 수납일자, 수납금액 ) select 고객ID, ' ', sum( 입금액 ) from 은행입금내역 r where 입금일시 between to_date(' ', 'yyyymmdd') and to_date(' ', 'yyyymmdd') - 1/24/60/60 and not exists ( select 'x' from 수납 where 고객ID = r. 고객ID and 수납일자 = ' ') group by 고객ID; One-SQL 위주의처리

68 SELECT update 수납금액 r set FROM 수납금액 WHERE 고객ID = :B1 AND 수납일자 = ' call count cpu elapsed disk query current rows Parse Execute Fetch total insert into 수납 ( 고객 ID, 수납일자, 수납금액 ) call count cpu elapsed disk query current rows Parse Execute Fetch total

69 merge into 수납 r using (select 고객 ID, sum( 입금액 ) 입금액 from 은행입금내역 where 입금일시 between to_date(' ', 'yyyymmdd') and to_date(' ', 'yyyymmdd') - 1/24/60/60 group by 고객ID) i on (r. 고객ID = i. 고객ID and r. 수납일자 = ' ') when matched then update set r. 수납금액 = i. 입금액 One-SQL 로처리 (Merge 문활용 ) when not matched then insert ( 고객 ID, 수납일자, 수납금액 ) values (i. 고객 ID, ' ', i. 입금액 );

70 SELECT merge into 수납금액 FROM r 수납 WHERE 고객ID = :B1 AND 수납일자 = ' call count cpu elapsed disk query current rows Parse Execute Fetch total

71 한방 SQL 방 ( 放 ) à 데이터베이스 Call

72 declare type array_cust_id type array_amt type array_rid is table of 수납. 고객ID%type; is table of 수납. 수납금액 %type; is table of rowid; t_custid t_amt t_rid array_cust_id; array_amt; array_rid; l_fetch_size number default 1000; -- 1,000 건씩 Array 처리 cursor c is select i. 고객ID, i. 입금액, rowidtochar(r.rowid) as rid from (select 고객ID, sum( 입금액 ) 입금액 from 은행입금내역 where 입금일시 between to_date(' ', 'yyyymmdd') and to_date(' ', 'yyyymmdd') - 1/24/60/60 group by 고객ID) i, 수납 r where r. 고객ID(+) = i. 고객ID and r. 수납일자 (+) = ' '; begin open c; loop fetch c bulk collect into t_custid, t_amt, t_rid limit l_fetch_size; forall i in 1..t_custid.count update 수납 set 수납금액 = t_amt(i) where rowid = chartorowid( t_rid(i) ); Array Processing 활용 forall i in 1..t_custid.count insert into 수납 ( 고객ID, 수납일자, 수납금액 ) select t_custid(i), ' ', t_amt(i) from dual where t_rid(i) is null; exit when c%notfound; end loop; close c; commit; end;

73 public static void insertdata(preparedstatement st, String param1,long param2,long param3 ) throws Exception { st.setstring(1, param1); st.setstring(2, param2); st.setstring(3, param3); st.addbatch(); } public void runbatch() throws Exception { PreparedStatement st = con.preparestatement( "insert into 수납 values(?,?,?)"); } while(rs.next()){ insertdata (st, 수납일자, 고객 ID, 수납금액 ); if(++rows%1000 == 0) st.executebatch(); }

74 select i. 고객 ID, i. 입금액, rowidtochar(r.rowid) as rid from call count cpu elapsed disk query current rows Parse Execute Fetch total update 수납 set 수납금액 = :b1 where rowid = chartorowid( :b2 ) call count cpu elapsed disk query current rows Parse Execute Fetch total insert into 수납 select :b2, ' ', :b1 from dual where :b3 is null call count cpu elapsed disk query current rows Parse Execute Fetch total

75 데이터베이스 Call 최소화튜닝 애플리케이션커서캐싱 à Parse Call 최소화 사용자정의함수 / 프로시저활용 à Parse Call 최소화 (Recursive Call 이므로 Call 부하자체도경감 ) Array Processing à Execute Call 최소화 부분범위처리원리활용 à Fetch Call 최소화 화면페이지처리 à Fetch Call 최소화 Array 단위 Fetch à Fetch Call 최소화 집합적사고를통해 One-SQL 로구현 à Parse Call, Execute Call, Fetch Call 최소화

76 DB 튜닝핵심원리 1. DB Buffer Cache è I/O 효율화 2. Library Cache è SQL 파싱부하해소 3. 작업요청 è 데이터베이스 Call 최소화

77 3 과목목차소개 1장. 아키텍처기반튜닝원리 1 절. 데이터베이스아키텍처 2 절. SQL 파싱부하 3 절. 데이터베이스 Call 과네트워크부하 4 절. 데이터베이스 I/O 원리 4장. 인덱스와조인 1 절. 인덱스기본원리 2 절. 인덱스튜닝 3 절. 조인기본원리 4 절. 고급조인기법 2장. Lock과트랜잭션동시성제어 1 절. Lock 2 절. 트랜잭션 3 절. 동시성제어 3장. 옵티마이저원리 1 절. 옵티마이저 2 절. 쿼리변환 5장. 고급 SQL 튜닝 1 절. 고급 SQL 활용 2 절. 소트튜닝 3 절. DML 튜닝 4 절. 파티션활용 5 절. 배치프로그램튜닝

78 예상문제 ü DB 성능을높이는방안중옳지않은것은? 1 모든 SQL 에바인드변수를사용해야한다. 2 OLTP 환경의모든 SQL 은반드시인덱스를 통해실행되도록튜닝해야한다. 3 사용자정의함수를절대사용해선안된다. 4 대용량데이터를처리할때는일반적으로 NL 조인보다해시조인이효과적이다.

79 예상문제 ü DB 성능을높이는방안중옳지않은것은? 1 모든 SQL 에바인드변수를사용해야한다. 2 OLTP 환경의모든 SQL 은반드시인덱스를 통해실행되도록튜닝해야한다. 3 사용자정의함수를절대사용해선안된다. 4 대용량데이터를처리할때는일반적으로 NL 조인보다해시조인이효과적이다.

80 ü 아래프로그램의문제점과성능개선방안을기술하시오. declare l_ 수납금액 number; begin for c in (select 고객ID, sum( 입금액 ) 입금액 loop begin from 은행입금내역 where to_char( 입금일시, 'yyyymmdd') = ' ' group by 고객ID) select 수납금액 into l_ 수납금액 from 수납 where 고객ID = c. 고객ID and 수납일자 = ; execute immediate ' update 수납 set 수납금액 = ' c. 입금액 ' where 고객ID = ' c. 고객ID ' and 수납일자 = '; exception when no_data_found then execute immediate end; 20 만건 10 만건 보관주기 : 일주일 보관주기 : 10 년 'insert into 수납 ( 고객 ID, 수납일자, 수납금액 ) values(' c. 고객 ID ', , ' c. 입금액 ')'; PK : 입금일시 + 고객 ID+ 은행코드 은행입금내역 # 입금일시 : DATE # 고객 ID : NUMBER # 은행코드 : VARCHAR2(2) * 입금액 : NUMBER 집계 수납 # 수납일자 : VARCHAR2(8) # 고객 ID : NUMBER * 수납금액 : NUMBER PK : 수납일자 + 고객 ID commit; end loop; end;

81 원리를알면답이보인다!!

歯sql_tuning2

歯sql_tuning2 SQL Tuning (2) SQL SQL SQL Tuning ROW(1) ROW(2) ROW(n) update ROW(2) at time 1 & Uncommitted update ROW(2) at time 2 SQLDBA> @ UTLLOCKT WAITING_SESSION TYPE MODE_REQUESTED MODE_HELD LOCK_ID1

More information

13주-14주proc.PDF

13주-14주proc.PDF 12 : Pro*C/C++ 1 2 Embeded SQL 3 PRO *C 31 C/C++ PRO *C NOT! NOT AND && AND OR OR EQUAL == = SQL,,, Embeded SQL SQL 32 Pro*C C SQL Pro*C C, C Pro*C, C C 321, C char : char[n] : n int, short, long : float

More information

10.ppt

10.ppt : SQL. SQL Plus. JDBC. SQL >> SQL create table : CREATE TABLE ( ( ), ( ),.. ) SQL >> SQL create table : id username dept birth email id username dept birth email CREATE TABLE member ( id NUMBER NOT NULL

More information

목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE

목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE ALTIBASE HDB 6.3.1.10.1 Patch Notes 목차 BUG-45710 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG-45730 ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG-45760 ROLLUP/CUBE 절을포함하는질의는 SUBQUERY REMOVAL 변환을수행하지않도록수정합니다....

More information

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET 135-080 679-4 13 02-3430-1200 1 2 11 2 12 2 2 8 21 Connection 8 22 UniSQLConnection 8 23 8 24 / / 9 3 UniSQL 11 31 OID 11 311 11 312 14 313 16 314 17 32 SET 19 321 20 322 23 323 24 33 GLO 26 331 GLO 26

More information

90

90 89 3 차원공간질의를위한효율적인위상학적데이터모델의검증 Validation of Efficient Topological Data Model for 3D Spatial Queries Seokho Lee Jiyeong Lee 요약 키워드 Abstract Keywords 90 91 92 93 94 95 96 -- 3D Brep adjacency_ordering DECLARE

More information

목 차

목      차 Oracle 9i Admim 1. Oracle RDBMS 1.1 (System Global Area:SGA) 1.1.1 (Shared Pool) 1.1.2 (Database Buffer Cache) 1.1.3 (Redo Log Buffer) 1.1.4 Java Pool Large Pool 1.2 Program Global Area (PGA) 1.3 Oracle

More information

Result Cache 동작원리및활용방안 엑셈컨설팅본부 /DB 컨설팅팀김철환 개요 ORACLE DBMS 를사용하는시스템에서 QUERY 성능은무엇보다중요한요소중하나이며그 성능과직접적인관련이있는것이 I/O 이다. 많은건수를 ACCESS 해야만원하는결과값을얻을수있는 QUER

Result Cache 동작원리및활용방안 엑셈컨설팅본부 /DB 컨설팅팀김철환 개요 ORACLE DBMS 를사용하는시스템에서 QUERY 성능은무엇보다중요한요소중하나이며그 성능과직접적인관련이있는것이 I/O 이다. 많은건수를 ACCESS 해야만원하는결과값을얻을수있는 QUER Result Cache 동작원리및활용방안 엑셈컨설팅본부 /DB 컨설팅팀김철환 개요 ORACLE DBMS 를사용하는시스템에서 QUERY 성능은무엇보다중요한요소중하나이며그 성능과직접적인관련이있는것이 I/O 이다. 많은건수를 ACCESS 해야만원하는결과값을얻을수있는 QUERY 을실행하게된다면 BLOCK I/O 가많이발생하게된다. 이런이유로 QUERY 의성능은좋지못할것이다.

More information

PowerPoint Presentation

PowerPoint Presentation Server I/O utilization System I/O utilization V$FILESTAT V$DATAFILE Data files Statspack Performance tools TABLESPACE FILE_NAME PHYRDS PHYBLKRD READTIM PHYWRTS PHYBLKWRT WRITETIM ------------- -----------------------

More information

Bind Peeking 한계에따른 Adaptive Cursor Sharing 등장 엑셈컨설팅본부 /DB 컨설팅팀김철환 Bind Peeking 의한계 SQL 이최초실행되면 3 단계의과정을거치게되는데 Parsing 단계를거쳐 Execute 하고 Fetch 의과정을통해데이터

Bind Peeking 한계에따른 Adaptive Cursor Sharing 등장 엑셈컨설팅본부 /DB 컨설팅팀김철환 Bind Peeking 의한계 SQL 이최초실행되면 3 단계의과정을거치게되는데 Parsing 단계를거쳐 Execute 하고 Fetch 의과정을통해데이터 Bind Peeking 한계에따른 Adaptive Cursor Sharing 등장 엑셈컨설팅본부 /DB 컨설팅팀김철환 Bind Peeking 의한계 SQL 이최초실행되면 3 단계의과정을거치게되는데 Parsing 단계를거쳐 Execute 하고 Fetch 의과정을통해데이터를사용자에게전송하게되며 Parsing 단계에서실행계획이생성된다. Bind 변수를사용하는 SQL

More information

Jerry Held

Jerry Held ,, - - - : DELETE : ROW (ROWID) row ROWID : I/O Full Table Scan I/O Index Scan ROWID I/O Fast Full Index Scan scan scan scan I/O scan scan Unique, nonunique. (Concatenated Index) B* Tree Bitmap Reverse

More information

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate ALTIBASE HDB 6.1.1.5.6 Patch Notes 목차 BUG-39240 offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG-41443 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate 한뒤, hash partition

More information

,, - - - : DELETE : ROW (ROWID) row ROWID : I/O Full Table Scan scan I/O scan Index Scan ROWID scan I/O Fast Full Index Scan scan scan I/O Unique, nonunique. (Concatenated Index) B* Tree Bitmap Reverse

More information

62

62 2 instance database physical storage 2 1 62 63 tablespace datafiles 2 2 64 1 2 logical view control files datafiles redo log files 65 2 3 9i OMF Oracle Managed Files, OMF 9i 9i / / OMF 9i 66 8 1MB 8 10MB

More information

SQL Tuning Business Development DB

SQL Tuning Business Development DB SQL Tuning Business Development DB Oracle Optimizer 4.1 Optimizer SQL SQL.. SQL Optimizer :.. Rule-Based Optimization (RBO), Cost-Based Optimization (CBO) SQL Optimizer SQL Query Parser Dictionary Rule-Based

More information

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4 ALTIBASE HDB 6.5.1.5.10 Patch Notes 목차 BUG-46183 DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG-46249 [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4 BUG-46266 [sm]

More information

Microsoft PowerPoint - Oracle Data Access Pattern.ppt

Microsoft PowerPoint - Oracle Data Access Pattern.ppt Special Key Note Oracle Data Access Pattern ( 주 ) 오픈메이드컨설팅 오동규수석컨설턴트 1 What is Data Access Pattern? > 데이터를 I/O 하는방식 Index Scan Full Table Scan Rowid 2 Why is The Pattern Important? >SQL 의성능을좌지우지함. >SQL

More information

ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE (Online Upgrade) ORANGE CONFIGURATION ADMIN O

ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE (Online Upgrade) ORANGE CONFIGURATION ADMIN O Orange for ORACLE V4.0 Installation Guide ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE...1 1....2 1.1...2 1.2...2 1.2.1...2 1.2.2 (Online Upgrade)...11 1.3 ORANGE CONFIGURATION ADMIN...12 1.3.1 Orange Configuration

More information

MS-SQL SERVER 대비 기능

MS-SQL SERVER 대비 기능 Business! ORACLE MS - SQL ORACLE MS - SQL Clustering A-Z A-F G-L M-R S-Z T-Z Microsoft EE : Works for benchmarks only CREATE VIEW Customers AS SELECT * FROM Server1.TableOwner.Customers_33 UNION ALL SELECT

More information

쉽게 풀어쓴 C 프로그래밊

쉽게 풀어쓴 C 프로그래밊 Power Java 제 27 장데이터베이스 프로그래밍 이번장에서학습할내용 자바와데이터베이스 데이터베이스의기초 SQL JDBC 를이용한프로그래밍 변경가능한결과집합 자바를통하여데이터베이스를사용하는방법을학습합니다. 자바와데이터베이스 JDBC(Java Database Connectivity) 는자바 API 의하나로서데이터베이스에연결하여서데이터베이스안의데이터에대하여검색하고데이터를변경할수있게한다.

More information

Oracle Database 10g: Self-Managing Database DB TSC

Oracle Database 10g: Self-Managing Database DB TSC Oracle Database 10g: Self-Managing Database DB TSC Agenda Overview System Resource Application & SQL Storage Space Backup & Recovery ½ Cost ? 6% 12 % 6% 6% 55% : IOUG 2001 DBA Survey ? 6% & 12 % 6% 6%

More information

ePapyrus PDF Document

ePapyrus PDF Document Goodus 기술노트 [38 회 ] Author 윤병길, 이은정 Creation Date 2009-02-27 Last Updated Version 1.0 Copyright(C) 2004 Goodus Inc. All Rights Reserved Version 변경일자변경자 ( 작성자 ) 주요내용 1 2009-02-27 윤병길, 이은정문서최초작성 Contents

More information

untitled

untitled (shared) (integrated) (stored) (operational) (data) : (DBMS) :, (database) :DBMS File & Database - : - : ( : ) - : - : - :, - DB - - -DBMScatalog meta-data -DBMS -DBMS - -DBMS concurrency control E-R,

More information

대량의 DML 작업에대한성능개선방안 엑셈컨설팅본부 /DB 컨설팅팀박준연 개요 대량의데이터를변경해야하는작업은그자체만으로도큰부담으로다가온다. 하지만변경작업자체에만국한되는것이아니라변경되기전데이터와변경이후데이터를각각저장관리해야하는메커니즘이라면성능을개선해야하는입장에서는더욱큰부담

대량의 DML 작업에대한성능개선방안 엑셈컨설팅본부 /DB 컨설팅팀박준연 개요 대량의데이터를변경해야하는작업은그자체만으로도큰부담으로다가온다. 하지만변경작업자체에만국한되는것이아니라변경되기전데이터와변경이후데이터를각각저장관리해야하는메커니즘이라면성능을개선해야하는입장에서는더욱큰부담 대량의 DML 작업에대한성능개선방안 엑셈컨설팅본부 /DB 컨설팅팀박준연 개요 대량의데이터를변경해야하는작업은그자체만으로도큰부담으로다가온다. 하지만변경작업자체에만국한되는것이아니라변경되기전데이터와변경이후데이터를각각저장관리해야하는메커니즘이라면성능을개선해야하는입장에서는더욱큰부담일것이다. 말그대로대량의데이터를변경해야하는작업의특성상 SQL Tuning 만으로성능을개선할여지는많지않을뿐더러개선을한다하더라도극적인효과를기대하기는어렵다.

More information

단답형 (26 회기출문제 ) 1. 아래와같은테이블이있을때아래의 SQL 결과에대해서 Oracle, SQL Server 순서로적으시오 TAB1 COL1 CHAR(10) COL2 CHAR(10) INSERT INTO TAB1 VALUES ('1',''); INSERT INT

단답형 (26 회기출문제 ) 1. 아래와같은테이블이있을때아래의 SQL 결과에대해서 Oracle, SQL Server 순서로적으시오 TAB1 COL1 CHAR(10) COL2 CHAR(10) INSERT INTO TAB1 VALUES ('1',''); INSERT INT Study Room Doc.03 : SQLD 예상문제 ( 단답형 ) 네이버 Cafe : 데이터베이스전문가포럼 Study Room http://cafe.naver.com/sqlpd SQLD 26,25,24,21 회기출문제를바탕으로작성 작성자 : 월야루 도움 : 빙수민외카페댓글 2017-11-30 단답형 (26 회기출문제 ) 1. 아래와같은테이블이있을때아래의 SQL

More information

@OneToOne(cascade = = "addr_id") private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a

@OneToOne(cascade = = addr_id) private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a 1 대 1 단방향, 주테이블에외래키실습 http://ojcedu.com, http://ojc.asia STS -> Spring Stater Project name : onetoone-1 SQL : JPA, MySQL 선택 http://ojc.asia/bbs/board.php?bo_table=lecspring&wr_id=524 ( 마리아 DB 설치는위 URL

More information

Microsoft PowerPoint - Oracle Data Join Method.pptx [읽기 전용]

Microsoft PowerPoint - Oracle Data Join Method.pptx [읽기 전용] Special Key Note Oracle Data Join Method ( 주 ) 오픈메이드컨설팅 오동규수석컨설턴트 1 What is Join? JOIN is Multiply. 2 Why is the Join Method so important? 잘못사용하면큰재앙이따른다.( 위의그림처럼 ) 두개의집합을연결할수있는유일한수단. Join Method 는모든 DBMS

More information

Commit_Wait / Commit_Logging 두파라미터를통해 Log File Sync 대기시간을감소시킬수있다는것은놀라움과의아함을동시에느낄수있다. 단지파라미터의수정을통해당연히대기해야하는시간을감축한다는것은분명성능을개선해야하는입장에서는놀라운일이될것이다. 반면, 그에따

Commit_Wait / Commit_Logging 두파라미터를통해 Log File Sync 대기시간을감소시킬수있다는것은놀라움과의아함을동시에느낄수있다. 단지파라미터의수정을통해당연히대기해야하는시간을감축한다는것은분명성능을개선해야하는입장에서는놀라운일이될것이다. 반면, 그에따 Commit Wait Class 대기시간감소방안 엑셈컨설팅본부 /DB 컨설팅팀박준연 개요 Wait Class 중 Commit 카테고리에해당하는 Wait Event 에의한대기현상으로 DB 시스템의성능저하현상이발생하는것은종종경험할수있다. 그중대표적인 Wait Event 는 Log File Sync 이다. 실제로대부분의 DB 시스템의 Top 5 Wait Event

More information

SQL Tuning Business Development DB SQL - -SQL -SQL

SQL Tuning Business Development DB SQL - -SQL -SQL 0:00-0:50 SQL :00-2:00 2:00-3:30 3:30-4:20 SQL 4:30-5:20 5:30-7:20 SQL Tuning Business Development DB SQL - -SQL -SQL SQL () H/W( ) CPU, Memory, Network ( ) SQL I/O ( ) SQL (2) ( ) ( ) SQL SQL SQL SQL

More information

DBMS & SQL Server Installation Database Laboratory

DBMS & SQL Server Installation Database Laboratory DBMS & 조교 _ 최윤영 } 데이터베이스연구실 (1314 호 ) } 문의사항은 cyy@hallym.ac.kr } 과제제출은 dbcyy1@gmail.com } 수업공지사항및자료는모두홈페이지에서확인 } dblab.hallym.ac.kr } 홈페이지 ID: 학번 } 홈페이지 PW:s123 2 차례 } } 설치전점검사항 } 설치단계별설명 3 Hallym Univ.

More information

NoSQL

NoSQL MongoDB Daum Communications NoSQL Using Java Java VM, GC Low Scalability Using C Write speed Auto Sharding High Scalability Using Erlang Read/Update MapReduce R/U MR Cassandra Good Very Good MongoDB Good

More information

Microsoft Word - SQL튜닝_실습교재_.doc

Microsoft Word - SQL튜닝_실습교재_.doc * 실습환경 * 1. 오라클데이터베이스의튜닝실습을하기위해서는기본적인테이블과데이터가필요합니다. 다음과같은절차에의해환경설정을하십시오. 1) 강사가제공하는 Export 된파일 (scott.dmp) 을자신의 ORACLE 경로에저장하십시오. [C: ] cd C: ORACLE ORA92 BIN [C: ] dir scott.dmp scott.dmp 2) SYSTEM 사용자로접속하여

More information

(Microsoft PowerPoint - 5\300\345.\271\256 \303\263\270\256\(8\301\266\).ppt)

(Microsoft PowerPoint - 5\300\345.\271\256 \303\263\270\256\(8\301\266\).ppt) 이펙티브오라클 제 5 장문처리 1. 수정 DML의시작과끝 2. DDL 처리 3. 바인드변수의사용 4. 가능한한적게파싱하기 5. 요약 강정식 ( xsofter@empal.com ) 이문서는 Oracle Club 데이터베이스스터디모임에서작성하였습니다. 1 1. 수정 DML의시작과끝 Page 369 ~ 371 1.1 수정 DML 문 (INSERT, DELETE,

More information

ALTIBASE HDB Patch Notes

ALTIBASE HDB Patch Notes ALTIBASE HDB 6.5.1.5.6 Patch Notes 목차 BUG-45643 암호화컬럼의경우, 이중화환경에서 DDL 수행시 Replication HandShake 가실패하는문제가있어수정하였습니다... 4 BUG-45652 이중화에서 Active Server 와 Standby Server 의 List Partition 테이블의범위조건이다른경우에 Handshake

More information

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r -------------------------------------------------------------------- -- 1. : ts_cre_bonsa.sql -- 2. :

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 3 if, if else, if else if, switch case for, while, do while break, continue : System.in, args, JOptionPane for (,, ) @ vs. logic data method variable Data Data Flow (Type), ( ) @ Member field

More information

목차 Ⅰ. 자격검정시행기관소개 Ⅱ. 자격검정소개 Ⅲ. 자격검정과목세부설명 Ⅳ. 자격검정 STUDY 방법

목차 Ⅰ. 자격검정시행기관소개 Ⅱ. 자격검정소개 Ⅲ. 자격검정과목세부설명 Ⅳ. 자격검정 STUDY 방법 SQL 자격검정소개 -SQL Professional/ SQL Developer- 인적자원개발실 /DB 자격검정센터박민식실장 Copyright 2010 KDB, All rights Reserved. 목차 Ⅰ. 자격검정시행기관소개 Ⅱ. 자격검정소개 Ⅲ. 자격검정과목세부설명 Ⅳ. 자격검정 STUDY 방법 I. 자격검정시행기관소개 한국데이터베이스진흥원 Ⅰ. 자격검정시행기관소개

More information

기술노트 49 회 SQL PLAN MANAGEMENT Author 윤병길과장 Creation Date Last Updated Version 1.0 Copyright(C) 2009 Goodus Inc. All Rights Reserved

기술노트 49 회 SQL PLAN MANAGEMENT Author 윤병길과장 Creation Date Last Updated Version 1.0 Copyright(C) 2009 Goodus Inc. All Rights Reserved 기술노트 49 회 SQL PLAN MANAGEMENT Author 윤병길과장 Creation Date 2010-06-01 Last Updated Version 1.0 Copyright(C) 2009 Goodus Inc. All Rights Reserved Contents 1. SQL PLAN MANAGEMENT OVERVIEW... 3 1.1. INTRODUCTION...

More information

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL 다양한예제로쉽게배우는 오라클 SQL 과 PL/SQL 서진수저 4 장 JOIN 을배웁니다 1 2 1. Cartesian Product ( 카티션곱, CROSS Join) - Oracle Join 문법 SQL> SELECT e.ename, d.dname 2 FROM emp e, dept d ; - ANSI Join 문법 SQL> SELECT e.ename, d.dname

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Reasons for Poor Performance Programs 60% Design 20% System 2.5% Database 17.5% Source: ORACLE Performance Tuning 1 SMS TOOL DBA Monitoring TOOL Administration TOOL Performance Insight Backup SQL TUNING

More information

배치프로그램에서튜닝대상 SQL 추출하기 엑셈컨설팅본부 /DB 컨설팅팀박성호 배치프로그램의성능문제를진단하기위해트레이스를사용할수없고, 개별 SQL 에대한성 능점검은비효율적인경우에어떻게배치프로그램의성능문제를제대로파악하고개선안을도 출할것인가? 복잡한로직을가지고있는프로그램 (

배치프로그램에서튜닝대상 SQL 추출하기 엑셈컨설팅본부 /DB 컨설팅팀박성호 배치프로그램의성능문제를진단하기위해트레이스를사용할수없고, 개별 SQL 에대한성 능점검은비효율적인경우에어떻게배치프로그램의성능문제를제대로파악하고개선안을도 출할것인가? 복잡한로직을가지고있는프로그램 ( 배치프로그램에서튜닝대상 SQL 추출하기 엑셈컨설팅본부 /DB 컨설팅팀박성호 배치프로그램의성능문제를진단하기위해트레이스를사용할수없고, 개별 SQL 에대한성 능점검은비효율적인경우에어떻게배치프로그램의성능문제를제대로파악하고개선안을도 출할것인가? 복잡한로직을가지고있는프로그램 ( 이후배치프로그램 ) 에대한성능문제를파악하기위해수행되는모든 SQL 에대한개별수행내역을정확히판단할수있어야한다.

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Spider For MySQL 실전사용기 피망플러스유닛최윤묵 Spider For MySQL Data Sharding By Spider Storage Engine http://spiderformysql.com/ 성능 8 만 / 분 X 4 대 32 만 / 분 많은 DB 중에왜 spider 를? Source: 클라우드컴퓨팅구 선택의기로 Consistency RDBMS

More information

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL 다양한예제로쉽게배우는 오라클 SQL 과 PL/SQL 서진수저 6 장. DML 을배웁니다 1 - SQL 명령어들 DML (Data Manipulation Language) : INSERT( 입력 ), UPDATE( 변경 ), DELETE( 삭제 ), MERGE( 병합 ) DDL (Data Definition Language) : CREATE ( 생성 ), ALTER

More information

세미나(장애와복구-수강생용).ppt

세미나(장애와복구-수강생용).ppt DB PLAN Consultant jina6678@yahoo.co.kr 011-864-1858 - - 1. 2. DB 3. - 4. - 5. 6. 1 INSTANCE MMAN RECO RFS MRP ORBn RBAL MMON Dnnn Snnn Data Buffer Cache SGA Stream Pool Shared pool Large Pool PGA Log

More information

1. 들어가며 많은기업들이정보시스템의근간으로데이터베이스를사용하고있고또많은사람들이데이터베이스의성능에대해불만을토로한다. 데이터베이스의성능문제와관련해많은원인과해결책이있지만이문제와관련해자주언급되는개념이있다. Hard Parsing 이그것이다. Hard Parsing 은성능에좋

1. 들어가며 많은기업들이정보시스템의근간으로데이터베이스를사용하고있고또많은사람들이데이터베이스의성능에대해불만을토로한다. 데이터베이스의성능문제와관련해많은원인과해결책이있지만이문제와관련해자주언급되는개념이있다. Hard Parsing 이그것이다. Hard Parsing 은성능에좋 Hard Parsing 에따른성능문제와효과적인 SQL 작성법 SpeedGate Consulting 김철각 1. 들어가며 많은기업들이정보시스템의근간으로데이터베이스를사용하고있고또많은사람들이데이터베이스의성능에대해불만을토로한다. 데이터베이스의성능문제와관련해많은원인과해결책이있지만이문제와관련해자주언급되는개념이있다. Hard Parsing 이그것이다. Hard Parsing

More information

결과보고서

결과보고서 오픈 소스 데이터베이스 시스템을 이용한 플래시 메모리 SSD 기반의 질의 최적화 기법 연구 A Study on Flash-based Query Optimizing in PostgreSQL 황다솜 1) ㆍ안미진 1) ㆍ이혜지 1) ㆍ김지민 2) ㆍ정세희 2) ㆍ이임경 3) ㆍ차시언 3) 성균관대학교 정보통신대학 1) ㆍ시흥매화고등학교 2) ㆍ용화여자고등학교 3)

More information

Spring Boot/JDBC JdbcTemplate/CRUD 예제

Spring Boot/JDBC JdbcTemplate/CRUD 예제 Spring Boot/JDBC JdbcTemplate/CRUD 예제 오라클자바커뮤니티 (ojc.asia, ojcedu.com) Spring Boot, Gradle 과오픈소스인 MariaDB 를이용해서 EMP 테이블을만들고 JdbcTemplate, SimpleJdbcTemplate 을이용하여 CRUD 기능을구현해보자. 마리아 DB 설치는다음 URL 에서확인하자.

More information

SQL PLAN MANAGEMENT 활용 엑셈컨설팅본부 /DB 컨설팅팀장정민 개요 오라클은비롯한많은관계형 DBMS 에서는사용자의 SQL 질의를효율적으로처리하기위해옵티마이저를사용하고있다. 옵티마이저는유저가수행하는 SQL 을받아실행계획을생성하고, 실제 SQL 은이실행계획을

SQL PLAN MANAGEMENT 활용 엑셈컨설팅본부 /DB 컨설팅팀장정민 개요 오라클은비롯한많은관계형 DBMS 에서는사용자의 SQL 질의를효율적으로처리하기위해옵티마이저를사용하고있다. 옵티마이저는유저가수행하는 SQL 을받아실행계획을생성하고, 실제 SQL 은이실행계획을 SQL PLAN MANAGEMENT 활용 엑셈컨설팅본부 /DB 컨설팅팀장정민 개요 오라클은비롯한많은관계형 DBMS 에서는사용자의 SQL 질의를효율적으로처리하기위해옵티마이저를사용하고있다. 옵티마이저는유저가수행하는 SQL 을받아실행계획을생성하고, 실제 SQL 은이실행계획을통해서수행된다. 데이터베이스운영시평소잘수행되던 SQL 이성능이슈를발생시키는때가있는데, 그원인이

More information

Microsoft PowerPoint - 10Àå.ppt

Microsoft PowerPoint - 10Àå.ppt 10 장. DB 서버구축및운영 DBMS 의개념과용어를익힌다. 간단한 SQL 문법을학습한다. MySQL 서버를설치 / 운영한다. 관련용어 데이터 : 자료 테이블 : 데이터를표형식으로표현 레코드 : 테이블의행 필드또는컬럼 : 테이블의열 필드명 : 각필드의이름 데이터타입 : 각필드에입력할값의형식 학번이름주소연락처 관련용어 DB : 테이블의집합 DBMS : DB 들을관리하는소프트웨어

More information

Jerry Held

Jerry Held DB / TSC Oracle Database 10g (Self-Managing Database) (Common Infrastructure) (Automatic Workload Repository) (Server-generated Alerts) (Automated Maintenance Tasks) (Advisory Framework) (ADDM) (Self-Managing

More information

FlashBackt.ppt

FlashBackt.ppt 1. Flashback 목적 Flashback 이란? 사용자실수에의한손상된데이터를 Database 의크기와상관없이복구를할수있는기능이다. 이 Flashback 기능은일반적인복구에서우려되는데이터베이스의크기를걱정하지않아도된다. 보통의사용자실수는커다란시스템장애가수반되며, 이를복구하기위해서는많은자원과시간이필요하다. 하지만 9i 에서지원되느 flashback query

More information

Tablespace On-Offline 테이블스페이스 온라인/오프라인

Tablespace On-Offline 테이블스페이스 온라인/오프라인 2018/11/10 12:06 1/2 Tablespace On-Offline 테이블스페이스온라인 / 오프라인 목차 Tablespace On-Offline 테이블스페이스온라인 / 오프라인... 1 일반테이블스페이스 (TABLESPACE)... 1 일반테이블스페이스생성하기... 1 테이블스페이스조회하기... 1 테이블스페이스에데이터파일 (DATA FILE) 추가

More information

Microsoft Word - 04_EXCEPTION.doc

Microsoft Word - 04_EXCEPTION.doc ORACLE EXCEPTION INTRODUCTION PLSQL 블록이 PARSE 되는동안에발생되는에러를컴파일에러 (Compilation Error) 라고부르며, PLSQL 블록이실행되는동안에발생되는에러를런타임에러 (Run-Time Error) 라고부르는데, 이런타임에러를오라클에서는예외 (Exception) 라고부른다. 오라클의예외 (Exception) 는크게두가지로구분된다.

More information

歯PLSQL10.PDF

歯PLSQL10.PDF 10 - SQL*Pl u s Pl / SQL - SQL*P lus 10-1 1 0.1 PL/ SQL SQL*Pl u s. SQL*P lus 10-2 1 0.2 S QL* Pl u s PL/ S QL SQL*Pl u s, Pl / SQL. - PL/ SQL (i npu t ), (s t or e ), (r un). - PL/ SQL s cr i pt,,. -

More information

[ 목차 ] 5.1 데이터베이스프로그래밍개념 5.2 T-SQL T-SQL 문법 5.3 JAVA 프로그래밍 2

[ 목차 ] 5.1 데이터베이스프로그래밍개념 5.2 T-SQL T-SQL 문법 5.3 JAVA 프로그래밍 2 5 장 SQL 응용 데이터베이스실험실 1 [ 목차 ] 5.1 데이터베이스프로그래밍개념 5.2 T-SQL 5.2.1 T-SQL 문법 5.3 JAVA 프로그래밍 2 5.1 데이터베이스프로그래밍개념 프로그래밍 이라고하면프로그램소스를설계하고, 작성하고, 디버깅하는과정을말한다. 프로그램 혹은소프트웨어는컴퓨터에서주어진작업을하는명령어나열을말한다. 데이터베이스프로그래밍은명확한정의는없지만데이터베이스에데이터를정의하고,

More information

MySQL-.. 1

MySQL-.. 1 MySQL- 기초 1 Jinseog Kim Dongguk University jinseog.kim@gmail.com 2017-08-25 Jinseog Kim Dongguk University jinseog.kim@gmail.com MySQL-기초 1 2017-08-25 1 / 18 SQL의 기초 SQL은 아래의 용도로 구성됨 데이터정의 언어(Data definition

More information

WINDOW FUNCTION 의이해와활용방법 엑셈컨설팅본부 / DB 컨설팅팀정동기 개요 Window Function 이란행과행간의관계를쉽게정의할수있도록만든함수이다. 윈도우함수를활용하면복잡한 SQL 들을하나의 SQL 문장으로변경할수있으며반복적으로 ACCESS 하는비효율역

WINDOW FUNCTION 의이해와활용방법 엑셈컨설팅본부 / DB 컨설팅팀정동기 개요 Window Function 이란행과행간의관계를쉽게정의할수있도록만든함수이다. 윈도우함수를활용하면복잡한 SQL 들을하나의 SQL 문장으로변경할수있으며반복적으로 ACCESS 하는비효율역 WINDOW FUNCTION 의이해와활용방법 엑셈컨설팅본부 / DB 컨설팅팀정동기 개요 Window Function 이란행과행간의관계를쉽게정의할수있도록만든함수이다. 윈도우함수를활용하면복잡한 SQL 들을하나의 SQL 문장으로변경할수있으며반복적으로 ACCESS 하는비효율역시쉽게해결할수있다. 이번화이트페이퍼에서는 Window Function 중순위 RANK, ROW_NUMBER,

More information

最即時的Sybase ASE Server資料庫診斷工具

最即時的Sybase ASE Server資料庫診斷工具 TOAD 9.5 Toad Oracle 料 SQL 料 行 理 SQLprofile Quest Software 了 Oracle -Toad Tools of Oracle Application Developers Toad 了 DBA DBA 理 易 度 Toad 料 SQL PL/SQL Toad Oracle PL/SQL Toad Schema Browser Schema Browser

More information

The Self-Managing Database : Automatic Health Monitoring and Alerting

The Self-Managing Database : Automatic Health Monitoring and Alerting The Self-Managing Database : Automatic Health Monitoring and Alerting Agenda Oracle 10g Enterpirse Manager Oracle 10g 3 rd Party PL/SQL API Summary (Self-Managing Database) ? 6% 6% 12% 55% 6% Source: IOUG

More information

untitled

untitled PowerBuilder 連 Microsoft SQL Server database PB10.0 PB9.0 若 Microsoft SQL Server 料 database Profile MSS 料 (Microsoft SQL Server database interface) 行了 PB10.0 了 Sybase 不 Microsoft 料 了 SQL Server 料 PB10.0

More information

6주차.key

6주차.key 6, Process concept A program in execution Program code PCB (process control block) Program counter, registers, etc. Stack Heap Data section => global variable Process in memory Process state New Running

More information

3 S Q L A n t i p a t t e r n s Trees/intro/parent.sql CREATE TABLE Comments ( comment_id SERIAL PRIMARY KEY, parent_id BIGINT UNSIGNED, comment TEXT

3 S Q L A n t i p a t t e r n s Trees/intro/parent.sql CREATE TABLE Comments ( comment_id SERIAL PRIMARY KEY, parent_id BIGINT UNSIGNED, comment TEXT 3 S Q L A n t i p a t t e r n s Trees/intro/parent.sql CREATE TABLE Comments ( comment_id SERIAL PRIMARY KEY, parent_id BIGINT UNSIGNED, comment TEXT NOT NULL, FOREIGN KEY (parent_id) REFERENCES Comments(comment_id)

More information

ETL_project_best_practice1.ppt

ETL_project_best_practice1.ppt ETL ETL Data,., Data Warehouse DataData Warehouse ETL tool/system: ETL, ETL Process Data Warehouse Platform Database, Access Method Data Source Data Operational Data Near Real-Time Data Modeling Refresh/Replication

More information

슬라이드 1

슬라이드 1 -Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역

More information

Microsoft Word - [Unioneinc] 특정컬럼의 통계정보 갱신_ _ldh.doc

Microsoft Word - [Unioneinc] 특정컬럼의 통계정보 갱신_ _ldh.doc 특정 Column 통계정보갱신가이드 유니원아이앤씨 DB 사업부이대혁 2015 년 03 월 02 일 문서정보프로젝트명서브시스템명 버전 1.0 문서명 특정 Column 통계정보갱신가이드 작성일 2015-03-02 작성자 DB사업부이대혁사원 최종수정일 2015-03-02 문서번호 UNIONE-201503021500-LDH 재개정이력 일자내용수정인버전 문서배포이력

More information

Application 에서 Parameter 값을받아 JDBC Interface 로보내게되면적절한 JDBC Driver 를통해 SQL 을 Database 로보내주게되고결과를받아서사용자에게보여주게된다. 2-2 JDBC Interface JDBC 의핵심 Interface

Application 에서 Parameter 값을받아 JDBC Interface 로보내게되면적절한 JDBC Driver 를통해 SQL 을 Database 로보내주게되고결과를받아서사용자에게보여주게된다. 2-2 JDBC Interface JDBC 의핵심 Interface All about JDBC Performance Tuning 엑셈컨설팅본부 /APM 팀임대호 1 개요 JDBC 란 Java Database Connectivity 의약어이며, 데이터베이스표준접근 API(Application Programing Interface) 를말한다. JDBC 를사용하면어떤관계형데이터베이스에서도, 각데이터베이스에맞는접근프로그램을따로생성할필요없이사용할수있다.

More information

FileMaker 15 ODBC 및 JDBC 설명서

FileMaker 15 ODBC 및 JDBC 설명서 FileMaker 15 ODBC JDBC 2004-2016 FileMaker, Inc.. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker FileMaker Go FileMaker, Inc.. FileMaker WebDirect FileMaker, Inc... FileMaker.

More information

Microsoft Word - 05_SUBPROGRAM.doc

Microsoft Word - 05_SUBPROGRAM.doc ORACLE SUBPROGRAM INTRODUCTION PLSQL 은오라클에서제공하는프로그래밍언어이다. 이는데이터베이스언어인 SQL 과함께효과적으로데이터베이스에접근할수있는방법을제공하고있다. Procedural LanguageSQL 의약자에서볼수있듯이절차적인기능을기본적으로가지는프로그래밍언어이다. PLSQL 은기본적으로블록 (BLOCK) 구조를가지고있다. 블록의기본적인구성은선언부

More information

PowerPoint Presentation

PowerPoint Presentation FORENSICINSIGHT SEMINAR SQLite Recovery zurum herosdfrc@google.co.kr Contents 1. SQLite! 2. SQLite 구조 3. 레코드의삭제 4. 삭제된영역추적 5. 레코드복원기법 forensicinsight.org Page 2 / 22 SQLite! - What is.. - and why? forensicinsight.org

More information

ESQL/C

ESQL/C 20 장. PL/SQL 커서 주요내용 암시적커서 명시적커서선언 명시적커서열기및닫기 명시적커서에서데이터 Fetch 커서의속성 (%ISOPEN, %ROWCOUNT, %FOUND, %NOTFOUND) 커서 FOR 루프 PL/SQL 의커서 (Cursor) 커서 SQL 문과프로그램실행과정에서결과를저장할수있는오라클메모리구조 ( 개별 SQL 작업영역 ) 암시적커서 (Implicit

More information

Microsoft Word - 03_SQL_CURSOR.doc

Microsoft Word - 03_SQL_CURSOR.doc SQL Cursor SQL 커서소개오라클서버에서는 SQL 문을실행할때마다처리 (Parse, Execution) 를위한메모리공간, 즉 SQL 커서를사용하게된다. 이메모리공간은 Private SQL Area 라고도불리우며, 오라클의작업환경이 Dedicated Server 환경이냐또는 MTS(Multi- Threaded Server) 환경이냐에따라서버내에위치되는곳이다르다.

More information

C# Programming Guide - Types

C# Programming Guide - Types C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든

More information

PowerPoint Presentation

PowerPoint Presentation FORENSIC INSIGHT; DIGITAL FORENSICS COMMUNITY IN KOREA SQL Server Forensic AhnLab A-FIRST Rea10ne unused6@gmail.com Choi Jinwon Contents 1. SQL Server Forensic 2. SQL Server Artifacts 3. Database Files

More information

강의 개요

강의 개요 DDL TABLE 을만들자 웹데이터베이스 TABLE 자료가저장되는공간 문자자료의경우 DB 생성시지정한 Character Set 대로저장 Table 생성시 Table 의구조를결정짓는열속성지정 열 (Clumn, Attribute) 은이름과자료형을갖는다. 자료형 : http://dev.mysql.cm/dc/refman/5.1/en/data-types.html TABLE

More information

Microsoft Word - PLSQL.doc

Microsoft Word - PLSQL.doc PL/SQL 2008 DB system and programming 보충자료 PL/SQL의실행절 BEGIN 절에서의몇가지규칙 - 실행문은여러라인에걸쳐사용할수있다. - 변수명의명명규칙은오라클의일반적인명명규칙과동일하다. PL/SQL 블록내에서 SQL 문을사용할때에는컬럼명과같은변수명은피해야한다. - SQL에서와마찬가지로날짜와문자는홑따옴표 ( ) 를사용하여인용하여야한다.

More information

USER GUIDE

USER GUIDE Solution Package Volume II DATABASE MIGRATION 2010. 1. 9. U.Tu System 1 U.Tu System SeeMAGMA SYSTEM 차 례 1. INPUT & OUTPUT DATABASE LAYOUT...2 2. IPO 중 VB DATA DEFINE 자동작성...4 3. DATABASE UNLOAD...6 4.

More information

개발문서 Oracle - Clob

개발문서 Oracle - Clob 개발문서 ORACLE CLOB 2008.6.9 ( 주 ) 아이캔매니지먼트 개발팀황순규 0. clob개요 1. lob과 long의비교와 clob와 blob 2. 테이블생성쿼리 ( 차이점-추가사항 ) 3. select 쿼리 4. insert 쿼리및 jdbc프로그래밍 5. update 쿼리및 jdbc프로그래밍 (4, 5). putclobdata() 클래스 6. select

More information

1217 WebTrafMon II

1217 WebTrafMon II (1/28) (2/28) (10 Mbps ) Video, Audio. (3/28) 10 ~ 15 ( : telnet, ftp ),, (4/28) UDP/TCP (5/28) centralized environment packet header information analysis network traffic data, capture presentation network

More information

Microsoft PowerPoint - Session2 - Tibero 6

Microsoft PowerPoint - Session2 - Tibero 6 Better Technology, Better Tomorrow 인쇄用 Tibero 6 : Over the Miracle, To the Infinity 2013. 09. 10 2013 Tmax Group Co., Ltd. All Rights Reserved. 0/22 Ⅰ Ⅱ Ⅲ Ⅳ Big Data 시대의 DBMS 요구사항 Disk DBMS 와 DBMS 의한계

More information

초보자를 위한 분산 캐시 활용 전략

초보자를 위한 분산 캐시 활용 전략 초보자를위한분산캐시활용전략 강대명 charsyam@naver.com 우리가꿈꾸는서비스 우리가꿈꾸는서비스 우리가꿈꾸는서비스 우리가꿈꾸는서비스 그러나현실은? 서비스에필요한것은? 서비스에필요한것은? 핵심적인기능 서비스에필요한것은? 핵심적인기능 서비스에필요한것은? 핵심적인기능 서비스에필요한것은? 적절한기능 서비스안정성 트위터에매일고래만보이면? 트위터에매일고래만보이면?

More information

슬라이드 1

슬라이드 1 { Query Optimizing } 김정선 DB 사업부수석컨설턴트필라넷 (Feel@NET) Microsoft SQL Server MVP 김정선 (Jungsun Kim) Email: jskim@feelanet.com Blog: http://blog.naver.com/visualdb ( 현재소속 ) 필라넷, DB 사업부수석컨설턴트 SQL Server Academy/

More information

91 // 물리적으로닫지않고 cache에반환만한다. opstmt.close(); } opstmt.setint(3, lowerlimit); opstmt.setint(4, upperlimit); // Execute query rset = opstmt.executequery

91 // 물리적으로닫지않고 cache에반환만한다. opstmt.close(); } opstmt.setint(3, lowerlimit); opstmt.setint(4, upperlimit); // Execute query rset = opstmt.executequery 90 2007 Spring Oracle Korea Magazine *Technology & Developer Technical Tips Oracle JDBC 를이용한성능향상방법쉽게적용할수있는예제들 저자 _ 김정식 Oracle ACE(oramaster@empal.com) JAVA 기반의웹프로젝트를진행하다보면대부분의개발자분들이사용하는 JDBC API들은제한적인것같다.

More information

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 )

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 ) 8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 ) - DDL(Data Definition Language) : show, create, drop

More information

원장 차세대 필요성 검토

원장 차세대 필요성 검토 1. Application Architecture Layered Application 개념 Layered Application 개념도 구분 Presentation Layer Business Layer Data Layer Data Sources 내용설명 Business Layer 와 User 간 Interface 제공 Business Logic 구현 Data

More information

ALTIBASE HDB Patch Notes

ALTIBASE HDB Patch Notes ALTIBASE HDB 6.3.1.10.6 Patch Notes 목차 BUG-45060 offline replication start 와 replication drop 을동시에수행하는경우, replication start 가완료되지않았으면 replication drop 을수행하지못하도록수정하였습니다... 4 BUG-46193 메모리테이블의이중화병렬 sync

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 실습문제 Chapter 05 데이터베이스시스템... 오라클로배우는데이터베이스개론과실습 1. 실습문제 1 (5 장심화문제 : 각 3 점 ) 6. [ 마당서점데이터베이스 ] 다음프로그램을 PL/SQL 저장프로시져로작성하고실행해 보시오. (1) ~ (2) 7. [ 마당서점데이터베이스 ] 다음프로그램을 PL/SQL 저장프로시져로작성하고실행해 보시오. (1) ~ (5)

More information

Oracle Wait Interface Seminar

Oracle Wait Interface Seminar 1 대용량 DBMS 의효율적인 모니터링및성능관리방안 Copyrights 2001~2007, EXEM Co., LTD. All rights reserved. 목차 2 1. 성능문제와 OWI 분석방법론 2. OWI 구성요소 3. Latch & LOCK 4. Oracle I/O 5. Cache Buffer 3 성능문제와 OWI 분석방법론 성능지연사례 1) 평소에

More information

Microsoft PowerPoint - 1_3_DBA_SQL_tuning

Microsoft PowerPoint - 1_3_DBA_SQL_tuning 아주특별한 SQL 튜닝 씨퀄로 김정선 아주특별한 Level 400 100 개념및소개수준 200 중간수준 300 고급수준 400 전문가수준 선수지식불필요 100 에더하여기술적세부사항설명 200 에더하여능숙한사용경험, 아키텍처지식필요 SINCE 2002 SQL Server Specialist Member & Leading PASS Korea Member Microsoft

More information

´ÙÁß Row °á°ú¸¦ ´ÜÀÏÇàÀ¸·Î Äĸ¶·Î ºÐ¸®ÇØ Ãâ·ÂÇÏ´Â ¹æ¹ý

´ÙÁß Row °á°ú¸¦ ´ÜÀÏÇàÀ¸·Î Äĸ¶·Î ºÐ¸®ÇØ Ãâ·ÂÇÏ´Â ¹æ¹ý 5 중 1 2007-06-12 오후 5:52 Home Login Register SQL Query SQL Tuning Oracle Administration Tools References Boards SoQooL? 쏘쿨 SoQooL) 이란? Q&A Tips Lectures Function Lectures Oracle Spatial Tips Scripts SQL

More information

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL 다양한예제로쉽게배우는 오라클 SQL 과 PL/SQL 서진수저 9 장인덱스를배웁니다 1 1. 인덱스란무엇인가? 2 - ROWID ( 주소 ) 조회하기 SCOTT>SELECT ROWID, empno, ename 2 FROM emp 3 WHERE empno=7902 ; ROWID EMPNO ENAME --------------------------------- ----------

More information

예제소스는 에서다운로드하여사용하거나툴바의 [ 새쿼리 ]( 에아래의소스를입력한다. 입력후에는앞으로실습을위해서저장해둔다. -- 실습에필요한 Madang DB 와 COMPANY DB 를모두생성한다. -- 데이터베이스생성 US

예제소스는  에서다운로드하여사용하거나툴바의 [ 새쿼리 ]( 에아래의소스를입력한다. 입력후에는앞으로실습을위해서저장해둔다. -- 실습에필요한 Madang DB 와 COMPANY DB 를모두생성한다. -- 데이터베이스생성 US A.4 마당서점데이터베이스생성 1 마당서점의데이터베이스 Madang을생성하기위해윈도우의 [ 시작 ]-[ 모든프로그램 ]- [Microsoft SQL Server 2012]-[SQL Server Management Studio] 를선택한다. 인증을 [Windows 인증 ] 으로선택한후 < 연결 > 을클릭한다. 2 1 3 서버이름 MADANG_DB\SQLEXPRESS

More information

슬라이드 1

슬라이드 1 알티베이스의 DBMS 를바라보다! Session1. 오라클의눈으로알티베이스를보다 Session2. ALTIBASE HDB ZETA 소개 (New Feature & Utility) ALTIBASE 교육센터소개 Altibase Corp. 교육컨설팅팀성원준 AGENDA 1. Altibase 교육센터소개 2. Altibase 교육과정소개 Altibase 교육센터소개

More information

rmi_박준용_final.PDF

rmi_박준용_final.PDF (RMI) - JSTORM http://wwwjstormpekr (RMI)- Document title: Document file name: Revision number: Issued by: Document Information (RMI)- rmi finaldoc Issue Date: Status:

More information

뇌를자극하는 SQL Server 2012 (1 권 ) 1 권 : 기본편 < 이것만은알고갑시다 > 모범답안 1 장 1. (1) Microsoft (2) Oracle (3) IBM (4) Oracle (5) Micr

뇌를자극하는 SQL Server 2012 (1 권 )   1 권 : 기본편 < 이것만은알고갑시다 > 모범답안 1 장 1. (1) Microsoft (2) Oracle (3) IBM (4) Oracle (5) Micr 1 권 : 기본편 < 이것만은알고갑시다 > 모범답안 1 장 1. (1) Microsoft (2) Oracle (3) IBM (4) Oracle (5) Microsoft 2. (2) 3. 처리속도가빠르며, 별도의비용이들지않는다. 4. (4), (5) 5. (1), (4) 6. SQL Server 2005, SQL Server 2008, SQL Server 2008

More information

Simplify your Job Automatic Storage Management DB TSC

Simplify your Job Automatic Storage Management DB TSC Simplify your Job Automatic Storage Management DB TSC 1. DBA Challenges 2. ASM Disk group 3. Mirroring/Striping/Rebalancing 4. Traditional vs. ASM 5. ASM administration 6. ASM Summary Capacity in Terabytes

More information

5장 SQL 언어 Part II

5장 SQL 언어 Part II 5 장 SQL 언어 Part II 박창이 서울시립대학교통계학과 박창이 ( 서울시립대학교통계학과 ) 5 장 SQL 언어 Part II 1 / 26 데이터조작문 데이터검색 : SELECT 문데이터추가 : INSERT 문데이터수정 : UPDATE 문데이터삭제 : DELETE 문 박창이 ( 서울시립대학교통계학과 ) 5 장 SQL 언어 Part II 2 / 26 SELECT

More information

[Brochure] KOR_TunA

[Brochure] KOR_TunA LG CNS LG CNS APM (TunA) LG CNS APM (TunA) 어플리케이션의 성능 개선을 위한 직관적이고 심플한 APM 솔루션 APM 이란? Application Performance Management 란? 사용자 관점 그리고 비즈니스 관점에서 실제 서비스되고 있는 어플리케이션의 성능 관리 체계입니다. 이를 위해서는 신속한 장애 지점 파악 /

More information

FileMaker ODBC 및 JDBC 가이드

FileMaker ODBC 및 JDBC 가이드 FileMaker ODBC JDBC 2004-2019 FileMaker, Inc.. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker, FileMaker Cloud, FileMaker Go FileMaker, Inc.. FileMaker WebDirect FileMaker,

More information

Amazon EBS (Elastic Block Storage) Amazon EC2 Local Instance Store (Ephemeral Volumes) Amazon S3 (Simple Storage Service) / Glacier Elastic File Syste (EFS) Storage Gateway AWS Import/Export 1 Instance

More information