SlideShare ist ein Scribd-Unternehmen logo
1 von 19
레인 시간 구분 강사 제목 19:00  ~ 21:00 UI 김정범 대리 웹표준이냐 속도냐 (UI 개발자의 고뇌 ) RIA 오창훈 대리 GS 이숍만의  RIA  개발활용팁과 노하우 프로젝트 김현 과장 효율적인 유지보수를 위한 개발 및 관리 프레임워크 추경돈 대리 Spring Framework  도입 사례 SE 김풍주 대리 웹 표준스펙 살펴보기  ( 명세서에 살고 명세서에 죽다 ) 쇼핑몰 트렌드 초청 김태진 쇼핑몰 컨설턴트가 바라본 쇼핑몰 트렌드 코드관리 허광남 과장 레거시 코드 관리 전략  ( 남이 짠 코드 빨리 알아보기 ) SQL 튜닝 박광일 대리 웹개발자의 약한고리  SQL  뛰어넘기
웹개발자의 약한고리  SQL  뛰어넘기   박 광 일
안갯속 상황 ! /18 ,[object Object],[object Object],[object Object],[object Object]
복잡한  JAVA vs SQL /18 복잡한  JAVA 복잡한  SQL 길을 잃어 버린 개발자 ..
단순한  SQL /18 SELECT * FROM EC_PRD A WHERE TO_CHAR(CREDATE,'YYYMMDD') < '20071110' AND PRDID = 2398308 *  INDEX : EC_PRD_PRDID_IX : PRDID+ CREDATE   *  EC_PRD : CREDATE  DATE  NOT NULL EXECUTION PLAN --------------------------------------------------------------  SELECT STATEMENT Optimizer=RULE - TABLE ACCESS(FULL) OF  ‘ EC_PRD ’ (COST=120 Card=22 Bytes=240K) ,[object Object],SELECT  * FROM  EC_PRD A WHERE  PRDID = 2398308 AND  CREDATE < TO_DATE( ‘ 20071110 ‘ , ’ YYYMMDD ’ ) EXECUTION PLAN -------------------------------------------------------------- SELECT STATEMENT Optimizer=RULE (Cost=3 Card=1 Bytes=2K) - TABLE ACCESS (BY INDEX ROWID) OF 'EC_PRD' (Cost=3 Card=1 Bytes=2K)   -INDEX (RANGE SCAN) OF ' EC_PRD_PRDID_IX ' (UNIQUE) (Cost=2 Card=18) ,[object Object],DATA TYPE  과  INDEX
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)
좌절의 원인 /18 단  1 패가 모든 운명을 결정 ! 항우 (69 승  1 패 ) 유방 (69 패  1 승 ) VS JAVA 69 개 잘 짜고  1 개의  SQL 이 무너지면 전체에 영향을 준다 !
SQL  작성 방법 /18 +  성능 고려한  SQL  작성
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 분 ?
INDEX /18 TABLE (EMP) EMPNO  ENAME  JOB 7654  강감찬  부장 7900  류관순  과장  7689  황진이  과장 7499  이순신  차장  7934  변강쇠  부장 7844  조자룡  차장  7369  안중근  상무 7839  장보고  과장  7531  신윤복  차장  7856  홍길동  과장 7432  김유신  부장 7827  김두환  부장 INDEX (EMP_JOB_IDX) INDEX-KEY  ROWID 과장  0000A95B.0002.0001 과장  0000A95B.0005.0001 과장  0000E62E.0009.0001 과장  0000E9BE.0002.0001 부장  000062BE.0001.0001 부장  000062BE.0003.0001 부장  000093A6.0005.0001 부장  000093B2.000B.0001 상무  000069C5.0001.0001 차장  0000E9BE.0002.0001 차장  0000E9BE.0005.0001 차장  0000E9BE.000B.0001 ,[object Object],INDEX  구조 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],INDEX, PLAN, TKPROF ^
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 */
INDEX  –  HINT  ,[object Object],[object Object],/18 INDEX, PLAN, TKPROF ^ Access Methods Hints  INDEX, NO_INDEX INDEX_FFS INDEX_ASC, INDEX_DESC USE_CONCAT  FULL HASH JOIN  순서를 결정  Hints ORDERED STAR JOIN Operation  결정  Hints LEADING USE_NL USE_MERGE USE_HASH Optimization Goals and Approaches  ALL_ROWS  FIRST_ROWS  CHOOSE RULE Parallel Execution Hints  PARALLEL, NOPARALLEL  PARALLEL_INDEX
RBO vs CBO /18 Oracle 9i 10g ... 11g Rule Based Optimizer Cost Based Optimizer 통계정보 자동생성  ANSI 1999  표준  SQL RBO  지원 중지 Oracle  이 많은 것을 해 주려 하지만 .. 개발자의 머리와 실력을 믿는다 . Cost Based Optimizer
Red Color  는 선정적이다 !  /18 중요한 정보를 말해주고 있다 ! INDEX, PLAN, TKPROF ^
PLAN  PLAN  PLAN /18 1. 문제 가 있다 !   라는 것을  알 / 아 / 야  한다 ! 2.  Plan  을 이해해야 한다 ! INDEX, PLAN, TKPROF ^
PLAN  PLAN  PLAN ,[object Object],[object Object],[object Object],[object Object],/18 SELECT ename, job, sal, dname FROM  emp, dept WHERE  emp.deptno = dept.deptno AND  not exists (SELECT * FROM salgrade WHERE emp.sal BETWEEN losal AND hisal)  1 2 6 FILTER NESTED LOOPS TABLE ACCESS (FULL)   salgrade 3 4 TABLE ACCESS (FULL)   emp TABLE ACCESS (BY ROWID)   dept 5 INDEX (UNIQUE SCAN) pk_dept ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],①  구문 ②  실행 계획 ③  실행 계획 분석 순서 INDEX, PLAN, TKPROF ^
TKPROF (Trace) ,[object Object],/18 AUTOTRACE  예제 SQL>  set autotrace traceonly statistics SQL> SELECT * 2  FROM products 3  WHERE prod_category = 'Men' 4  AND prod_subcategory = 'Jeans - Men'; 333  개의 행이 선택되었습니다 . Statistics ------------------------------------------ 0  recursive calls 0  db block gets 159  consistent gets 139  physical reads 0  redo size 38034  bytes sent via SQL*Net to client 745  bytes received via SQL*Net from client 24  SQL*Net roundtrips to/from client 0  sorts (memory) 0  sorts (disk) 333  rows processed INDEX, PLAN, TKPROF ^ Memory Disk ,[object Object],[object Object],[object Object],[object Object]
TKPROF (Trace) ,[object Object],/18 SELECT  * FROM products WHERE prod_category = 'Men' AND prod_subcategory = 'Jeans - Men' Call  Count CPU Time Elapsed Time  Disk  Query  Current  Rows ------ ----- -------- ------------ ---------- ---------- ----------  Parse   1  0.000  0.022  0  0  0  0 Execute   1  0.000  0.040  0  0  0  0 Fetch   35  0.030  0.298  139  159  0  333 ------ ------ -------- ------------ ---------- ---------- ----------  Total  37  0.030  0.360  139  159  0  333 Elapsed Time for Client(sec.): 0.402 Misses in library cache during parse: 1 Optimizer goal: CHOOSE Parsing user: SH (ID=49) Rows  Row Source Operation -------  --------------------------------------------------- 0  STATEMENT 333  TABLE ACCESS BY INDEX ROWID PRODUCTS  (cr=159 r=139 w=0 time=295493 us) 333  BITMAP CONVERSION TO ROWIDS (cr=11 r=11 w=0 time=168426 us) 1  BITMAP AND  (cr=11 r=11 w=0 time=167759 us) 1  BITMAP CONVERSION FROM ROWIDS (cr=3 r=3 w=0 time=122495 us) 333  INDEX RANGE SCAN PRODUCTS_PROD_SUBCAT_IX (cr=3 r=3 w=0 time=111775 us)OF PRODUCTS_PROD_SUBCAT_IX (NONUNIQUE) 1  BITMAP CONVERSION FROM ROWIDS (cr=8 r=8 w=0 time=30264 us) 2594  INDEX RANGE SCAN PRODUCTS_PROD_CAT_IX (cr=8 r=8 w=0 time=25484 us)OF PRODUCTS_PROD_CAT_IX (NONUNIQUE) Elapsed Time:  작업의 시작부터 종료까지 걸리는 시간 Query :  데이터 블록을 읽은 수 INDEX, PLAN, TKPROF ^ 의미 있는 숫자들 cr : Consistent Read  총 블록수  - Memory r  : Physical Read  총 블록수 (10g pr)  –  Disk Read w  : Physical Write  총블록수 (10g pw)  –  Disk Write
죽어서도 살아서도 아름다운 개발자로 ! 죽어서 살 것인가 !  살아서 죽을 것인가 ! 죽어서 아름다울 것인가 !  살아서 더러울 것인가 ! 김훈 ‘남한산성’ 中 출처 : SLRCLUB -  영원한 7 모석  

Weitere ähnliche Inhalte

Was ist angesagt?

[2017 Incognito] 스택 구조 분석을 통한 ROP 기법의 모든 것
[2017 Incognito] 스택 구조 분석을 통한 ROP 기법의 모든 것[2017 Incognito] 스택 구조 분석을 통한 ROP 기법의 모든 것
[2017 Incognito] 스택 구조 분석을 통한 ROP 기법의 모든 것NAVER D2
 
[Pgday.Seoul 2017] 7. PostgreSQL DB Tuning 기업사례 - 송춘자
[Pgday.Seoul 2017] 7. PostgreSQL DB Tuning 기업사례 - 송춘자[Pgday.Seoul 2017] 7. PostgreSQL DB Tuning 기업사례 - 송춘자
[Pgday.Seoul 2017] 7. PostgreSQL DB Tuning 기업사례 - 송춘자PgDay.Seoul
 
효율적인Sql작성방법 3주차
효율적인Sql작성방법 3주차효율적인Sql작성방법 3주차
효율적인Sql작성방법 3주차희동 강
 
[2017 Incognito] 시스템 해킹 기법 정리
[2017 Incognito] 시스템 해킹 기법 정리[2017 Incognito] 시스템 해킹 기법 정리
[2017 Incognito] 시스템 해킹 기법 정리NAVER D2
 
[2013 CodeEngn Conference 09] wh1ant - various tricks for linux remote exploits
[2013 CodeEngn Conference 09] wh1ant - various tricks for linux remote exploits[2013 CodeEngn Conference 09] wh1ant - various tricks for linux remote exploits
[2013 CodeEngn Conference 09] wh1ant - various tricks for linux remote exploitsGangSeok Lee
 
Kth개발자 세미나 1회
Kth개발자 세미나 1회Kth개발자 세미나 1회
Kth개발자 세미나 1회Byeongsu Kang
 
Why using _.chain is a mistake
Why using _.chain is a mistakeWhy using _.chain is a mistake
Why using _.chain is a mistake정기 김
 
Regex & property sheet
Regex & property sheetRegex & property sheet
Regex & property sheetYoungkwon Lee
 
[Gpg2권 박민근] 1.13 스택 와인딩
[Gpg2권 박민근] 1.13 스택 와인딩[Gpg2권 박민근] 1.13 스택 와인딩
[Gpg2권 박민근] 1.13 스택 와인딩MinGeun Park
 
TABLE ACCESS 패턴을 이용한 SQL 튜닝_Wh oracle
TABLE ACCESS 패턴을 이용한 SQL 튜닝_Wh oracleTABLE ACCESS 패턴을 이용한 SQL 튜닝_Wh oracle
TABLE ACCESS 패턴을 이용한 SQL 튜닝_Wh oracle엑셈
 
[2011 CodeEngn Conference 05] ashine - 안드로이드 리눅스에서의 시스템 해킹
[2011 CodeEngn Conference 05] ashine - 안드로이드 리눅스에서의 시스템 해킹[2011 CodeEngn Conference 05] ashine - 안드로이드 리눅스에서의 시스템 해킹
[2011 CodeEngn Conference 05] ashine - 안드로이드 리눅스에서의 시스템 해킹GangSeok Lee
 
암달의 법칙과 쿼리튜닝 기초
암달의 법칙과 쿼리튜닝 기초암달의 법칙과 쿼리튜닝 기초
암달의 법칙과 쿼리튜닝 기초Hoyoung Jung
 
MySQL 인덱스의 기초
MySQL 인덱스의 기초MySQL 인덱스의 기초
MySQL 인덱스의 기초Hoyoung Jung
 

Was ist angesagt? (13)

[2017 Incognito] 스택 구조 분석을 통한 ROP 기법의 모든 것
[2017 Incognito] 스택 구조 분석을 통한 ROP 기법의 모든 것[2017 Incognito] 스택 구조 분석을 통한 ROP 기법의 모든 것
[2017 Incognito] 스택 구조 분석을 통한 ROP 기법의 모든 것
 
[Pgday.Seoul 2017] 7. PostgreSQL DB Tuning 기업사례 - 송춘자
[Pgday.Seoul 2017] 7. PostgreSQL DB Tuning 기업사례 - 송춘자[Pgday.Seoul 2017] 7. PostgreSQL DB Tuning 기업사례 - 송춘자
[Pgday.Seoul 2017] 7. PostgreSQL DB Tuning 기업사례 - 송춘자
 
효율적인Sql작성방법 3주차
효율적인Sql작성방법 3주차효율적인Sql작성방법 3주차
효율적인Sql작성방법 3주차
 
[2017 Incognito] 시스템 해킹 기법 정리
[2017 Incognito] 시스템 해킹 기법 정리[2017 Incognito] 시스템 해킹 기법 정리
[2017 Incognito] 시스템 해킹 기법 정리
 
[2013 CodeEngn Conference 09] wh1ant - various tricks for linux remote exploits
[2013 CodeEngn Conference 09] wh1ant - various tricks for linux remote exploits[2013 CodeEngn Conference 09] wh1ant - various tricks for linux remote exploits
[2013 CodeEngn Conference 09] wh1ant - various tricks for linux remote exploits
 
Kth개발자 세미나 1회
Kth개발자 세미나 1회Kth개발자 세미나 1회
Kth개발자 세미나 1회
 
Why using _.chain is a mistake
Why using _.chain is a mistakeWhy using _.chain is a mistake
Why using _.chain is a mistake
 
Regex & property sheet
Regex & property sheetRegex & property sheet
Regex & property sheet
 
[Gpg2권 박민근] 1.13 스택 와인딩
[Gpg2권 박민근] 1.13 스택 와인딩[Gpg2권 박민근] 1.13 스택 와인딩
[Gpg2권 박민근] 1.13 스택 와인딩
 
TABLE ACCESS 패턴을 이용한 SQL 튜닝_Wh oracle
TABLE ACCESS 패턴을 이용한 SQL 튜닝_Wh oracleTABLE ACCESS 패턴을 이용한 SQL 튜닝_Wh oracle
TABLE ACCESS 패턴을 이용한 SQL 튜닝_Wh oracle
 
[2011 CodeEngn Conference 05] ashine - 안드로이드 리눅스에서의 시스템 해킹
[2011 CodeEngn Conference 05] ashine - 안드로이드 리눅스에서의 시스템 해킹[2011 CodeEngn Conference 05] ashine - 안드로이드 리눅스에서의 시스템 해킹
[2011 CodeEngn Conference 05] ashine - 안드로이드 리눅스에서의 시스템 해킹
 
암달의 법칙과 쿼리튜닝 기초
암달의 법칙과 쿼리튜닝 기초암달의 법칙과 쿼리튜닝 기초
암달의 법칙과 쿼리튜닝 기초
 
MySQL 인덱스의 기초
MySQL 인덱스의 기초MySQL 인덱스의 기초
MySQL 인덱스의 기초
 

Andere mochten auch

Samridhi proposal-Jan
Samridhi proposal-JanSamridhi proposal-Jan
Samridhi proposal-Janprabhat_rbl
 
Sanchetna Presentation
Sanchetna PresentationSanchetna Presentation
Sanchetna Presentationprabhat_rbl
 
ecdevday2 RIA 개발 팁과 노하우
ecdevday2 RIA 개발 팁과 노하우ecdevday2 RIA 개발 팁과 노하우
ecdevday2 RIA 개발 팁과 노하우Kenu, GwangNam Heo
 
Samridhi agri products private limited
Samridhi agri products private limitedSamridhi agri products private limited
Samridhi agri products private limitedprabhat_rbl
 
Samridhi indian angel network
Samridhi indian angel networkSamridhi indian angel network
Samridhi indian angel networkprabhat_rbl
 
ecdevday3 효율적인 유지보수를 위한 개발 및 관리
ecdevday3 효율적인 유지보수를 위한 개발 및 관리ecdevday3 효율적인 유지보수를 위한 개발 및 관리
ecdevday3 효율적인 유지보수를 위한 개발 및 관리Kenu, GwangNam Heo
 
Samridhi presentation 28th april'12
Samridhi presentation 28th april'12Samridhi presentation 28th april'12
Samridhi presentation 28th april'12prabhat_rbl
 
스마트 디바이스 2013 이슈와 개발 트렌드 - 가을
스마트 디바이스 2013 이슈와 개발 트렌드 - 가을스마트 디바이스 2013 이슈와 개발 트렌드 - 가을
스마트 디바이스 2013 이슈와 개발 트렌드 - 가을Kenu, GwangNam Heo
 
Subversion Retake
Subversion RetakeSubversion Retake
Subversion Retakemanat
 
Samridhi business plan
Samridhi business planSamridhi business plan
Samridhi business planprabhat_rbl
 

Andere mochten auch (18)

Samridhi proposal-Jan
Samridhi proposal-JanSamridhi proposal-Jan
Samridhi proposal-Jan
 
Sanchetna Presentation
Sanchetna PresentationSanchetna Presentation
Sanchetna Presentation
 
ecdevday5
ecdevday5ecdevday5
ecdevday5
 
ecdevday2 RIA 개발 팁과 노하우
ecdevday2 RIA 개발 팁과 노하우ecdevday2 RIA 개발 팁과 노하우
ecdevday2 RIA 개발 팁과 노하우
 
Hybrid app dev trends
Hybrid app dev trendsHybrid app dev trends
Hybrid app dev trends
 
Website
WebsiteWebsite
Website
 
Samridhi agri products private limited
Samridhi agri products private limitedSamridhi agri products private limited
Samridhi agri products private limited
 
Samridhi indian angel network
Samridhi indian angel networkSamridhi indian angel network
Samridhi indian angel network
 
ecdevday3 효율적인 유지보수를 위한 개발 및 관리
ecdevday3 효율적인 유지보수를 위한 개발 및 관리ecdevday3 효율적인 유지보수를 위한 개발 및 관리
ecdevday3 효율적인 유지보수를 위한 개발 및 관리
 
ecdevday4
ecdevday4ecdevday4
ecdevday4
 
Samridhi presentation 28th april'12
Samridhi presentation 28th april'12Samridhi presentation 28th april'12
Samridhi presentation 28th april'12
 
스마트 디바이스 2013 이슈와 개발 트렌드 - 가을
스마트 디바이스 2013 이슈와 개발 트렌드 - 가을스마트 디바이스 2013 이슈와 개발 트렌드 - 가을
스마트 디바이스 2013 이슈와 개발 트렌드 - 가을
 
Social Dev Trend
Social Dev TrendSocial Dev Trend
Social Dev Trend
 
RESTful Mashup
RESTful MashupRESTful Mashup
RESTful Mashup
 
Subversion Retake
Subversion RetakeSubversion Retake
Subversion Retake
 
Eclipse web
Eclipse webEclipse web
Eclipse web
 
Samridhi business plan
Samridhi business planSamridhi business plan
Samridhi business plan
 
Elastic stack
Elastic stackElastic stack
Elastic stack
 

Ähnlich wie ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기

데이타베이스 기본튜닝
데이타베이스 기본튜닝 데이타베이스 기본튜닝
데이타베이스 기본튜닝 Jinuk Bhak
 
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드cranbe95
 
[2015-06-12] Oracle 성능 최적화 및 품질 고도화 1
[2015-06-12] Oracle 성능 최적화 및 품질 고도화 1[2015-06-12] Oracle 성능 최적화 및 품질 고도화 1
[2015-06-12] Oracle 성능 최적화 및 품질 고도화 1Seok-joon Yun
 
Fundamentals of Oracle SQL
Fundamentals of Oracle SQLFundamentals of Oracle SQL
Fundamentals of Oracle SQLJAEGEUN YU
 
[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3
[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3
[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3Seok-joon Yun
 
회사에서 써보는 SQLAlchemy
회사에서 써보는 SQLAlchemy회사에서 써보는 SQLAlchemy
회사에서 써보는 SQLAlchemyJc Kim
 
Database 튜닝 교육 110124
Database 튜닝 교육 110124Database 튜닝 교육 110124
Database 튜닝 교육 110124한 경만
 
#1.SQL초보에서 Schema Objects까지(SQL학원/오라클학원/IT실무교육학원/재직자/실업자교육학원추천)
#1.SQL초보에서 Schema Objects까지(SQL학원/오라클학원/IT실무교육학원/재직자/실업자교육학원추천)#1.SQL초보에서 Schema Objects까지(SQL학원/오라클학원/IT실무교육학원/재직자/실업자교육학원추천)
#1.SQL초보에서 Schema Objects까지(SQL학원/오라클학원/IT실무교육학원/재직자/실업자교육학원추천)탑크리에듀(구로디지털단지역3번출구 2분거리)
 
Remote-debugging-based-on-notrace32-20130619-1900
Remote-debugging-based-on-notrace32-20130619-1900Remote-debugging-based-on-notrace32-20130619-1900
Remote-debugging-based-on-notrace32-20130619-1900Samsung Electronics
 
배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle
배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle
배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle엑셈
 
Amazon aurora 2
Amazon aurora 2Amazon aurora 2
Amazon aurora 2EXEM
 
금융 데이터 이해와 분석 PyCon 2014
금융 데이터 이해와 분석 PyCon 2014금융 데이터 이해와 분석 PyCon 2014
금융 데이터 이해와 분석 PyCon 2014Seung-June Lee
 
MySQL_MariaDB-성능개선-202201.pptx
MySQL_MariaDB-성능개선-202201.pptxMySQL_MariaDB-성능개선-202201.pptx
MySQL_MariaDB-성능개선-202201.pptxNeoClova
 
[2015-07-10-윤석준] Oracle 성능 관리 & v$sysstat
[2015-07-10-윤석준] Oracle 성능 관리 & v$sysstat[2015-07-10-윤석준] Oracle 성능 관리 & v$sysstat
[2015-07-10-윤석준] Oracle 성능 관리 & v$sysstatSeok-joon Yun
 
Deview 2019 눈발자국
Deview 2019 눈발자국Deview 2019 눈발자국
Deview 2019 눈발자국hanbeom Park
 
From MSSQL to MySQL
From MSSQL to MySQLFrom MSSQL to MySQL
From MSSQL to MySQLI Goo Lee
 
Vectorized processing in_a_nutshell_DeView2014
Vectorized processing in_a_nutshell_DeView2014Vectorized processing in_a_nutshell_DeView2014
Vectorized processing in_a_nutshell_DeView2014Gruter
 

Ähnlich wie ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기 (20)

데이타베이스 기본튜닝
데이타베이스 기본튜닝 데이타베이스 기본튜닝
데이타베이스 기본튜닝
 
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
 
3.2 실행계획 sql 연산 (concatenation)
3.2 실행계획 sql 연산 (concatenation)3.2 실행계획 sql 연산 (concatenation)
3.2 실행계획 sql 연산 (concatenation)
 
[2015-06-12] Oracle 성능 최적화 및 품질 고도화 1
[2015-06-12] Oracle 성능 최적화 및 품질 고도화 1[2015-06-12] Oracle 성능 최적화 및 품질 고도화 1
[2015-06-12] Oracle 성능 최적화 및 품질 고도화 1
 
Fundamentals of Oracle SQL
Fundamentals of Oracle SQLFundamentals of Oracle SQL
Fundamentals of Oracle SQL
 
3.3 실행계획 SQL 연산 (Count,Count Stopkey/Filter)
3.3 실행계획 SQL 연산 (Count,Count Stopkey/Filter)3.3 실행계획 SQL 연산 (Count,Count Stopkey/Filter)
3.3 실행계획 SQL 연산 (Count,Count Stopkey/Filter)
 
[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3
[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3
[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3
 
회사에서 써보는 SQLAlchemy
회사에서 써보는 SQLAlchemy회사에서 써보는 SQLAlchemy
회사에서 써보는 SQLAlchemy
 
5.2 비트맵 인덱스
5.2 비트맵 인덱스5.2 비트맵 인덱스
5.2 비트맵 인덱스
 
Database 튜닝 교육 110124
Database 튜닝 교육 110124Database 튜닝 교육 110124
Database 튜닝 교육 110124
 
#1.SQL초보에서 Schema Objects까지(SQL학원/오라클학원/IT실무교육학원/재직자/실업자교육학원추천)
#1.SQL초보에서 Schema Objects까지(SQL학원/오라클학원/IT실무교육학원/재직자/실업자교육학원추천)#1.SQL초보에서 Schema Objects까지(SQL학원/오라클학원/IT실무교육학원/재직자/실업자교육학원추천)
#1.SQL초보에서 Schema Objects까지(SQL학원/오라클학원/IT실무교육학원/재직자/실업자교육학원추천)
 
Remote-debugging-based-on-notrace32-20130619-1900
Remote-debugging-based-on-notrace32-20130619-1900Remote-debugging-based-on-notrace32-20130619-1900
Remote-debugging-based-on-notrace32-20130619-1900
 
배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle
배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle
배치 프로그램에서 튜닝대상 SQL 추출하기_Wh oracle
 
Amazon aurora 2
Amazon aurora 2Amazon aurora 2
Amazon aurora 2
 
금융 데이터 이해와 분석 PyCon 2014
금융 데이터 이해와 분석 PyCon 2014금융 데이터 이해와 분석 PyCon 2014
금융 데이터 이해와 분석 PyCon 2014
 
MySQL_MariaDB-성능개선-202201.pptx
MySQL_MariaDB-성능개선-202201.pptxMySQL_MariaDB-성능개선-202201.pptx
MySQL_MariaDB-성능개선-202201.pptx
 
[2015-07-10-윤석준] Oracle 성능 관리 & v$sysstat
[2015-07-10-윤석준] Oracle 성능 관리 & v$sysstat[2015-07-10-윤석준] Oracle 성능 관리 & v$sysstat
[2015-07-10-윤석준] Oracle 성능 관리 & v$sysstat
 
Deview 2019 눈발자국
Deview 2019 눈발자국Deview 2019 눈발자국
Deview 2019 눈발자국
 
From MSSQL to MySQL
From MSSQL to MySQLFrom MSSQL to MySQL
From MSSQL to MySQL
 
Vectorized processing in_a_nutshell_DeView2014
Vectorized processing in_a_nutshell_DeView2014Vectorized processing in_a_nutshell_DeView2014
Vectorized processing in_a_nutshell_DeView2014
 

Mehr von Kenu, GwangNam Heo

이클립스 플랫폼
이클립스 플랫폼이클립스 플랫폼
이클립스 플랫폼Kenu, GwangNam Heo
 
채팅 소스부터 Https 주소까지
채팅 소스부터  Https 주소까지채팅 소스부터  Https 주소까지
채팅 소스부터 Https 주소까지Kenu, GwangNam Heo
 
개발자가 바라보는 자바의 미래 - 2018
개발자가 바라보는 자바의 미래 - 2018개발자가 바라보는 자바의 미래 - 2018
개발자가 바라보는 자바의 미래 - 2018Kenu, GwangNam Heo
 
오픈 소스 사용 매뉴얼
오픈 소스 사용 매뉴얼오픈 소스 사용 매뉴얼
오픈 소스 사용 매뉴얼Kenu, GwangNam Heo
 
소셜 코딩 GitHub & branch & branch strategy
소셜 코딩 GitHub & branch & branch strategy소셜 코딩 GitHub & branch & branch strategy
소셜 코딩 GitHub & branch & branch strategyKenu, GwangNam Heo
 
오픈소스 개요
오픈소스 개요오픈소스 개요
오픈소스 개요Kenu, GwangNam Heo
 
오픈소스 개발도구 2014
오픈소스 개발도구 2014오픈소스 개발도구 2014
오픈소스 개발도구 2014Kenu, GwangNam Heo
 
모바일 웹앱 프로그래밍 과정
모바일 웹앱 프로그래밍 과정모바일 웹앱 프로그래밍 과정
모바일 웹앱 프로그래밍 과정Kenu, GwangNam Heo
 
JavaScript 2014 프론트엔드 기술 리뷰
JavaScript 2014 프론트엔드 기술 리뷰JavaScript 2014 프론트엔드 기술 리뷰
JavaScript 2014 프론트엔드 기술 리뷰Kenu, GwangNam Heo
 
01이제는 모바일 세상이다
01이제는 모바일 세상이다01이제는 모바일 세상이다
01이제는 모바일 세상이다Kenu, GwangNam Heo
 

Mehr von Kenu, GwangNam Heo (20)

이클립스 플랫폼
이클립스 플랫폼이클립스 플랫폼
이클립스 플랫폼
 
About Programmer 2021
About Programmer 2021About Programmer 2021
About Programmer 2021
 
채팅 소스부터 Https 주소까지
채팅 소스부터  Https 주소까지채팅 소스부터  Https 주소까지
채팅 소스부터 Https 주소까지
 
Java in 2 hours
Java in 2 hoursJava in 2 hours
Java in 2 hours
 
Dev team chronicles
Dev team chroniclesDev team chronicles
Dev team chronicles
 
개발자가 바라보는 자바의 미래 - 2018
개발자가 바라보는 자바의 미래 - 2018개발자가 바라보는 자바의 미래 - 2018
개발자가 바라보는 자바의 미래 - 2018
 
오픈 소스 사용 매뉴얼
오픈 소스 사용 매뉴얼오픈 소스 사용 매뉴얼
오픈 소스 사용 매뉴얼
 
about Programmer 2018
about Programmer 2018about Programmer 2018
about Programmer 2018
 
Cloud developer evolution
Cloud developer evolutionCloud developer evolution
Cloud developer evolution
 
소셜 코딩 GitHub & branch & branch strategy
소셜 코딩 GitHub & branch & branch strategy소셜 코딩 GitHub & branch & branch strategy
소셜 코딩 GitHub & branch & branch strategy
 
오픈소스 개요
오픈소스 개요오픈소스 개요
오픈소스 개요
 
Developer paradigm shift
Developer paradigm shiftDeveloper paradigm shift
Developer paradigm shift
 
Social Coding GitHub 2015
Social Coding GitHub 2015Social Coding GitHub 2015
Social Coding GitHub 2015
 
오픈소스 개발도구 2014
오픈소스 개발도구 2014오픈소스 개발도구 2014
오픈소스 개발도구 2014
 
Mean stack Start
Mean stack StartMean stack Start
Mean stack Start
 
모바일 웹앱 프로그래밍 과정
모바일 웹앱 프로그래밍 과정모바일 웹앱 프로그래밍 과정
모바일 웹앱 프로그래밍 과정
 
JavaScript 2014 프론트엔드 기술 리뷰
JavaScript 2014 프론트엔드 기술 리뷰JavaScript 2014 프론트엔드 기술 리뷰
JavaScript 2014 프론트엔드 기술 리뷰
 
jQuery 구조와 기능
jQuery 구조와 기능jQuery 구조와 기능
jQuery 구조와 기능
 
01이제는 모바일 세상이다
01이제는 모바일 세상이다01이제는 모바일 세상이다
01이제는 모바일 세상이다
 
Eclipse code quality
Eclipse code qualityEclipse code quality
Eclipse code quality
 

ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기

  • 1. 레인 시간 구분 강사 제목 19:00 ~ 21:00 UI 김정범 대리 웹표준이냐 속도냐 (UI 개발자의 고뇌 ) RIA 오창훈 대리 GS 이숍만의 RIA 개발활용팁과 노하우 프로젝트 김현 과장 효율적인 유지보수를 위한 개발 및 관리 프레임워크 추경돈 대리 Spring Framework 도입 사례 SE 김풍주 대리 웹 표준스펙 살펴보기 ( 명세서에 살고 명세서에 죽다 ) 쇼핑몰 트렌드 초청 김태진 쇼핑몰 컨설턴트가 바라본 쇼핑몰 트렌드 코드관리 허광남 과장 레거시 코드 관리 전략 ( 남이 짠 코드 빨리 알아보기 ) SQL 튜닝 박광일 대리 웹개발자의 약한고리 SQL 뛰어넘기
  • 2. 웹개발자의 약한고리 SQL 뛰어넘기 박 광 일
  • 3.
  • 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 이 무너지면 전체에 영향을 준다 !
  • 8. SQL 작성 방법 /18 + 성능 고려한 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 모석