-
[OARCLE] PL/SQL이란? 특징과 필요성DB/ORACLE 2023. 1. 25. 09:54
SQL은 절차형 언어가 아니다.
SQL은 DDL/DML/DCL을 통해 데이터베이스를 정의 조작 제어하는 것이 가능하지만 SQL은 결국 데이터의 처리 집합만을 기술할뿐 어떤 절차를 걸쳐 데이터 집합을 얻어야하는지에 대한 절차적 과정을 제공하지 않는다. 일반적인 SQL 로직을 작성하면 이 문장의 실행순서는 옵티마이저에 의해 이루어지는데, 이는 여러가지 데이터베이스 통계를 기초로 실행 계획을 처리하기 때문에 데이터를 일반적으로 빠르게 다루어 주지만 결국 개발자 입장에서는 융통성 있는 데이터 처리가 불가능하다.
더보기참고) 옵티마이저란?
SQL을 가장 빠르고 효율적으로 수행할 최적의 처리경로를 생성해 주는 DBMS 내부의 핵심 엔진이다. 사용자가 구조화된 질의어로 결과 집합을 요구하면, 이를 생성하는데 필요한 처리경로는 DBMS에 내장된 옵티마이저가 자동으로 생성해준다.
이러한 단점을 극복하기 위해 대안으로 대부분의 상용 DBMS는 절차적으로 작성이 가능한 PL/SQL을 제공한다. PL/SQL은 절차적 언어의 특징을 가지고 있어 원하는 결과, 제약조건, 처리 절차를 개발자가 작성해야 한다.
📑 PL/SQL 특징
1. 프로그래밍 언어와 데이터 처리 통합 : PL/SQL의 본질적인 목적은 데이터 처리를 보다 효율적으로 하는것에 있기에 프로그래밍 언어 처럼 구성을 하지만 CRUD,MERGE와 같은 일반 SQL 문을 따로 작업 없이 사용할 수 있다.
2. 블록 단위 구성 : PL/SQL 모두 블록 구조로 이루어져 있다. 이 블록 구조는 선언부, 실행부, 예외처리 부로 나뉘며 DECLARE-BEGIN-EXCEPTION-END가 이에 해당한다.
3. 순차 처리 지원 : 순차 처리를 지원하는 언어이기 때문에 IF, LOOP, FOR WHILE 등과 같은 제어문, 반복문의 사용이 가능하다.
4. 예외처리 지원 : PL/SQL은 강력한 예외 처리기능을 가지고 있다. 실행중에 정상적인 흐름에 위반되는 상황이 발생하면 예외 처리기가 동작하여 이를 처리할 수 있다.
5. 서브프로그램지원 : 서브 프로그램은 PL/SQL FUNCTION과 프로시를 지원한다.
6. 패키지를 사용한 모듈화 지원 : 패키지는 연관성을 가지는 타입, 상수, 변수, 예외처리, 서브프로그램들을 엮어서 하나의 응용 단위로 구성하는 것을 말하는데 이를 제공한다.
7. 트리거 : 트리거는 데이터베이스에서 발생하는 이벤트를 처리하는 기능을 제공하며 이벤트 발생 시 트리거는 자동으로 실행돼 작성된 PL/SQL 로직을 호출한다.
📑 PL/SQL 필요성
PL/SQL은 결국 SQL의 단점을 보안하고 프로그래밍을 절차적으로 사용할 수 있다. 그렇다면 적극 활용해야 될까? 그것만이 정답은 아니다. SQL 대비 PL/SQL은 좀 더 비즈니스 로직의 처리 절차를 쉽게 이해할 수 있지만 결국 SQL 처럼 옵티마이저의 데이터 처리 절차 최적화를 받지 못한다는 단점이 있따. 빠른 처리 속도를 위해선 PL/SQL은 지양해야 되는 게 맞다.
따라서 어떤 상황에 처했는지, 어떤 처리 방식을 지향하는지를 따져 PL/SQL을 사용하면 될 것 같다.
반응형'DB > ORACLE' 카테고리의 다른 글
[ORACLE] NOT IN vs NOT EXISTS 차이점 (0) 2023.03.07 [ORACLE] SCOTT 계정 활성화하기 (0) 2023.03.03 [ORACLE] SQL Developer 설치, 계정 생성 (0) 2023.02.16 [Oracle] 오라클 11g Express Edition(XE) 다운, 계정 생성 (0) 2023.02.16 [Oracle] ROWNUM, 순번매기기 Order by (0) 2023.01.16