본문 바로가기

개발중/sql

PLAN

728x90
반응형

PLAN ?  ( EXPLAIN PLAN )

- SQL 문의 액세스 경로를 확인하고 튜닝할 수 있도록 SQL문을 분석,

  해석하며 실핼 계획을 수립한 뒤 PLAN_TABLE 에 저장하는 명령어이다.

 

 

사용법

EXPLAIN PLAN FOR
SELECT * FROM TABLE_NAME;

이 명령어를 사용하면 

Plan 이 생성된다.

 

EXPLAIN PLAN FOR
SELECT *
  FROM GUEST;

이런식으로 실행 계획을 저장한다.

 

 

SELECT PLAN_TABLE_OUTPUT FROM TABLE(DBMS_XPLAN.DISPLAY('plan_table',NULL,'serial'));

 이런 결과가 나온다.

저 뒤에 있는 serial은 뭘까 싶어서 한글자 틀리게 써봤더니 에러가 떨어진다. 정의되어있는 예약어 인거 같다.

사전적 의미로는 옥수수, 쌀 이런걸 통칭하는 의미라는데 아닌거 같고

 

시리얼 통신 (Serial Communication )이라고 있던데 그걸 의미하는거 같다.

시리얼 통신이란

직렬(Serial) 통신은 대게 하나의 신호선을 이용하여 데이터를 주고받는 통신을 일컬어 지칭합니다. 하나의 신호선을 이용하기 대문에 데이터 전송은 일정한 시간 간격으로 전송하게 됩니다. 즉 한 시간 간격 동안에 하나의 논리적인 데이터인 0과 1(High 혹은 Low)을 보내며, 일정한 길이의 데이터를 모두 전송하기 위해서는 다소 시간이 소요됩니다.

그렇지만 시리얼 통신은 적은 수의 신호선을 사용하기 때문에 저렴하게 통신을 할 수 있습니다. 이런 장점 때문에 최근에 대부분의 통신은 직렬 통신으로 데이터를 전송합니다. 시리얼 통신의 적용 예는 USB, PC COM Port 등이 있습니다.

병렬(Parallel) 통신은 여려 개의 신호선을 사용합니다. 신호선의 개수는 하나의 시간 간격 동안에 전송되는 데이터의 크기에 따라서 달라지는데, 일반적으로 8-Bit, 16-Bit, 32-Bit의 데이터 선과 제어 신호선으로 구성되어집니다. 이렇게 많은 선을 사용하므로 단위 시간당 전송되는 데이터 Bit의 양은 많지만, 통신 거리가 길어지게 될 경우에 이런 수 많은 선을 모두 연장하여야 하므로 통신 비용이 매우 크다고 할 수 있습니다.

또한 최근 다양한 기능의 단말 장치들이 계속해서 소형화되어가는 현실에서 데이터 통신을 위해서 구성해야하는 I/O 단자의 크기를 크게 줄일 수 없기 때문에 병렬 통신은 쇠퇴의 길을 걷고 있습니다.

 

음 근데 다 틀린 것 같다 팀장님 말씀으로는 

SELECT PLAN_TABLE_OUTPUT FROM TABLE(DBMS_XPLAN.DISPLAY('plan_table',NULL,'serial'));

이 명령어는 내가 방금 실행했던 쿼리문에 대한 실행 결과를 보여주는 것이라고 하셨다.

아무튼 이런 명령어도 있구나 싶다.

 

 

 구글에서는 이거 누르면 실행계획이 쫙 나오던데

 

 

 

 

 

 

 

 

CONTENT라는 다른 테이블로 실행계획을 눌러봤더니 되네?

 

팀장님 말씀으로는 PLAN 에서

FULL 이라는 단어가 나오면

이 쿼리가 모든 문장을 한번씩 체크하는 꼴 이라고 안좋은 현상이라고 알려주셨다.

 

지금은 그냥 SELECT * 문장이여서 이렇게 된 것 같다.

 

나중에 조인문 할 때 사용해봐야겠다.

 

 

 

 

PLAN 은 SQL 문의 액세스 경로를 확인하고 튜닝할 수 있도록 SQL문을 분석, 해석하며 실핼 계획을 수립한 뒤 PLAN_TABLE 에 저장하는 명령어니까 쿼리문 검색 속도의 향상을 위한거겠지 ?

 

728x90
반응형

'개발중 > sql' 카테고리의 다른 글

LIMIT 페이징 성능 향상  (0) 2021.02.26
HINT  (0) 2020.10.27
SQL문 튜닝  (0) 2020.10.27
INDEX 정리  (0) 2020.10.27
ANSI 정리  (0) 2020.10.27