오라클 SQL Trace 추출 스크립트



 

alter session set tracefile_identifier='test';  -- User Trace를 찾기 쉽게 네이밍

alter session set timed_statistics = true;

-- alter session set statistics_level = all;

alter session set max_dump_file_size = unlimited;

alter session set events '10046 trace name context forever, level 12';

-- alter session set "_rowsource_execution_statistics"=true;

set lines 600;


-- SQL TRACE TARGET SQL

Select count(*) from scott.test;


alter session set events '10046 trace name context off';


SELECT p.osuser, p.process cospid, p.spid sospid, p.username dbuser, p.sid, p.serial#,

  'tkprof '||d.value||'/'||lower(rtrim(i.instance,chr(0)))||'_ora_'||p.spid||'_great.trc'

    ||' ./'||lower(rtrim(i.instance,chr(0)))||'_ora_'||p.spid||'.prf sys=no' tkprof_cmd,

  'cat ./'||lower(rtrim(i.instance,chr(0)))||'_ora_'||p.spid||'.prf' view_cmd

FROM

  (SELECT s.osuser, s.process, p.spid, s.username, s.sid, s.serial#

  FROM v$session s, v$process p

  WHERE s.paddr = p.addr and s.sid = (select distinct sid from v$mystat)

  ) p,

  (SELECT instance

  FROM v$thread

  WHERE thread# = (SELECT to_number(value)+1 FROM v$parameter WHERE name = 'thread')

  ) i,

  (SELECT value FROM v$parameter WHERE name = 'user_dump_dest'

  ) d;





블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,


PPM(Project Portfolio Management)



1. PPM(IT 거버넌스 구현의 핵심 프로세스)의 개요

 1-1. 개념

  - 단일 프로젝트 뿐만 아니라 다수의 프로젝트를 진행할 경우 , 전체적인 IT 포트폴리오를 정립해 프로젝트의 우선 순위를 정하고 이에 대한 자원을 효율적으로 배분하며 모니터링 하는 등 전체적인 관리를 수행하기 위한 방법론 및 솔루션

  - IT 프로젝트 및 IT 자산의 최적 조합을 구성, 투자 대비 비즈니스 효과를 극대화를 유도하기 위한 체계

 1-2. 필요성, 도입목적

  - 필요성: 경영진의 경영전략 수립을 위한 중요한 의사결정 정보제공, 프로세스 개선을 통한 경영혁신 가속화

  - 도입 목적: 조직 목표에 부합하는 프로젝트 진행과 자원 및 프로젝트의 효율적이고 효과적인 관리


2. PPM의 구성도, 구성요소

 2-1. PPM의 구성도

 

 2-2. PPM의 구성요소

 1) 포트폴리오관리 : 포괄적인 포트폴리오 기획을 통해 기업이 올바른 투자결정을 할 수 있도록 지원

 2) 프로세스관리 : 그래픽 워크플로우를 확용해 비즈니스 프로세스 간의 상호작용을 지원하고, 문서나 자원, 아이디어의 흐름을 시작적으로 추적하고 제언

 3) 수요관리 : 프로젝트나 서비스의 요청, 전략적 이니셔티브는 물론 일상적인 지원 요청과 같은 IT에 관한 모든 수요를 포착하고 분류, 승인

 4) 프로젝트관리: 기업의 베스트 프랙티스나 표준을 준수하도록 프로젝트를 기획하고 예측해 그에 맞는 에산을 책정하고 자원을 할당하는 역할

 5) 리소스 관리 : 각 프로젝트 마다 적절한 팀 구성이 되도록 각 업무 요구에 맞춰 기술과 자원을 지원

 6) 재무관리 : 프로젝트와 관련된 수입이나 지출을 관리하기 위한 기능 제공 


3. PPM의 고려사항

 - 인하우스 방식으로 기 개발된 PPM 모둘과의 원만한 통합 필요

 - IT Governance를 구성하는 핵심 프로세스 중 하나로 PPM을 인시가고 제춤의 구축보다는 프로세스의 성숙도를 높이는데 주력





블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,


클라우드컴퓨팅의 6대 핵심기술


1. 클라우드컴퓨팅의 6대 핵심기술의 개요

 1-1. 서비스 처리 및 관리측면

 1) 분산 데이터 저장 : 네트워크상에서 데이터를 조회, 저장, 관리할 수 있는 기술 

   - 분산 파일 시스템 : CODA, Andrew, 아파치 하둡, Redhat GFS 등

   - 분산데이터 관리 시스템 : 아파치, HBase, HyperTable 등

 2) 분산 컴퓨팅 : 네트워크에 연결된 컴퓨터들의 처리 능력을 이용해 방대한 계산문제를 신속하게 처리하는 기술

   - 메시지 전달 모델 : MPI, PVM 등

   - 분산 공유 메모리 모델 : Linda, TupleSpace, JavaSpace 등

   - 데이터 병렬 모델 : MapReduce, 아파치 하둡 등

 3) 서비스 관리 : 서비스를 운영하는데 필요한 무중단 방안 및 실시간 자원 배분 처리 기술

   - 클러스터 관리 기술

   - 프로비저닝 및 스케줄링


 1-2. 인프라 구성 및 보안 측면

 4) 가상화 : 물리적으로 다른 시스템을 논리적으로 통합하거나 하나의 시스템을 논리적으로 분할해 자원을 효율적으로 사용하는 기술

   - 서버 가상화 : Hypervisor, Bare-metal, Hosted

   - 스토리지 가상화 : 서버기반, 네트워크 기반, 스토리지 기반

   - 네트워크 가상화 : VLAN, MPLSL3VPN, 호스트 가상화, 링크 가상화

 5) 서버 구성 기술 : 실시간으로 서버를 동적으로 구성하고 변경작업을 수행하기 위한 기술

   - 그리드 : Grid Network, Globus

   - 파티셔닝 : 물리적, 논리적, 서버 프로세서 파티셔닝

   - 블레이드 서버 : Processing Blade, Switch Blade 등

 6) 보안 : 실시간으로 변경되는 모든 자원들에 대하여 기밀성, 가용성, 무결성을 제공하기 위한 기술

   - 플랫폼 보안 기술 : DAC, MAC, RBAC, PKI, SSO 등

   - 스토리지 보안기술 : 대칭키기반(DES, AES), 공개키 기반(RSA). 프라이버시 보존형 데이터마이닝 (PPDM) 등

   - 네트워크 보안기술 : SSL, IPSec, VPN 등

   - 다말 보안기술 : TPM, CryptoCell 등


2. 클라우드 컴퓨팅의 6대 핵심기술 적용 사례

 2-1. Amazon EC2 플랫폼

  - 사용자에게 가상의 컴퓨팅 자원을 제공하고 사용한 만큼 비용을 청구하는 서비스 플랫폼 제공


 2-2. Amazon EC2 플랫폼 적용요소

  1) EC2 Instance : OS와 어플리케이션이 실행되는 최소 컴퓨팅 자원단위로써 Xen 기반의 가상머신

  2) AMI : Amazon Machine Image, OS와 애플리케이션을 포함한 부팅 가능한 루트 디스크 이미지

  3) SimpleAPI : 표준 인터넷 프로토콜(HTTP 80)을 통해 제공되는 모든 기능에 접근하기 위한 API





블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,


연봉탐색기 (연봉만 입력하면 연봉순위와 각종 고급정보가 한눈에)



새해가 오면 항상 떠오르는 키워드인 "연봉 탐색기"에 대하여 알아보려한다.

한국납세자연맹에서 2016년 이후부터 현재까지의 데이터로 나의 연봉이 어느정도의 위치에 있는지 알수 있도록 제공하고 있다.



굉장히 많은 사람들이 자신의 연봉이 현재 어느정도에 해당되는지 알고 싶어했다는거을 알수 있는데, 연봉순위에 대한 정보를 보려면 해당 사이트에 가입을 해야한다는 다소 불편한 점이 있는건 사실이다.


http://www.koreatax.org/tax/taxpayers/salary4/salary-01.php

사이트에 접근하게되면 당신의 연봉을 적을수 있는 창이 뜨며, 대한민국에서의 자신의 연봉 순위를 손쉽게 확인해볼 수 있다.




블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,


SW 공학



1. SW 공학의 개요

 1-1. 정의

  - SW 개발, 운영, 유지보수, 폐기까지의 체계적인 접근을 위해 수학적, 과학적, 공학적 원리 및 방법을 적용하는 학문

 1-2. 특징

  - 원리: 경험, 시행착오의 결과를 체계화

  - 기법: 프로세스 수행의 순차적 절차

  - 언어: SW를 표현 실체화 하는 도구

  - 도구: SW 개발을 돕는 소프트웨어


2. SW공학의 원리 개념도, 요소

 2-1. SW공학의 원리


 2-2. SW공학의 원리 요소

 - 정형성과 엄격 : 정형화된 명세 및 엄격한 설계 (UML)

 - 관심사 분리 : 단계별, 역할별로 문제를 분리하여 해결 (설계/구현분리, AOP)

 - 모듈화 : 모듈간 결합도는 낮추고, 모듈내 응집도는 높임 (Class, 컴포넌트, 서비스)

 - 추상화 : 각 부분의 핵심정보 이외 생략 (설계 패턴

 - 변환예측 : 변화가 예상되는 부분의 분리 설계 (3 Tire / CS(Client & Server) /SOA

 - 일반화 : 구체적인 사실에서 일반성 추출 (CBD)

 - 점진화 : 개략적인 단계부터 구체적인 단계로 진화 (단위 -> 통합 TEST)

블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,


암달의 법칙(병렬처리의 한계, 성능평가)


1. 암달의 법칙의 개요

 1-1. 정의

  - 프로그램은 병렬처리가 가능한 부분과 병렬처리가 불가능한 순차처리 부분으로 구성되므로 프로세서를 아무리 병렬화하더라도 더 이상 성능이 향상되지 않는 한계가 존재한다는 법칙

 1-2. 의미

  - 병렬처리 한계: 병렬처리를 이용하여 얻을 수 있는 속도 향상에 대한 한계 제시

  - 성능평가: 병렬화가 가능한 부분, 불가능한 부분, 처리기 숫자를 고려한 성능 평가 기준 제시

  - 성능한계: 성능의 한계는 캐시, 메모리, 버스와 같이 제한된 자원을 프로세서가 서로 점유하려고 쟁탈하는 오버헤드에 의한 발생


2. 암달의 법칙의 개념도, 사례

 2-1. 암달의 법칙의 개념도

  - 병렬처리: 프로세서의 수가 증가하더라도 실행 속도 향상을 제한하는 요소를 갖고 있다는 법칙

  - 순차처리: 코드 비율이 0.05인 경우 프로세서의 수를 향상시키더라도 최대 속도 향상은 20%로 제한됨


 2-2. 사례

  - Sp(성능향상) = 1 / ((1-P) + P/S) (P: 병렬화 비율, S: 속도향상)

  - 어떠한 작업의 40%에 해당하는 부분의 속도를 2배로 늘릴 수 있다면, P는 0.4이고 S는 2이므로 성능 향상은 1 / ((1-0.4)+0.4/2) = 1.25


3. 암달의 법칙 활용

 1) S/W처리 효율 예측 : 단위 시간당 트랜잭션처리 효율성 예측에 활용

 2) H/W 병렬구성 효율성 예측 : CPU 병렬 구성의 효율성 모델링 도구로 활용

 (S= 1/ ((1-p) + p / n) : p: 동시에 처리 할 수 있는 작업의 비율, n : 프로세서의 수

 


블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,

Oracle 기본 점검 스크립트



column timecol new_value timestamp

column spool_extension new_value suffix

select to_char(sysdate,'yymmdd') timecol, '_mon.txt' spool_extension from sys.dual;

 

column output new_value instancename

select '_' || value output from v$parameter where name = 'instance_name';

 

spool &&timestamp&&instancename&&suffix

 

alter session set sort_area_size=50000000;

 

prompt *********************************************************************************

prompt *                                                                               *

prompt *                                   BASE  INFO                                  *

prompt *                                                                               *

prompt *********************************************************************************

 

set head off

 

select ' HOST_NAME     : '||HOST_NAME from v$instance;

select ' Database Name : '||name from v$database;

select ' Instance Name : '||INSTANCE_NAME from v$instance;

select ' Global Name   : '||value from v$parameter where name='global_names';

select ' Version       : '||VERSION from v$instance;

select ' Startup Time  : '||STARTUP_TIME from v$instance;

select ' Archive       : '||ARCHIVER from v$instance;

col comp_id for a10

col comp_Name for a30

col version for a15

set head on

 

SELECT substr(comp_id,1,15) comp_id, status,

substr(version,1,10) version,

substr(comp_name,1,30) comp_name

FROM dba_registry

ORDER BY 1;

 

set head off

 

 

PROMPT

PROMPT *********************************************************************

PROMPT **     Buffer Cache Hit Ratio Statistics                           **

PROMPT **                                                                 **

PROMPT *********************************************************************

 

SET LINESIZE 70

COL "Get1" FORMAT 999,999,999,999,999 HEADING "Consistent Gets"

COL "Get2" FORMAT 999,999,999,999,999 HEADING "DB Block Gets"

COL "Get3" FORMAT 999,999,999,999,999 HEADING "Physical Reads"

COL "Hit"  FORMAT 999.99              HEADING "Hit|Ratio"

 

select sum(decode(name, 'consistent gets', value, 0)) "Get1",

       sum(decode(name, 'db block gets', value, 0)) "Get2",

       sum(decode(name, 'physical reads', value, 0)) "Get3",

       round((sum(decode(name, 'consistent gets', value, 0)) +

       sum(decode(name, 'db block gets', value, 0)) -

       sum(decode(name, 'physical reads', value, 0))) /

       (sum(decode(name, 'consistent gets', value, 0)) +

sum(decode(name, 'db block gets', value, 0))) * 100, 2) "Hit"

from sys.v_$sysstat;

 

PROMPT

PROMPT *********************************************************************

PROMPT **     Library Cache Hit Ratio Statistics                          **

PROMPT **                                                                 **

PROMPT *********************************************************************

SET LINESIZE 70

COL "Executions" FORMAT 999,999,999,999,999 HEADING "Executions"

COL "EH"        FORMAT 999,999,999,999,999 HEADING "Executions Hits"

COL "Hit1"       FORMAT 999.99              HEADING "Hit|Ratio"

COL "Misses"     FORMAT 999,999,999         HEADING "Misses"

COL "Hit2"       FORMAT 999.99              HEADING "Hit|Ratio"

 

select sum(pins) "Executions", sum(pinhits) "EH",

       round((sum(pinhits) / sum(pins)) * 100, 3) "Hit1",

       sum(reloads) "Misses",

       round((sum(pins) / (sum(pins) + sum(reloads))) * 100, 3) "Hit2"

  from sys.v_$librarycache;

 

 

PROMPT

PROMPT *********************************************************************

PROMPT **     Data Dictionary Cache Hit Ratio Statistics                  **

PROMPT *********************************************************************

 

SET LINESIZE 45

COL "Gets"  FORMAT 999,999,999,999,999 HEADING "Gets"

COL "Cache" FORMAT 999,999,999,999     HEADING "Cache Missess"

COL "Hit"   FORMAT 999.99               HEADING "Hit|Ratio"

 

select sum(gets) "Gets", sum(getmisses) "Cache",

       round((1 - (sum(getmisses) / sum(gets))) * 100, 2) "Hit"

  from sys.v_$rowcache;

 

PROMPT

PROMPT *********************************************************************

PROMPT **     Sort Statistics                                               **

PROMPT **                                                                 **

PROMPT *********************************************************************

 

SET LINESIZE 80

COL name  FORMAT A30             HEADING "Sort Parameter"

COL value FORMAT A30                 HEADING "Value"

 

select name, value

  from v$parameter

 where name like '%sort%';

 

PROMPT *********************************************************************

PROMPT **   Sort Ratio 가 < 1% 이하                                       **

PROMPT *********************************************************************

 

SET LINESIZE 60

COL Disk  FORMAT 999,999,999,999,999

COL Mem   FORMAT 999,999,999,999,999

COL Ratio FORMAT 999.99 HEADING "Sort|Ratio"

 

select disk.value Disk, mem.value Mem,

       round((1 - (mem.value )/(mem.value+disk.value))*100,2) Ratio

  from v$sysstat mem, v$sysstat disk

 where mem.name = 'sorts (memory)'

   and disk.name = 'sorts (disk)';

 

PROMPT

PROMPT

PROMPT *********************************************************************

PROMPT **     Tablespace Statistics                                       **

PROMPT **                                                                 **

PROMPT *********************************************************************

 

SET LINESIZE 120

COL tablespace_name FORMAT A20            HEADING "Tablespace Name"

COL "Bytes"         FORMAT 999,999,999.99 HEADING "TBS Size(MB)"

COL "Free"          FORMAT 999,999.99     HEADING "Free Size(MB)"

COL "Percent"       FORMAT 999.99         HEADING "Usage(%)"

COL "Used"          FORMAT 999,999,999.99 HEADING "Used(MB)"

COL "FreeP"         FORMAT 999.99         HEADING "Free(%)"

 

select * from (

 select ddf.tablespace_name,

       ddf.bytes/1024/1024 "Bytes",

       dfs.bytes/1024/1024 "Free",

       round(((ddf.bytes - dfs.bytes) / ddf.bytes) * 100, 2) "Percent"

from   ( select tablespace_name, sum(bytes) bytes

         from   dba_data_files

         group by tablespace_name) ddf,

       ( select tablespace_name, sum(bytes) bytes

         from   dba_free_space

         group by tablespace_name) dfs

where  ddf.tablespace_name = dfs.tablespace_name

order by ((ddf.bytes-dfs.bytes)/ddf.bytes) desc)

where rownum < 6

;

 

 

PROMPT

PROMPT

PROMPT *********************************************************************

PROMPT **     Datafile I/O Statistics                                     **

PROMPT **                                                                 **

PROMPT *********************************************************************

PROMPT

PROMPT

 

 

set lines 120

 

col File_name       form a52        heading 'File name'

col tablespace_name form a20        heading 'Tablespace'        

col br              form 99,999,999 heading 'BLK Read'

col bw              form 99,999,999 heading 'BLK Write'

col Weight          form 999.99     heading 'Weight|(%)'

 

select * from (

select tablespace_name,file_name,

       round((phyblkrd+phyblkwrt*1.2)/z.sum*100, 2) "Weight"

  from dba_data_files df,

       v$filestat     fs,

       (select sum(phyblkrd+phyblkwrt*1.2) as sum from v$filestat) z

 where df.file_id = fs.file#   order by 3 desc)

where rownum<6

;

 

 

 

PROMPT

PROMPT *********************************************************************

PROMPT **     Object Extents > 20                                         **

PROMPT *********************************************************************

 

col Owner       form a9

col Object_name form a30

col Type        form a1 trunc

col Tablespace  form a12

col Size(KB)    form 999,999,999

col Init(KB)    form 999,999

col Next(KB)    form 999,999

col Ext         form 999,999

 

col Owner       form a9

col Object_name form a30

col Type        form a1 trunc

col Tablespace  form a15

col Size(KB)    form 999,999,999

col Init(KB)    form 999,999

col Next(KB)    form 999,999

col Ext         form 999,999

select * from (

select  Owner,

        segment_name Object_name,

        segment_type Type,

        tablespace_name Tablespace ,

        Bytes/1024 "Size(KB)",

        initial_extent/1024 "Init(KB)",

        next_extent/1024 "Next(KB)",

        extents Ext

  from dba_segments

 where owner != 'SYS' and owner != 'SYSTEM'

   and extents > 20

 order by 8 desc, 1,2,3,4)

where rownum < 6;

 

PROMPT

PROMPT

PROMPT *********************************************************************

PROMPT **     Tablespace SIZE                                     **

PROMPT **                                                                 **

PROMPT *********************************************************************

PROMPT

PROMPT

 

set head on

 

set trimspool on

column totalsize heading "total size(M)"

column usedsize heading "used size(M)"

column freesize heading "free size(M)"

column tablespace_name format a20

column totalsize format 999,999.9

column usedsize format 999,999.9

column freesize format 999,999.9

column used_percent format 999.9

 

 

select a.tablespace_name, a.totalsize,

       nvl(b.usedsize,0) usedsize,nvl(round(((b.usedsize/a.totalsize)*100),1),0) Used_Percent,c.freesize

  from ( select tablespace_name, sum(bytes)/1024/1024 totalsize

           from dba_data_files

          group by tablespace_name ) a,

       ( select tablespace_name, sum(bytes)/1024/1024 usedsize

           from dba_segments

          group by tablespace_name ) b,

       ( select tablespace_name, sum(bytes)/1024/1024 freesize

           from dba_free_space

          group by tablespace_name ) c

 where a.tablespace_name = b.tablespace_name(+)

   and a.tablespace_name = c.tablespace_name(+)

order by 1;

 

set head off

 

 

prompt *******************************************************

prompt *                                                     *

prompt *        Cache Fusion For  RAC

prompt *                                                     *

prompt *******************************************************

prompt

 

set linesize 100

col name format a16

col kind format a10

col partition_name format a10

 

column partition_name for a15

select inst_id,name, substr(kind,1,10) kind, partition_name,

       sum(xnc) xnc,sum(FORCED_READS) reads, sum(FORCED_writes) writes

       from gv$cache_transfer

       group by inst_id,name, kind, partition_name

       having sum(xnc) > 1

       order by 1,4

;

prompt

prompt *************************************************************

prompt * RESOURCE                                                  *

prompt *************************************************************

prompt                                

 

set head on

 

col RESOURCE_NAME for a10

col CURRENT_UTILIZATION for 9999

col MAX_UTILIZATION for 9999

col INITIAL_ALLOCATION for a10

col LIMIT_VALUE for a10

 

select * from v$resource_limit where resource_name in ('processes', 'sessions');

 

set head off

 

Prompt

prompt 2. Data file total size

 

select ' TOTAL DATA FILE SIZE  : '||sum(bytes)/1024/1024||' MB' FROM v$datafile

union

SELECT ' USED SIZE             : '||sum(bytes)/1024/1024||' MB' FROM dba_segments

union

SELECT ' FREE SIZE             : '||sum(bytes)/1024/1024||' MB' FROM dba_free_space;

prompt

set head on

 

 

prompt

prompt 3. Backup check

 

col time for a80

select 'Hot Backup : '||to_char(min(b.time),'yyyy-mm-dd hh24:mi:ss')||' ~ '||to_char(max(b.time),'yyyy-mm-dd hh24:mi:ss') Time

from v$backup b, v$datafile d

where b.file#=d.file#

and b.status = 'NOT ACTIVE';

 

select *

from v$backup b, v$datafile d

where b.file#=d.file#

and b.status != 'NOT ACTIVE';

 

set head off

 

prompt 

prompt 

prompt 

prompt *************************************************************

prompt *   NEXT CHECK                                              *

prompt *************************************************************

prompt 

 

prompt alert log and trace file check

show parameter dump

prompt

prompt archive log list

archive log list;

Prompt

 

prompt 

prompt 

prompt 

prompt *************************************************************

prompt *   NLS_CHARACTERSET                                              *

prompt *************************************************************

prompt 

 

prompt

select * from NLS_DATABASE_PARAMETERS where parameter = 'NLS_CHARACTERSET';

Prompt

 

prompt 

prompt 

prompt 

prompt *************************************************************

prompt *   NLS_CHARACTERSET                                              *

prompt *************************************************************

prompt 

 

prompt

Select * from v$version;

Prompt

 

prompt *************************************************************

prompt *                                                  *

prompt *************************************************************

 

select name, state, type, total_mb, free_mb from v$asm_diskgroup;

spool off 



블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,



DBMS Optimizer(옵티마이저)


1. DBMS Optimizer (옵티마이저)의 개요

 1-1. 정의

 - 사용자의 다양한 요구에 따라 SQL문의 문법적 오류를 확인하고 가장 빠른 데이터 엑세스 경로(Plan)을 생성하고 선택하여 최적의 경로를 찾아주는 역할을 하는 DBMS의 핵심 엔진

 - 옵티마이저에 영향을 미치는 요소 : SQL 형태, 연산자 형태, 힌트사용, 분산DB, 인덱스/클러스터링, 통계정보, 옵티마이저 모드, DBMS 버전


 1-2. 목표

 - 전체 처리속도 최적화

 - 최초 응답속도 최적화


2. DBMS Optimizer (옵티마이저)의 개념도 및 요소 설명, 종류

 2-1. DBMS Optimizer (옵티마이저)의 개념도

2-2. DBMS Optimizer (옵티마이저)의 요소 설명

 1) Parse : 구문, 보안, Object 등의 체크 및 Simple Transformation을 수행

 2) Query Rewrite : 서브질의와 부의 병합을 수행하고, OR Expansion 작업을 수행

 3) Query Optimization : 질의에 대한 엑세스 경로를 결정

 4) QEP Generation : 질의실행계획 (질의를 실행하는데 필요한 상세 정보를 생성)

 5) Query Execution : QEP에 따라 SQL 문장을 실행


 2-3. DBMS Optimizer (옵티마이저)의 종류

 1) RBO : 사전에 실행할 SQL문의 순서를 규칙으로 설정하여 그 규칙에 따라 SQL문의 실행 순서를 결정하는 옵티마이저

 2) CBO: 실행 처리 방법들에 대한 비용을 산정하여 그중에 가장 적은 비용이 들어가는 처리방법들을 선택하는 옵티마이저


3. DBMS Optimizer (옵티마이저)의 발전방향

 1) RBO의 한계 : 추출해야하는 쿼리나 데이터가 복잡해지면서 단순 정해진 규칙대로 수행에 한계가 발생되어 CBO를 많이 사용함

 2) Self Learning Optimizer : 과거에는 단순히 오프젝트 및 시스템 통계로 부터 산정한 비용만으로 실행계획을 수립했으나 앞으로는 예상치와 수행결과를 비교하여 오류를 스스로 수정하여 최적화를 도출하는 옵치마이저로 발전 예상


블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,