1. 레인 시간 구분 강사 제목 19:00 ~ 21:00 UI 김정범 대리 웹표준이냐 속도냐 (UI 개발자의 고뇌 ) RIA 오창훈 대리 GS 이숍만의 RIA 개발활용팁과 노하우 프로젝트 김현 과장 효율적인 유지보수를 위한 개발 및 관리 프레임워크 추경돈 대리 Spring Framework 도입 사례 SE 김풍주 대리 웹 표준스펙 살펴보기 ( 명세서에 살고 명세서에 죽다 ) 쇼핑몰 트렌드 초청 김태진 쇼핑몰 컨설턴트가 바라본 쇼핑몰 트렌드 코드관리 허광남 과장 레거시 코드 관리 전략 ( 남이 짠 코드 빨리 알아보기 ) SQL 튜닝 박광일 대리 웹개발자의 약한고리 SQL 뛰어넘기
4. 복잡한 JAVA vs SQL /18 복잡한 JAVA 복잡한 SQL 길을 잃어 버린 개발자 ..
5.
6. DATA TYPE /18 암시적 (Implicit) 데이터 유형 변환 명시적 (Explicit) 데이터 유형 변환 데이터 유형 변환 암시적 변환의 위험성 SQL> DESC EMP2 Name Null? Type ------------------------------------------- EMPNO NOT NULL VARCHAR2(4) ENAME VARCHAR2(10) JOB VARCHAR2(9) HIREDATE DATE SAL NUMBER(7,2) DEPTNO NUMBER(2) SQL>SELECT * FROM EMP2 WHERE empno=1234; TO_NUMBER(empno)=1234 EMPN ENAME JOB HIREDATE SAL DEPTNO ---- -------- ------- -------------------- -------- --------- 7369 SMITH CLERK 1980-12-17 00:00:00 800 20 Execution Plan ---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=CHOOSE 1 0 TABLE ACCESS (FULL) OF 'EMP2 ' SQL> SELECT * FROM EMP2 WHERE empno=‘1234’; Execution Plan ---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=CHOOSE 1 0 TABLE ACCESS (BY INDEX ROWID) OF 'EMP2' 2 1 INDEX (RANGE SCAN) OF 'EMP2_EMPNO_IDX' (NON-UNIQUE)
7. 좌절의 원인 /18 단 1 패가 모든 운명을 결정 ! 항우 (69 승 1 패 ) 유방 (69 패 1 승 ) VS JAVA 69 개 잘 짜고 1 개의 SQL 이 무너지면 전체에 영향을 준다 !
9. SQL 을 위한 Oracle 구조의 이해 /18 Client Process SERVER Process SGA(System Global Area) Buffer Cache PGA Memory ④ Physical Reads physical writes physical reads direct physical writes direct ① SQL DBWR ③ Logical Reads Shared Pool ② Parse Log Buffer 서버 프로세스별 시간 환산 DISK * 데이터 1 개 블록 (8Kbyte) 읽을 때 켁 ! 7.7 개월 Cache ① Register ② L1/L2 ③ Memory ④ Disk Access Time 3ns 10ns 450ns 20ms Second 3 초 10 초 7.5 분 ?
10.
11. INDEX /18 INDEX 를 사용할 수 없는 경우 INDEX, PLAN, TKPROF ^ 종류 원본 구문 변형 제거 1. 외부적변형 SELECT * FROM EMP WHERE SUBSTR(DNAME,1,3) = 'ABC' SELECT * FROM EMP WHERE DNAME LIKE 'ABC%' 2. 내부적변형 SELECT * FROM SAMPLET WHERE CHA = 10 => TO_NUMBER(CHA) = 10 SELECT * FROM SAMPLET WHERE CHA = ’ 10 ’ 3. 부정형비교 SELECT 'Not found !' INTO :COL1 FROM EMP WHERE EMPNO <> '1234' SELECT ’ Not found' INTO :COL1 FROM DUAL WHERE NOT EXISTS ( SELECT '' FROM EMP WHERE EMPNO = '1234') 4.NULL 비교 SELECT * FROM EMP WHERE ENAME IS NOT NULL SELECT * FROM EMP WHERE ENAME > ' ‘ /* SPACE */
12.
13. RBO vs CBO /18 Oracle 9i 10g ... 11g Rule Based Optimizer Cost Based Optimizer 통계정보 자동생성 ANSI 1999 표준 SQL RBO 지원 중지 Oracle 이 많은 것을 해 주려 하지만 .. 개발자의 머리와 실력을 믿는다 . Cost Based Optimizer
14. Red Color 는 선정적이다 ! /18 중요한 정보를 말해주고 있다 ! INDEX, PLAN, TKPROF ^
15. PLAN PLAN PLAN /18 1. 문제 가 있다 ! 라는 것을 알 / 아 / 야 한다 ! 2. Plan 을 이해해야 한다 ! INDEX, PLAN, TKPROF ^
16.
17.
18.
19. 죽어서도 살아서도 아름다운 개발자로 ! 죽어서 살 것인가 ! 살아서 죽을 것인가 ! 죽어서 아름다울 것인가 ! 살아서 더러울 것인가 ! 김훈 ‘남한산성’ 中 출처 : SLRCLUB - 영원한 7 모석