SlideShare una empresa de Scribd logo
1 de 7
Oracle Hint, Tuning 강좌
탑크리에듀 교육센터
1.3 DBMS_STATS 패키지 사용하기
Optimizer Statistics(옵티마이저 통계)는 데이터베이스 모든 오브젝트에 대한 자료를 모아 기술한 통계인데 데이터 딕셔너리(Data
Dictionary)에 저장되며 이 통계정보를 바탕으로 오라클 옵티마이저는 SQL문장 실행을 위한 효율적인 실행계획을 만들어 낸다.
오라클은 테이블이나 인덱스와 같은 데이터베이스 오브젝트에 대한 통계 정보 생성, 삭제, 익스포, 임포트를 용이하게 하기 위해
DBMS_STATS 패키지를 제공하는데 이 패키지를 이용하면 테이블이나 인덱스의 모든 데이터를 근간으로 통계 정보를 생성할 수 있다.
대용량의 테이블이라면 모든 데이터를 가지고 액세스 경로를 추측하는 것보다 샘플링 데이터를 가지고 추측하는 것이 훨씬 용이하다.
대체로 샘플링 데이터는 5% 이하로 ROW나 BLOCK에 만들며 DBMS_STATS 패키지의 automatic sampling 프러시저를 이용하면 된다.
통계정보 수집용 테이블 생성은 DBMS_STATS 패키지의 create_stat_table 프러시저를 이용하여 만들면 된다.
DBMS_STATS 패키지에는 몇 개의 유용한 프러시저가 있는데 아래와 같다.
gather_database_ stats: 데이터베이스의 모든 Object에 대한 통계 정보 생성.
gather_schema_ stats: 해당 스키마의 모든 Object에 대한 통계 정보 생성.
gather_table_stats : 테이블과 그 테이블과 연관된 인덱스에 대한 통계 정보 생성.
gather_index_stats : 인덱스에 대해 통계 정보를 생성.
여기에서 사용된 인자는 접속한 계정, 통계정보 수
집용 테이블 이름, 테이블스페이스 이름이다.
SQL> execute dbms_stats.create_stat_table(USER,
'stat_tab', 'users');
PL/SQL 처리가 정상적으로 완료되었습니다.
-- 아래는 현재 로그온한 스키마 계정과 EMP라는 테
이블에 대해 통계 정보를 생성했다.
SQL> execute
dbms_stats.gather_schema_stats(ownname => USER);
PL/SQL 처리가 정상적으로 완료되었습니다.
SQL> execute
dbms_stats.gather_table_stats(USER,'emp');
PL/SQL 처리가 정상적으로 완료되었습니다.
-- 데이터 딕셔너리에서 생성된 통계정보 확인,
LAST_ANALYZED 칼럼을 확인하라
SQL>SELECT * FROM USER_TABLES WHERE
TABLE_NAME = ‘EMP’;
--테이블 내의 인덱스된 컬럼 들 및 대상 테이블과
연관된 모든 인덱스에 대한 통계 정보 생성
SQL> begin
dbms_stats.gather_table_stats(
USER, 'myemp1',
method_opt =>'for all indexed columns',
cascade => true);
end;
/
-- 생성된 테이블 통계정보 확인
SQL> SELECT NUM_ROWS, BLOCKS, EMPTY_BLOCKS,
AVG_ROW_LEN FROM USER_TAB_STATISTICS
WHERE TABLE_NAME = 'MYEMP1';
NUM_ROWS BLOCKS EMPTY_BLOCKS
AVG_ROW_LEN
-------------------------------------------------------------------
10000002 92328 472 82
-- 생성된 칼럼 통계정보 확인
SQL> SELECT COLUMN_NAME, NUM_DISTINCT,
NUM_NULLS
FROM USER_TAB_COL_STATISTICS
WHERE TABLE_NAME = 'MYEMP1';
COLUMN_NAME NUM_DISTINCT NUM_NULLS
----------------------------------------------------------------------
EMPNO 10000002 0
ENAME 10000002 0
DEPTNO 4 0
ADDR 10000002 0
SAL 6039040 0
JOB 6 0
COMM 989888 8333335
SUNGBYUL 2 0
HIREDATE 1745792 0
OUTDATE 1 8333335
MGR 6 2499998
11 개의 행이 선택되었습니다.
위 예문의 경우 자동으로 테이블과 인덱스의 모든 데이터에 대해 통계 정보가 계산된다. 만약 만들 통계
정보가 단순히 샘플이거나 큰 테이블의 모든 데이터가 아니라 일부의 레코드에 대해 제한하는 경우에는
dbms_stats.auto_sample_size를 이용하면 된다.
-- 현재 MYEMP1 테이블의 통계정보를 STAT_TAB으로 EXPORT
/*
DBMS_STATS.EXPORT_TABLE_STATS (
ownname VARCHAR2,
tabname VARCHAR2,
partname VARCHAR2 DEFAULT NULL, -- 파티션 이름
stattab VARCHAR2, -- 통계정보를 저장하기 위한 통계정보 테이블
statid VARCHAR2 DEFAULT NULL,
cascade BOOLEAN DEFAULT TRUE, -- 인덱스 통계정보도 같이 임포트 할지의 여부
statown VARCHAR2 DEFAULT NULL -- stat table schema name
);
*/
SQL> execute dbms_stats.export_table_stats (USER, 'myemp1',null,'stat_tab');
PL/SQL 처리가 정상적으로 완료되었습니다.
-- 딕셔너리와 STAT_TAB의 통계정보의 차이를 비교, 현재는 차이가 없다.
SQL> select * from table(dbms_stats.diff_table_stats_in_stattab(USER,'myemp1','stat_tab'));
REPORT MAXDIFFPCT
-------------------------------------------------------------------------------- ----------
################################################### 0
-- 통계정보 수집용 테이블 삭제
SQL> execute dbms_stats.drop_stat_table(USER,'stat_tab');
PL/SQL 처리가 정상적으로 완료되었습니다.
SQL> execute dbms_stats.gather_schema_stats(ownname => USER, estimate_percen => dbms_stats.auto_sample_size);
PL/SQL 처리가 정상적으로 완료되었습니다.
Oracle 11g에서 DBMS_STATS.AUTO_SAMPLE_SIZE의 작동형태는 다음 URL에서 참조
https://blogs.oracle.com/optimizer/entry/how_does_auto_sample_size
이번에는 시스템과 관련된 통계 정보를 생성해 보자.
DBMS_STATS를 이용하여 CBO(cost based optimizer)에게 system performance 통계정보를 제공 할 수 있는데 이 패키지는
CPU 사용과 I/O 퍼센트 등의 정보를 통계정보 생성시 추가한다. dbms_stats.gather_system_stats 프러시저를 이용하고 파
라미터는 다음과 같다.
Gathering_mode : 통계 정보에 대한 수집을 특정한 시기 또는 기간에 하는 경우에는 interval 이나 start/stop 값을 주면 되
고 noworkload라고 하면 시스템은 통계 정보를 general하게 수집한다.
Interval : Gathering_mode에서 interval이라고 한 경우에만 사용한다.
Stattab : 시스템의 통계 정보가 모아질 테이블을 기술한다.
Statown : 시스템의 통계 정보가 모아질 테이블의 Owner를 기술한다. (현재 패키지를 실행 할 Schema와 다를 경우에 기술)
DBMS_STATS.gather_system_stats를 사용하기 전에 job_queue_processes 매개변수를 SET 시켜야 하는데 기본값은 0, 양수
값으로 세팅해야 한다. 그렇지 않으면 gather_system_stats 프러시져가 동작하지 않을 수 있다. 현재 세션에서 이 값을 다
이나믹하게 설정하려면 alter system set job_queue_processes = 20 이라고 하면 된다.
SQL> begin
dbms_stats.gather_system_stats (
gathering_mode => 'interval',
interval => 60, //분단위
stattab => 'stat_tab',
statown => USER);
end;
/
PL/SQL 처리가 정상적으로 완료되었습니다.
감사합니다.
탑크리에듀 교육센터
02-851-4790
www.topcredu.co.kr

Más contenido relacionado

Destacado

Destacado (6)

#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교육/오라클교육
 
#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교육학원/오라클교육/자바교육/닷넷교육학원추천)
 
오라클강의/자바강의/닷넷강의/자마린교육/아두이노교육학원추천_#13.SQL초보에서 Schema Objects까지
오라클강의/자바강의/닷넷강의/자마린교육/아두이노교육학원추천_#13.SQL초보에서 Schema Objects까지오라클강의/자바강의/닷넷강의/자마린교육/아두이노교육학원추천_#13.SQL초보에서 Schema Objects까지
오라클강의/자바강의/닷넷강의/자마린교육/아두이노교육학원추천_#13.SQL초보에서 Schema Objects까지
 
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 Framework & MyBatis_ 스프링프레임워크 & 마이바티스/ 구로오라클학원/ 구로자바학원/ 자바학원/ 오라클학원/ 구...
Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스/ 구로오라클학원/ 구로자바학원/ 자바학원/ 오라클학원/ 구...Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스/ 구로오라클학원/ 구로자바학원/ 자바학원/ 오라클학원/ 구...
Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스/ 구로오라클학원/ 구로자바학원/ 자바학원/ 오라클학원/ 구...
 
Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스 /구로오라클학원/ 구로자바학원/ 구로디지털단지역
Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스 /구로오라클학원/ 구로자바학원/ 구로디지털단지역Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스 /구로오라클학원/ 구로자바학원/ 구로디지털단지역
Spring Framework & MyBatis_ 스프링프레임워크 & 마이바티스 /구로오라클학원/ 구로자바학원/ 구로디지털단지역
 

Más de 탑크리에듀(구로디지털단지역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분거리)
 

Más de 탑크리에듀(구로디지털단지역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(안드로이드학원/안드로이드교육/안드로이드강좌/안드로이드기업출강]
 

DBMS_STATS 패키지 사용하기(국비지원교육, 오라클교육, 오라클국비지원학원, 추천오라클교육, 추천오라클학원, SQL학원, SQL교육 국비지원, 고용노동부, 환급과정, IT학원, 교육, 강좌, 추천강좌, 자바교육, 자바 학원)

  • 1. Oracle Hint, Tuning 강좌 탑크리에듀 교육센터
  • 2. 1.3 DBMS_STATS 패키지 사용하기 Optimizer Statistics(옵티마이저 통계)는 데이터베이스 모든 오브젝트에 대한 자료를 모아 기술한 통계인데 데이터 딕셔너리(Data Dictionary)에 저장되며 이 통계정보를 바탕으로 오라클 옵티마이저는 SQL문장 실행을 위한 효율적인 실행계획을 만들어 낸다. 오라클은 테이블이나 인덱스와 같은 데이터베이스 오브젝트에 대한 통계 정보 생성, 삭제, 익스포, 임포트를 용이하게 하기 위해 DBMS_STATS 패키지를 제공하는데 이 패키지를 이용하면 테이블이나 인덱스의 모든 데이터를 근간으로 통계 정보를 생성할 수 있다. 대용량의 테이블이라면 모든 데이터를 가지고 액세스 경로를 추측하는 것보다 샘플링 데이터를 가지고 추측하는 것이 훨씬 용이하다. 대체로 샘플링 데이터는 5% 이하로 ROW나 BLOCK에 만들며 DBMS_STATS 패키지의 automatic sampling 프러시저를 이용하면 된다. 통계정보 수집용 테이블 생성은 DBMS_STATS 패키지의 create_stat_table 프러시저를 이용하여 만들면 된다. DBMS_STATS 패키지에는 몇 개의 유용한 프러시저가 있는데 아래와 같다. gather_database_ stats: 데이터베이스의 모든 Object에 대한 통계 정보 생성. gather_schema_ stats: 해당 스키마의 모든 Object에 대한 통계 정보 생성. gather_table_stats : 테이블과 그 테이블과 연관된 인덱스에 대한 통계 정보 생성. gather_index_stats : 인덱스에 대해 통계 정보를 생성.
  • 3. 여기에서 사용된 인자는 접속한 계정, 통계정보 수 집용 테이블 이름, 테이블스페이스 이름이다. SQL> execute dbms_stats.create_stat_table(USER, 'stat_tab', 'users'); PL/SQL 처리가 정상적으로 완료되었습니다. -- 아래는 현재 로그온한 스키마 계정과 EMP라는 테 이블에 대해 통계 정보를 생성했다. SQL> execute dbms_stats.gather_schema_stats(ownname => USER); PL/SQL 처리가 정상적으로 완료되었습니다. SQL> execute dbms_stats.gather_table_stats(USER,'emp'); PL/SQL 처리가 정상적으로 완료되었습니다. -- 데이터 딕셔너리에서 생성된 통계정보 확인, LAST_ANALYZED 칼럼을 확인하라 SQL>SELECT * FROM USER_TABLES WHERE TABLE_NAME = ‘EMP’; --테이블 내의 인덱스된 컬럼 들 및 대상 테이블과 연관된 모든 인덱스에 대한 통계 정보 생성 SQL> begin dbms_stats.gather_table_stats( USER, 'myemp1', method_opt =>'for all indexed columns', cascade => true); end; / -- 생성된 테이블 통계정보 확인 SQL> SELECT NUM_ROWS, BLOCKS, EMPTY_BLOCKS, AVG_ROW_LEN FROM USER_TAB_STATISTICS WHERE TABLE_NAME = 'MYEMP1'; NUM_ROWS BLOCKS EMPTY_BLOCKS AVG_ROW_LEN ------------------------------------------------------------------- 10000002 92328 472 82 -- 생성된 칼럼 통계정보 확인 SQL> SELECT COLUMN_NAME, NUM_DISTINCT, NUM_NULLS FROM USER_TAB_COL_STATISTICS WHERE TABLE_NAME = 'MYEMP1'; COLUMN_NAME NUM_DISTINCT NUM_NULLS ---------------------------------------------------------------------- EMPNO 10000002 0 ENAME 10000002 0 DEPTNO 4 0 ADDR 10000002 0 SAL 6039040 0 JOB 6 0 COMM 989888 8333335 SUNGBYUL 2 0 HIREDATE 1745792 0 OUTDATE 1 8333335 MGR 6 2499998 11 개의 행이 선택되었습니다.
  • 4. 위 예문의 경우 자동으로 테이블과 인덱스의 모든 데이터에 대해 통계 정보가 계산된다. 만약 만들 통계 정보가 단순히 샘플이거나 큰 테이블의 모든 데이터가 아니라 일부의 레코드에 대해 제한하는 경우에는 dbms_stats.auto_sample_size를 이용하면 된다. -- 현재 MYEMP1 테이블의 통계정보를 STAT_TAB으로 EXPORT /* DBMS_STATS.EXPORT_TABLE_STATS ( ownname VARCHAR2, tabname VARCHAR2, partname VARCHAR2 DEFAULT NULL, -- 파티션 이름 stattab VARCHAR2, -- 통계정보를 저장하기 위한 통계정보 테이블 statid VARCHAR2 DEFAULT NULL, cascade BOOLEAN DEFAULT TRUE, -- 인덱스 통계정보도 같이 임포트 할지의 여부 statown VARCHAR2 DEFAULT NULL -- stat table schema name ); */ SQL> execute dbms_stats.export_table_stats (USER, 'myemp1',null,'stat_tab'); PL/SQL 처리가 정상적으로 완료되었습니다. -- 딕셔너리와 STAT_TAB의 통계정보의 차이를 비교, 현재는 차이가 없다. SQL> select * from table(dbms_stats.diff_table_stats_in_stattab(USER,'myemp1','stat_tab')); REPORT MAXDIFFPCT -------------------------------------------------------------------------------- ---------- ################################################### 0 -- 통계정보 수집용 테이블 삭제 SQL> execute dbms_stats.drop_stat_table(USER,'stat_tab'); PL/SQL 처리가 정상적으로 완료되었습니다.
  • 5. SQL> execute dbms_stats.gather_schema_stats(ownname => USER, estimate_percen => dbms_stats.auto_sample_size); PL/SQL 처리가 정상적으로 완료되었습니다. Oracle 11g에서 DBMS_STATS.AUTO_SAMPLE_SIZE의 작동형태는 다음 URL에서 참조 https://blogs.oracle.com/optimizer/entry/how_does_auto_sample_size 이번에는 시스템과 관련된 통계 정보를 생성해 보자. DBMS_STATS를 이용하여 CBO(cost based optimizer)에게 system performance 통계정보를 제공 할 수 있는데 이 패키지는 CPU 사용과 I/O 퍼센트 등의 정보를 통계정보 생성시 추가한다. dbms_stats.gather_system_stats 프러시저를 이용하고 파 라미터는 다음과 같다. Gathering_mode : 통계 정보에 대한 수집을 특정한 시기 또는 기간에 하는 경우에는 interval 이나 start/stop 값을 주면 되 고 noworkload라고 하면 시스템은 통계 정보를 general하게 수집한다. Interval : Gathering_mode에서 interval이라고 한 경우에만 사용한다. Stattab : 시스템의 통계 정보가 모아질 테이블을 기술한다. Statown : 시스템의 통계 정보가 모아질 테이블의 Owner를 기술한다. (현재 패키지를 실행 할 Schema와 다를 경우에 기술)
  • 6. DBMS_STATS.gather_system_stats를 사용하기 전에 job_queue_processes 매개변수를 SET 시켜야 하는데 기본값은 0, 양수 값으로 세팅해야 한다. 그렇지 않으면 gather_system_stats 프러시져가 동작하지 않을 수 있다. 현재 세션에서 이 값을 다 이나믹하게 설정하려면 alter system set job_queue_processes = 20 이라고 하면 된다. SQL> begin dbms_stats.gather_system_stats ( gathering_mode => 'interval', interval => 60, //분단위 stattab => 'stat_tab', statown => USER); end; / PL/SQL 처리가 정상적으로 완료되었습니다.