반응형

-- 튜닝 수업 환경 설정

(대소문자 구분을 끄기위해서 설정)

alter system set sec_case_sensitive_logon=FALSE;

 

ALTER USER SYSTEM IDENTIFIED BY MANAGER;

DROP USER SCOTT CASCADE;

 

CREATE USER SCOTT IDENTIFIED BY TIGER

 

GRANT CONNECT,RESOURCE,DBA TO SCOTT;

 ( pfile일 경우 spfile로 변경 )

 

1. 대용량 샘플 dmp 파일 imp 수행

 

[oracle@localhost ~]$ imp system/MANAGER full=y file=NEW_SCOTT_10.DMP;

 

-- imp 확인 (20table)

SELECT * FROM DBA_TABLES

WHERE OWNER='SCOTT';

 

20 rows selected.

 

-- public synonym 제공

select 'create public synonym '||TABLE_NAME||' for '||OWNER||'.'||TABLE_NAME||';'

from dba_tables

where owner='SCOTT';

 

EXPLAIN PLAN 명령어

 

SQL문의 실행계획과 상태 값을 제공하는 명령어

 

1) 옵티마이저의 유형 (공식기반 또는 비용기반)

2) 옵티마이저에 의해 결정된 실행 계획

3) 실행 계획의 선택 기준(비용계싼 결과 등)

4) SQL문을 실행하면서 사용한 DB구조의 상태 값

- 사용된 데이터버퍼 캐시 블록 수

- 데이터 파일로부터 읽은 블록 수

- 네트워크를 통해 전송된 데이터의 바이트 수

- Sorting 작업 발생 시 사용된 메모리 블록 수

- 처리된 데이터 량

 

SET AUTOTRACE 명령어

 

PLAN_TABLE을 생성 후 한번만 설정해주면 SQL문이 실행될 때 마다 실행계획을 한 화면에 출력

 

 문법

SET AUTOTRACE [ ON | OFF | TRACE | TRACEONLY ]

- ON : SQL문의 실행 결과와 실행계획 그리고 통계정보를 보여주는 옵션

- OFF : 어떤 결과도 보여 주지 않음

- TRACEONLY : 실행계획과 통계정보 만을 보여줌

 

* 켜놨다면 사용후 OFF로 반드시 바꿔줘야함 (조회할때마다 뜨기때문에)

 

SQL> SET AUTOTRACE TRACEONLY;

SQL> SELECT * FROM DEPT;

*

아래부터 올라감

sorts (momory) : PGA ( PGA 사용하다 모자라면 TEMP로 넘어감 )

sorts (disk) : TEMP

 

V$SQL_PLAN

이미 실행된 SQL에 대한 실행계획을 참조할 경우 사용

Shared pool 영역에서 직접 추출된 실행 정보

영원히 보관할 수는 없음

SQL문의 HASH_VALUEADDRESS값을 알아야 함

   => V$SQL, V$SQLAREA에서 참조

-- hash_value, address 찾기

select sql_text

, hash_value

, address

from v$sqlarea

where upper(sql_text) like '%DEPT%'

 

 

 

 select id

, lpad ('', depth) || operation operation

, options

, object_name

, optimizer

, cost

from v$sql_plan

where hash_value = &1

and address = '&2'

start with id = 0

connect by ( prior id = parent_id

and prior hash_value = hash_value

and prior child_number = child_number )

order siblings by id, position;

 

 

결과 분석 (Execution Plan)

SQL> set autotrace traceonly

SQL> select empno, ename, job, sal, dname

from emp, dept

where emp.deptno = dept.deptno;

 

 

SQL> CREATE INDEX DEPTNO_IDX ON EMP(DEPTNO);

= > 다시조회 해도 full scan

* 인덱스를 만들어도 데이터량이 적어서 풀스캔하게됨

 

-- INDEX를 타도록 Hint 설정

select /*+index(emp DEPTNO_IDX) */

empno, ename, job, sal, dname

from emp, dept

where emp.deptno=dept.deptno;

 

 

 

 

 

1) Parsing 단계에서 Data Dictionary로 부터 얻는 테이블의 상태정보 및 통계정보를 참조하기 위해 읽는 블록 수

* 다시 조회하면 줄어듬

2) DML 문이 실행될 때 발생하는 변경 전 데이터를 잠시 저장하기 위한 임시공간

3) SQL문이 실행될 때 디스크 상에 존재하는 테이블 및 인덱스를 저장하기 위한 메모리공간

* 가장 눈여겨 봐야할 튜닝 Point!

4) 데이터가 실제로 존재하는 디스크 상의 데이터 파일로부터 읽혀진 데이터 블록 수

* 다시 조회하면 줄어듬

5) DML문을 실행했을 때 변경 전 데이터와 변경 후 데이터를 로그버퍼 영역에 백업하기 위한 블록 수

6) 클라이언트와 서버 간의 전송된 데이터를 나타냄

* 튜닝 Point가 아님

7) sorting 작업을 위해 사용한 PGA 공간

* sorts (momory) : PGA ( PGA 사용하다 모자라면 TEMP로 넘어감 )

8) sorting 작업을 위해 사용한 TEMP 사용 공간

* sorts (disk) : TEMP

==> 7,8 번이 둘다 많을시 시스템 튜닝을 고려

9) SQL문이 실행된 후 조건을 만족하는 행의 수

* 튜닝 Point가 아님

 

 

 

 

 

※ Update문 기본 튜닝

-- BIG_EMP에도 있는 사원은 COMMSAL에 더해서 LARGE_EMPSALUPDATE 하려고 한다.

-- (SQL구문을 튜닝해서 더 효과적으로 만들기)

 

(튜닝 전)

update large_emp a

set a.sal = ( select b.comm + a.sal

from big_emp b

where b.empno=a.empno);

(튜닝 후)

update large_emp a

set a.sal = a.sal + (select b.comm

from big_emp b

where b.empno=a.empno);

 

 

* consistent gets 천만건 정도 차이나는걸 볼 수 있다

 더 좋은 효과를 위해선 index를 걸어주면 1/4로 주는 걸 볼 수 있다.

'Study Note > Database' 카테고리의 다른 글

SQL*TRACE  (0) 2016.02.16
DBMS_XPLAN.DISPLAY 다량데이터 조회시 참고사항  (0) 2016.02.16
DDL  (0) 2016.02.04
DML  (0) 2016.02.04
[Tool] Orange Character Set 설정하기  (0) 2016.02.04
반응형
구글

구글이 현재 인공지능 구글 챗봇(Google chatbot)이 탑재된 모바일 메신저를 개발 중이라는 보도가 나왔다. 이 모바일 메신저는 애플의 시리처럼 챗봇과 대화로 필요한 정보를 검색하거나 음식 또는 물건을 주문하는 개인비서 역할을 하면서 메신저까지 겸하는 기능이다.

외신들에 따르면 구글은 이번 모바일 메신저 개발을 위해 적어도 1년 전부터 개발하고 있는 것으로 알려졌는데, 구글의 새로운 모바일 메신저 서비스 출시 시기는 아직 공표된 바가 없다.

구글은 모바일 메신저의 성능은 아직까지 알려진 바 없지만, 이 서비스가 현실에 실제로 적용된다면, 기상관련 정보나 레스토랑의 자세한 정보까지 모바일 메신저를 통해서 얻을 수 있을 것으로 예상된다. 월스트리트저널(WSJ)은 향후 인공지능 기술로 사용자의 취향이나 기호를 저장해 반영하는 맞춤형 서비스를 제공할 계획도 가지고 있다고 전했다. 

그렇다면 구글이 모바일 메신저를 개발하는 의도는 무엇일까? 업계에서는 구글은 현재 행아웃을 서비스 하고 있지만 페이스북은 물론 중국 텐센트의 위챗, 왓츠앱, 네이버의 라인 등에 뒤져 있는 모바일 메신저 시장에서 새로운 기회를 노리기 위해 인공지능 기반 모바일 메신저 서비스를 개발 중이라는 분석이다.  

특히, 구글의 검색서비스에서 고객들의 이탈을 방지할 수가 있다. 현재 페이스북은 메신저를 통해 검색서비스를 제공하고 있다. 페이스북 사용들이 메신저를 통해 검색서비스를 활용하다 보면 자연스럽게 구글 검색서비스와 멀어지기 때문이다. 이러한 부분을 구글이 우려한 것으로 분석된다. 

결국 모바일 메신저 시장에선 그렇다 할 성공작이 없는 구글로서는 모바일 메신저 개발로 페이스북의 전략인 메신저 플랫폼을 구축하려는 의도로 보인다. 페이스북은 현재 인공지능 ‘M’ 탑재를 내부적으로 시험하고 있다. 

또 다른 기회를 노리는 구글의 전략이 모바일 메신저 시장에서 어떤 결과가 나올지 이목이 집중되고 있다.

 

URL : http://www.itnews.or.kr/?p=17085

 

반응형
cortana

마이크로소프트가 윈도우10의 음성인식 서비스인 ‘코타나’를 업그레이드 한다. 사용자의 캘린더와 이메일을 스캔해 시간을 관리하는데 도움을 준다.

인공지능에 기반한 마이크로소프트 개인 비서인 코타나는 사용자의 음성 분석 및 선호사항을 학습해 맞춤형 애플리케이션을 추천해주고, 일정 알림 등의 기능을 수행한다.

이번 업데이트는 개인비서 서비스 시장에서 애플의 ‘시리’, 구글의 ‘구글 나우’ 등과 치열한 경쟁을 말해주고 있다.

http://www.itnews.or.kr/?p=17411

 

+ Recent posts