SlideShare ist ein Scribd-Unternehmen logo
1 von 7
Oracle Hint, Tuning 강좌
1.5 Literal SQL & Bind Variable SQL
(Soft Parsing/Hard Parsing)
탑크리에듀 교육센터
1.5 Literal SQL & Bind Variable SQL (Soft Parsing/Hard Parsing)
리터럴(Literal) SQL이란? SQL문장 작성시 WHERE절의 비교되는 값에 문자/숫자 상수값을 하드코딩해서 작성한 것을 말하며, Bind
Variable SQL이란 WHERE절의 특정값을 표시하는 자리에 바인드 변수 형태(:B)로 표시한 것을 말한다.
리터럴 SQL문을 많이 사용하면 하드파싱의 빈도를 높이게 되어 Library Cache 내에서 Cache되는 SQL문들이 자주 age out 하게 되므로 주
기를 빠르게 하고 Dictionary Cache의 사용률을 높이게 된다. 이러한 Shared SQL Area의 SQL문 중에서 리터럴 SQL 문들을 찾아서 Bind
Variable을 이용한 방법으로 바꾸어야 성능향상에 도움이 된다.
Hard Parsing
하드파싱이란 SQL 문장이 처음 실행 되는 경우엔 Shared Pool/Library Cache에 없으므로 완전히 전부 새로 파싱을 한다는 의미이다. 오
라클은 Shared Pool에 새로운 SQL문장을 할당하며 SQL 문장이 문법은 맞는지(syntax Check), 테이블 및 칼럼은 존재하는지, 권한이 있는
지 등(Semantic Check)을 Dictionary Cache를 이용하여 검사하게 된다. 이 경우 CPU 사용이 매우 많아 지고 래치(Latch, 가벼운 락, SGA 메
모리 구조에 대한 배타적인 접근, SGA의 특정영역을 탐색하거나 변경하고자 하는 프로세스는 반드시 해당 영역을 관장하는 latch를 획
득해야 한다)의 사용도 증가하게 된다.
Soft Parsing
소프트 파싱이란 실행하고자 하는 SQL 문장이 이미 Shared Pool/Library Cache에 있으므로 이미 존재하는 SQL에 관련된 정보(파싱트리,
실행계획)를 그대로 재사용 하는 것이다. 그래서 대부분의 SQL문장 실행시간은 처음보다 두 번째가 빠르다.
Soft Parse가 되기 위해서는 완벽하게 동일한 SQL 문장을 구사해야 하는데 하드 파싱의 대상에는 어떤 것이 있는지 알아 보자.
- 같은 테이블을 질의 하더라도 사용자 계정이 다른 경우 다른 SQL 문장으로 간주.
- SQL문장의 공백이 다른 경우
“select * from emp” 문장과 “select * from emp” 문장은 다르다.
- SQL문장의 라인이 다른 경우
“select *
from emp
where empno = 7369” 문장과 “select * from emp where empno = 7369”문장은 다르다.
- 동일한 질의라도 SQL 문장의 대소문자가 다르면 이것 역시 하드 파싱의 대상이다.
“select * from emp” 문장과 “select * from EMP” 문장은 다르다.
-- SHARD_POOL을 FLUSH하면 공유 SQL영역/PLSQL영역(SQL statements, stored procedures, function, packages, and triggers)이 CLEAR
된다(현재 실행되는 부분은 제외). 또한 SHARED POOL에 적재된 딕셔너리 캐시를 삭제하므로 SQL을 실행하면 하드파싱하게 된다.
SQL> ALTER SYSTEM FLUSH SHARED_POOL;
SQL> SET SERVEROUTPUT ON
SQL> DECLARE
v_sql VARCHAR2(500);
v_cnt NUMBER;
BEGIN
FOR I IN 1..5 LOOP
v_sql := 'SELECT /*+ LITERAL */ COUNT(*) FROM MYEMP1 WHERE EMPNO = ' || i;
DBMS_OUTPUT.PUT_LINE(v_sql);
EXECUTE IMMEDIATE v_sql INTO v_cnt;
END LOOP;
END;
/
SELECT COUNT(*) FROM MYEMP1 WHERE EMPNO = 1
SELECT COUNT(*) FROM MYEMP1 WHERE EMPNO = 2
SELECT COUNT(*) FROM MYEMP1 WHERE EMPNO = 3
SELECT COUNT(*) FROM MYEMP1 WHERE EMPNO = 4
SELECT COUNT(*) FROM MYEMP1 WHERE EMPNO = 5
-- 위에서 실행된 SQL문장은 전부 다른 SQL문장으로 인식되어 하드파싱 됨을 알수있다.
SQL> SELECT SUBSTR(sql_text,1,60) "SQL", COUNT(*),
SUM(EXECUTIONS) "총실행횟수"
FROM V$SQLAREA
WHERE SQL_TEXT LIKE '%LITERAL%'
GROUP BY SUBSTR(sql_text,1,60)
HAVING COUNT(*) > 0
ORDER BY 2;
SQL COUNT(*) 총실행 횟수
--------------------------------------------------------------------------------------------------------------
SELECT /*+ LITERAL */ COUNT(*) FROM MYEMP1 WHERE EMPNO = 4 1 1
SELECT /*+ LITERAL */ COUNT(*) FROM MYEMP1 WHERE EMPNO = 5 1 1
SELECT /*+ LITERAL */ COUNT(*) FROM MYEMP1 WHERE EMPNO = 1 1 1
SELECT /*+ LITERAL */ COUNT(*) FROM MYEMP1 WHERE EMPNO = 2 1 1
SELECT /*+ LITERAL */ COUNT(*) FROM MYEMP1 WHERE EMPNO = 3 1 1
SQL> DECLARE
v_sql VARCHAR2(500);
v_cnt NUMBER;
BEGIN
FOR i IN 1..5 LOOP
v_sql := 'SELECT /*+ BIND */COUNT(*) FROM MYEMP1 WHERE EMPNO = :1';
DBMS_OUTPUT.PUT_LINE(V_SQL);
EXECUTE IMMEDIATE v_sql INTO v_cnt USING i;
END LOOP;
END;
/
SELECT /*+ BIND */COUNT(*) FROM MYEMP1 WHERE EMPNO = :1
SELECT /*+ BIND */COUNT(*) FROM MYEMP1 WHERE EMPNO = :1
SELECT /*+ BIND */COUNT(*) FROM MYEMP1 WHERE EMPNO = :1
SELECT /*+ BIND */COUNT(*) FROM MYEMP1 WHERE EMPNO = :1
SELECT /*+ BIND */COUNT(*) FROM MYEMP1 WHERE EMPNO = :1
-- 위에서 실행된 SQL문장은 바인드 변수처리되어 동일한 SQL문장으로 인식되어 소프트파싱 되rh 파싱은 한번만, 실행은 5번 하였다.
SQL> SELECT SUBSTR(sql_text,1,60) "SQL", COUNT(*),
SUM(EXECUTIONS) "총실행횟수"
FROM V$SQLAREA
WHERE SQL_TEXT LIKE '%BIND%'
GROUP BY SUBSTR(sql_text,1,60)
HAVING COUNT(*) > 0
ORDER BY 2;
SQL COUNT(*) 총실행 횟수
-------------------------------------------------------------------------------------------------------------
SELECT /*+ BIND */COUNT(*) FROM MYEMP1 WHERE EMPNO = :1 1 5
UNITY3D, C# 기초
유니티 게임 프로그래밍(주말주간(토/일))
고급자바스크립트 프로그래밍 for Node.JS,
AngularJS2, React(주말주간(토/일))
스프링, 마이바티스를 이용한 통합구현
재직자향상과정(평일주간)
이번 달 확정 강좌
클릭하시면 해당 페이지로 연결됩니다.
감사합니다.
탑크리에듀 교육센터
02-851-4790
www.topcredu.co.kr

Weitere ähnliche Inhalte

Andere mochten auch

Andere mochten auch (7)

#15.SQL초보에서 Schema Objects까지_국비지원IT학원/구로IT학원/실무교육학원/SQL교육/오라클교육
#15.SQL초보에서 Schema Objects까지_국비지원IT학원/구로IT학원/실무교육학원/SQL교육/오라클교육#15.SQL초보에서 Schema Objects까지_국비지원IT학원/구로IT학원/실무교육학원/SQL교육/오라클교육
#15.SQL초보에서 Schema Objects까지_국비지원IT학원/구로IT학원/실무교육학원/SQL교육/오라클교육
 
오라클강의/자바강의/닷넷강의/자마린교육/아두이노교육학원추천_#13.SQL초보에서 Schema Objects까지
오라클강의/자바강의/닷넷강의/자마린교육/아두이노교육학원추천_#13.SQL초보에서 Schema Objects까지오라클강의/자바강의/닷넷강의/자마린교육/아두이노교육학원추천_#13.SQL초보에서 Schema Objects까지
오라클강의/자바강의/닷넷강의/자마린교육/아두이노교육학원추천_#13.SQL초보에서 Schema Objects까지
 
#12.SQL초보에서 schema Objects까지(구로IT학원/IT실무교육학원/국비지원IT교육학원/오라클교육/자바교육/닷넷교육학원추천)
#12.SQL초보에서 schema Objects까지(구로IT학원/IT실무교육학원/국비지원IT교육학원/오라클교육/자바교육/닷넷교육학원추천)#12.SQL초보에서 schema Objects까지(구로IT학원/IT실무교육학원/국비지원IT교육학원/오라클교육/자바교육/닷넷교육학원추천)
#12.SQL초보에서 schema Objects까지(구로IT학원/IT실무교육학원/국비지원IT교육학원/오라클교육/자바교육/닷넷교육학원추천)
 
IT실무교육학원/자바학원/오라클학원/SQL기초학원추천_#11.SQL초보에서 Schema Objects까지
IT실무교육학원/자바학원/오라클학원/SQL기초학원추천_#11.SQL초보에서 Schema Objects까지IT실무교육학원/자바학원/오라클학원/SQL기초학원추천_#11.SQL초보에서 Schema Objects까지
IT실무교육학원/자바학원/오라클학원/SQL기초학원추천_#11.SQL초보에서 Schema Objects까지
 
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원
스프링프레임워크 & 마이바티스 무.료 강의자료 제공 (Spring IoC & DI)_ 구로자바학원/구로오라클학원/구로IT학원
 
Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스 /구로오라클학원/ 구로자바학원/ 구로디지털단지역
Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스 /구로오라클학원/ 구로자바학원/ 구로디지털단지역Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스 /구로오라클학원/ 구로자바학원/ 구로디지털단지역
Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스 /구로오라클학원/ 구로자바학원/ 구로디지털단지역
 
Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스/ 구로오라클학원/ 구로자바학원/ 자바학원/ 오라클학원/ 구...
Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스/ 구로오라클학원/ 구로자바학원/ 자바학원/ 오라클학원/ 구...Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스/ 구로오라클학원/ 구로자바학원/ 자바학원/ 오라클학원/ 구...
Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스/ 구로오라클학원/ 구로자바학원/ 자바학원/ 오라클학원/ 구...
 

Mehr von 탑크리에듀(구로디지털단지역3번출구 2분거리)

(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[아이오닉학원]아이오닉 하이브리드 앱 개발 과정(아이오닉2로 동적 모바일 앱 만들기)
[아이오닉학원]아이오닉 하이브리드 앱 개발 과정(아이오닉2로 동적 모바일 앱 만들기)[아이오닉학원]아이오닉 하이브리드 앱 개발 과정(아이오닉2로 동적 모바일 앱 만들기)
[아이오닉학원]아이오닉 하이브리드 앱 개발 과정(아이오닉2로 동적 모바일 앱 만들기)
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)
[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)
[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[씨샵학원/씨샵교육]C#, 윈폼, 네트워크, ado.net 실무프로젝트 과정
[씨샵학원/씨샵교육]C#, 윈폼, 네트워크, ado.net 실무프로젝트 과정[씨샵학원/씨샵교육]C#, 윈폼, 네트워크, ado.net 실무프로젝트 과정
[씨샵학원/씨샵교육]C#, 윈폼, 네트워크, ado.net 실무프로젝트 과정
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정
[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정
[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[구로자마린학원/자마린강좌/자마린교육]3. xamarin.ios 3.3.5 추가적인 사항
[구로자마린학원/자마린강좌/자마린교육]3. xamarin.ios  3.3.5 추가적인 사항[구로자마린학원/자마린강좌/자마린교육]3. xamarin.ios  3.3.5 추가적인 사항
[구로자마린학원/자마린강좌/자마린교육]3. xamarin.ios 3.3.5 추가적인 사항
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
3. xamarin.i os 3.3 xamarin.ios helloworld 자세히 살펴보기 3.4.4 view controllers an...
3. xamarin.i os 3.3 xamarin.ios helloworld 자세히 살펴보기 3.4.4 view controllers an...3. xamarin.i os 3.3 xamarin.ios helloworld 자세히 살펴보기 3.4.4 view controllers an...
3. xamarin.i os 3.3 xamarin.ios helloworld 자세히 살펴보기 3.4.4 view controllers an...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)
5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)
5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld(단일 뷰) 실습[...
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld(단일 뷰) 실습[...3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld(단일 뷰) 실습[...
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld(단일 뷰) 실습[...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
탑크리에듀(구로디지털단지역3번출구 2분거리)
 

Mehr von 탑크리에듀(구로디지털단지역3번출구 2분거리) (20)

자마린.안드로이드 기본 내장레이아웃(Built-In List Item Layouts)
자마린.안드로이드 기본 내장레이아웃(Built-In List Item Layouts)자마린.안드로이드 기본 내장레이아웃(Built-In List Item Layouts)
자마린.안드로이드 기본 내장레이아웃(Built-In List Item Layouts)
 
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
 
자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러
자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러
자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러
 
[IT교육/IT학원]Develope를 위한 IT실무교육
[IT교육/IT학원]Develope를 위한 IT실무교육[IT교육/IT학원]Develope를 위한 IT실무교육
[IT교육/IT학원]Develope를 위한 IT실무교육
 
[아이오닉학원]아이오닉 하이브리드 앱 개발 과정(아이오닉2로 동적 모바일 앱 만들기)
[아이오닉학원]아이오닉 하이브리드 앱 개발 과정(아이오닉2로 동적 모바일 앱 만들기)[아이오닉학원]아이오닉 하이브리드 앱 개발 과정(아이오닉2로 동적 모바일 앱 만들기)
[아이오닉학원]아이오닉 하이브리드 앱 개발 과정(아이오닉2로 동적 모바일 앱 만들기)
 
[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)
[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)
[뷰제이에스학원]뷰제이에스(Vue.js) 프로그래밍 입문(프로그레시브 자바스크립트 프레임워크)
 
[씨샵학원/씨샵교육]C#, 윈폼, 네트워크, ado.net 실무프로젝트 과정
[씨샵학원/씨샵교육]C#, 윈폼, 네트워크, ado.net 실무프로젝트 과정[씨샵학원/씨샵교육]C#, 윈폼, 네트워크, ado.net 실무프로젝트 과정
[씨샵학원/씨샵교육]C#, 윈폼, 네트워크, ado.net 실무프로젝트 과정
 
[정보처리기사자격증학원]정보처리기사 취득 양성과정(국비무료 자격증과정)
[정보처리기사자격증학원]정보처리기사 취득 양성과정(국비무료 자격증과정)[정보처리기사자격증학원]정보처리기사 취득 양성과정(국비무료 자격증과정)
[정보처리기사자격증학원]정보처리기사 취득 양성과정(국비무료 자격증과정)
 
[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정
[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정
[wpf학원,wpf교육]닷넷, c#기반 wpf 프로그래밍 인터페이스구현 재직자 향상과정
 
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
(WPF교육)ListBox와 Linq 쿼리를 이용한 간단한 데이터바인딩, 새창 띄우기, 이벤트 및 델리게이트를 통한 메인윈도우의 ListB...
 
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...
[자마린교육/자마린실습]자바,스프링프레임워크(스프링부트) RESTful 웹서비스 구현 실습,자마린에서 스프링 웹서비스를 호출하고 응답 JS...
 
[구로자마린학원/자마린강좌/자마린교육]3. xamarin.ios 3.3.5 추가적인 사항
[구로자마린학원/자마린강좌/자마린교육]3. xamarin.ios  3.3.5 추가적인 사항[구로자마린학원/자마린강좌/자마린교육]3. xamarin.ios  3.3.5 추가적인 사항
[구로자마린학원/자마린강좌/자마린교육]3. xamarin.ios 3.3.5 추가적인 사항
 
3. xamarin.i os 3.3 xamarin.ios helloworld 자세히 살펴보기 3.4.4 view controllers an...
3. xamarin.i os 3.3 xamarin.ios helloworld 자세히 살펴보기 3.4.4 view controllers an...3. xamarin.i os 3.3 xamarin.ios helloworld 자세히 살펴보기 3.4.4 view controllers an...
3. xamarin.i os 3.3 xamarin.ios helloworld 자세히 살펴보기 3.4.4 view controllers an...
 
5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)
5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)
5. 서브 쿼리(sub query) 5.1 서브 쿼리(sub query) 개요 5.2 단일행 서브쿼리(single row sub query)
 
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld(단일 뷰) 실습[...
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld(단일 뷰) 실습[...3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld(단일 뷰) 실습[...
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld(단일 뷰) 실습[...
 
(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌
(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌
(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌
 
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
C#기초에서 윈도우, 스마트폰 앱개발 과정(c#.net, ado.net, win form, wpf, 자마린)_자마린학원_씨샵교육_WPF학원...
 
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
자바, 웹 기초와 스프링 프레임워크 & 마이바티스 재직자 향상과정(자바학원/자바교육/자바기업출강]
 
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...
3. xamarin.i os 3.1 xamarin.ios 설치, 개발환경 3.2 xamarin.ios helloworld_자마린학원_자마린...
 
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
3. 안드로이드 애플리케이션 구성요소 3.2인텐트 part01(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
 

1.5 Literal SQL & Bind Variable SQL (Soft Parsing/Hard Parsing)(국비지원교육, 오라클교육, 오라클국비지원학원, 추천오라클교육, 추천오라클학원, SQL학원, SQL교육 국비지원, 고용노동부, 환급과정, IT학원, 교육, 강좌, 추천강좌, 자바교육, 자바 학원)

  • 1. Oracle Hint, Tuning 강좌 1.5 Literal SQL & Bind Variable SQL (Soft Parsing/Hard Parsing) 탑크리에듀 교육센터
  • 2. 1.5 Literal SQL & Bind Variable SQL (Soft Parsing/Hard Parsing) 리터럴(Literal) SQL이란? SQL문장 작성시 WHERE절의 비교되는 값에 문자/숫자 상수값을 하드코딩해서 작성한 것을 말하며, Bind Variable SQL이란 WHERE절의 특정값을 표시하는 자리에 바인드 변수 형태(:B)로 표시한 것을 말한다. 리터럴 SQL문을 많이 사용하면 하드파싱의 빈도를 높이게 되어 Library Cache 내에서 Cache되는 SQL문들이 자주 age out 하게 되므로 주 기를 빠르게 하고 Dictionary Cache의 사용률을 높이게 된다. 이러한 Shared SQL Area의 SQL문 중에서 리터럴 SQL 문들을 찾아서 Bind Variable을 이용한 방법으로 바꾸어야 성능향상에 도움이 된다. Hard Parsing 하드파싱이란 SQL 문장이 처음 실행 되는 경우엔 Shared Pool/Library Cache에 없으므로 완전히 전부 새로 파싱을 한다는 의미이다. 오 라클은 Shared Pool에 새로운 SQL문장을 할당하며 SQL 문장이 문법은 맞는지(syntax Check), 테이블 및 칼럼은 존재하는지, 권한이 있는 지 등(Semantic Check)을 Dictionary Cache를 이용하여 검사하게 된다. 이 경우 CPU 사용이 매우 많아 지고 래치(Latch, 가벼운 락, SGA 메 모리 구조에 대한 배타적인 접근, SGA의 특정영역을 탐색하거나 변경하고자 하는 프로세스는 반드시 해당 영역을 관장하는 latch를 획 득해야 한다)의 사용도 증가하게 된다.
  • 3. Soft Parsing 소프트 파싱이란 실행하고자 하는 SQL 문장이 이미 Shared Pool/Library Cache에 있으므로 이미 존재하는 SQL에 관련된 정보(파싱트리, 실행계획)를 그대로 재사용 하는 것이다. 그래서 대부분의 SQL문장 실행시간은 처음보다 두 번째가 빠르다. Soft Parse가 되기 위해서는 완벽하게 동일한 SQL 문장을 구사해야 하는데 하드 파싱의 대상에는 어떤 것이 있는지 알아 보자. - 같은 테이블을 질의 하더라도 사용자 계정이 다른 경우 다른 SQL 문장으로 간주. - SQL문장의 공백이 다른 경우 “select * from emp” 문장과 “select * from emp” 문장은 다르다. - SQL문장의 라인이 다른 경우 “select * from emp where empno = 7369” 문장과 “select * from emp where empno = 7369”문장은 다르다. - 동일한 질의라도 SQL 문장의 대소문자가 다르면 이것 역시 하드 파싱의 대상이다. “select * from emp” 문장과 “select * from EMP” 문장은 다르다.
  • 4. -- SHARD_POOL을 FLUSH하면 공유 SQL영역/PLSQL영역(SQL statements, stored procedures, function, packages, and triggers)이 CLEAR 된다(현재 실행되는 부분은 제외). 또한 SHARED POOL에 적재된 딕셔너리 캐시를 삭제하므로 SQL을 실행하면 하드파싱하게 된다. SQL> ALTER SYSTEM FLUSH SHARED_POOL; SQL> SET SERVEROUTPUT ON SQL> DECLARE v_sql VARCHAR2(500); v_cnt NUMBER; BEGIN FOR I IN 1..5 LOOP v_sql := 'SELECT /*+ LITERAL */ COUNT(*) FROM MYEMP1 WHERE EMPNO = ' || i; DBMS_OUTPUT.PUT_LINE(v_sql); EXECUTE IMMEDIATE v_sql INTO v_cnt; END LOOP; END; / SELECT COUNT(*) FROM MYEMP1 WHERE EMPNO = 1 SELECT COUNT(*) FROM MYEMP1 WHERE EMPNO = 2 SELECT COUNT(*) FROM MYEMP1 WHERE EMPNO = 3 SELECT COUNT(*) FROM MYEMP1 WHERE EMPNO = 4 SELECT COUNT(*) FROM MYEMP1 WHERE EMPNO = 5 -- 위에서 실행된 SQL문장은 전부 다른 SQL문장으로 인식되어 하드파싱 됨을 알수있다. SQL> SELECT SUBSTR(sql_text,1,60) "SQL", COUNT(*), SUM(EXECUTIONS) "총실행횟수" FROM V$SQLAREA WHERE SQL_TEXT LIKE '%LITERAL%' GROUP BY SUBSTR(sql_text,1,60) HAVING COUNT(*) > 0 ORDER BY 2;
  • 5. SQL COUNT(*) 총실행 횟수 -------------------------------------------------------------------------------------------------------------- SELECT /*+ LITERAL */ COUNT(*) FROM MYEMP1 WHERE EMPNO = 4 1 1 SELECT /*+ LITERAL */ COUNT(*) FROM MYEMP1 WHERE EMPNO = 5 1 1 SELECT /*+ LITERAL */ COUNT(*) FROM MYEMP1 WHERE EMPNO = 1 1 1 SELECT /*+ LITERAL */ COUNT(*) FROM MYEMP1 WHERE EMPNO = 2 1 1 SELECT /*+ LITERAL */ COUNT(*) FROM MYEMP1 WHERE EMPNO = 3 1 1 SQL> DECLARE v_sql VARCHAR2(500); v_cnt NUMBER; BEGIN FOR i IN 1..5 LOOP v_sql := 'SELECT /*+ BIND */COUNT(*) FROM MYEMP1 WHERE EMPNO = :1'; DBMS_OUTPUT.PUT_LINE(V_SQL); EXECUTE IMMEDIATE v_sql INTO v_cnt USING i; END LOOP; END; / SELECT /*+ BIND */COUNT(*) FROM MYEMP1 WHERE EMPNO = :1 SELECT /*+ BIND */COUNT(*) FROM MYEMP1 WHERE EMPNO = :1 SELECT /*+ BIND */COUNT(*) FROM MYEMP1 WHERE EMPNO = :1 SELECT /*+ BIND */COUNT(*) FROM MYEMP1 WHERE EMPNO = :1 SELECT /*+ BIND */COUNT(*) FROM MYEMP1 WHERE EMPNO = :1 -- 위에서 실행된 SQL문장은 바인드 변수처리되어 동일한 SQL문장으로 인식되어 소프트파싱 되rh 파싱은 한번만, 실행은 5번 하였다. SQL> SELECT SUBSTR(sql_text,1,60) "SQL", COUNT(*), SUM(EXECUTIONS) "총실행횟수" FROM V$SQLAREA WHERE SQL_TEXT LIKE '%BIND%' GROUP BY SUBSTR(sql_text,1,60) HAVING COUNT(*) > 0 ORDER BY 2; SQL COUNT(*) 총실행 횟수 ------------------------------------------------------------------------------------------------------------- SELECT /*+ BIND */COUNT(*) FROM MYEMP1 WHERE EMPNO = :1 1 5
  • 6. UNITY3D, C# 기초 유니티 게임 프로그래밍(주말주간(토/일)) 고급자바스크립트 프로그래밍 for Node.JS, AngularJS2, React(주말주간(토/일)) 스프링, 마이바티스를 이용한 통합구현 재직자향상과정(평일주간) 이번 달 확정 강좌 클릭하시면 해당 페이지로 연결됩니다.