정보

    • 업무명     : 정보처리기사 실기 : 5강 데이터 입출력 구현 (데이터 조작 프로시저 작성하기, 데이터 조작 프로시저, 최적화하기)

    • 작성자     : 이상호

    • 작성일     : 2020-05-09

    • 설   명      :

    • 수정이력 :

     

     

     내용

    [데이터 조작 프로시저 작성하기]

    데이터 조작 프로시저 개발
    • 데이터 조작을 위해서 사용하는 언어를 SQL(Structured Query Language)이라고 하는데, SQL은 일정한 데이터 집합으로부터 보다 쉽게 자료를 검색하고 입력, 수정, 삭제와 같은 조작을 할 수 있도록 고안된 언어를 말한다. 

    • 일반적으로 SQL은 데이터 정의어(DDL: Data Definition Language), 데이터 조작어(DML: Data Manipulation Language), 데이터 제어어(DCL: Data Control Language) 등의 세가지로 분류한다.

     

    [1] SQL 분류 
    • 1. 데이터 정의어(DDL: Data Definition Language) 

      • 데이터를 저장하고 있는 테이블 등의 구조를 생성하고 변경하기 위하여 사용되는 명령어 들을 말하는 것으로, 명령어 수행이 되면 이전 상태로 복귀할 수 없으므로 신중히 사용하여야 한다. 

      • (1) 종류 

        • CREATE, DROP, RENAME, ALTER, TRUNCATE 등이 있다.

      • (2) CREATE: 오브젝트 생성 

        • (가) 문법 

          • CREATE TABLE My_table(my_field1 NUMBER, my_field2 VARCHAR2(20), my_field3 DATE NOT NULL, CONSTRAINT Tbl_Col_pk Primary Key(my_field1)); 

        • (나) 예시 

          • CREATE TABLE dept1 (deptno number(2), dname varchar2(14), loc varchar2(13));

      • (3) DROP: 오브젝트 삭제 

        • (가) 문법 

          • DROP TABLE My_table; 

        • (나) 예시 

          • DROP TABLE dept1;  

      • (4) RENAME: 오브젝트 이름 변경 

        • (가) 문법 

          • RENAME My_Table TO My_Backup_Table;

        • (나) 예시 

          • RENAME dept1 TO dept_copy;

      • (5) ALTER: 오브젝트 구조 변경 

        • (가) 문법 

          • ALTER TABLE My_Table [ ADD/MODIFY ] (my_field2 varchar2(30)); 

        • (나) 예시 

          • ALTER TABLE dept_copy MODIFY (loc varchar2(14)); 

      • (6) TRUNCATE: 오브젝트 자름 

        • (가) 문법 

          • TRUNCATE TABLE My_Table; 

        • (나) 예시 

          • TRUNCATE TABLE dept_copy;

     

    • 2. 데이터 조작어(DML: Data Manipulation Language) 

      • 데이터베이스에 있는 데이터를 변경하거나 검색하기 위하여 사용되는 명령어들을 말하며, 이 명령어는 트랜잭션 제어어(Transaction Control Language)를 활용하여 실행 전 상태로 복귀가능한 명령어이다.

      • (1) 종류 INSERT, UPDATE, DELETE 등이 있다

      • (2) INSERT: 데이터 입력 

        • (가) 문법 

          • INSERT INTO My_Table [ (empno) ] [ VALUES (1111); / SELECT .. ; ] 

          • 1) 입력하고자 하는 테이블의 모든 칼럼 데이터를 입력한다면 칼럼명을 명시 하지 않아도 되나, 특정 칼럼만을 입력하고자 한다면 반드시 칼럼명을 명 시하여야 한다. 

          • 2) 반드시 칼럼명 수와 VALUES 절의 수는 동일해야 한다. 

          • 3) 기존에 존재하는 테이블 데이터로부터 특정 테이블로 데이터를 복사하고자 한다면 ‘INSERT INTO emp(empno) SELECT id FROM emp_src'와 같이 사용할 수 있다. 

        • (나) 예시

          • INSERT INTO dept_copy(deptno, hr_limit) VALUES(92,10);

      • (3) UPDATE: 데이터 수정 

        • (가) 문법 

          • UPDATE emp SET empno = 1234 [ , ename = ‘James’ ] WHERE empno = 1111; 

        • (나) 예시 

          • UPDATE dept_copy SET hr_limit=20 WHERE hr_limit is null

      • (4) DELETE: 데이터 삭제 

        • (가) 문법 

          • DELETE [ FROM ] My_Table WHERE my_field2 = ‘ABCD'; 

        • (나) 예시 

          • DELETE dept_copy WHERE deptno > 90;

     

    • 3. 데이터 제어어(DCL: Data Control Language) 

      • 사용자별로 데이터베이스에 접근할 수 있는 권한을 부여하거나 회수하는 명령어들을 말한다. 

      • (1) 종류 

        • ROLE, GRANT, REVOKE 등이 있다. 

      • (2) ROLE: 롤 

        • (가) 문법 

          • CREATE ROLE Role_name;

            • 1) Role_name 선언 후 GRANT로 권한을 Role_name으로 부여 

            • 2) Oracle에서는 일반적으로 많이 사용하는 권한을 묶어 3가지 기본 Role을 제공 

          • CONNECT: 데이터베이스 접속 권한 

          • RESOURCE: Object 생성권한 

          • DBA: 모든 권한

        • (나) 예시 

          • 1) CREATE ROLE manager; 

          • 2) GRANT create table, create view TO manager; 

          • 3) GRANT manager TO scott;

      • (3) GRANT: 권한 및 롤 부여 

        • (가) 문법 GRANT 부여할 권한 유형 TO User [ Role_name ]; 

        • (나) 예시 

          • 1) GRANT connect, resource to scott; 

          • 2) GRANT SELECT ON emp TO scott[PUBLIC] [With Grant/Admin Option]; Grant/Admin Option은 둘 다 실행 권한을 받은 사용자가 다시 다른 사용자에게 실행 권한을 부여해 줄 수 있게 해주는 option이다. 다만, 두 Option 간 차이는, 

            • With Grant Option: revoke 시 다른 사용자에게 부여된 권한도 함께 회수 된다. 

            • With Admin Option: revoke 시 다른 사용자에게 부여한 권한은 함께 회수되 지 않으므로 Admin Option의 사용은 신중을 기해야 한다. 

      • (4) REVOKE: 권한 및 롤 회수 

        • (가) 문법 

          • REVOKE 회수할 권한 유형 FROM User;

        • (나) 예시 

          • 1) REVOKE connect, resource FROM scott; 

          • 2) REVOKE SELECT ON emp FROM scott; 

     

    [2] 트랜잭션 제어어(TCL: Transaction Control Language)
    • 트랜잭션 제어어는 트랜잭션의 DML작업단위를 제어하는 명령어이다. 

    • 1. 종류 

      • COMMIT, ROLLBACK, SAVEPOINT 등이 있다.

      • (1) COMMIT: 트랜잭션을 완료하여 데이터 변경사항을 최종 반영 

        • (가) COMMIT 이후 데이터 상태 

          • 1) 데이터에 대한 변경 사항이 물리적인 디스크에 반영된다. 

          • 2) COMMIT 이전 데이터는 복구할 수 없다. 

          • 3) 모든 사용자가 변경된 결과를 볼 수 있다. 

          • 4) 관련된 행에 대해 잠금(Lock)이 풀리며 다른 사용자들이 조작할 수 있다. 

        • (나) 문법 

          • COMMIT;

    • (2) ROLLBACK: 데이터 변경사항을 이전 상태로 되돌리는 명령어 

      • (가) ROLLBACK 이후 데이터 상태 

        • 1) ROLLBACK된 DML 문장은 메모리 상의 Buffer에만 영향을 미치기 때문에 복구가 가능하다. 

        • 2) 관련된 행에 대한 잠금(Lock)이 풀리게 된다. 

      • (나) 문법 

        • ROLLBACK; 

    • (3) SAVEPOINT: 지정된 특정 시점까지 Rollback할 수 있는 명령어 

      • (가) 문법 SAVEPOINT 특정지점 명칭;

     

    [3] 데이터 검색어(SELECT)
    • 1. 문법 

      • SELECT [DISTINCT] {*, column [alias], . . .}

      • FROM table_name 

      • [ WHERE condition ] 

      • [ GROUP BY column ] 

      • [ HAVING condition ] 

      • [ORDER BY {column, expression} [ASC | DESC]]; 

     

    • 2. 항목 설명 

      • (1) DISTINCT: 중복되는 행을 제거하는 옵션 

      • (2) *: 테이블의 모든 column을 출력 

      • (3) alias: 해당 column에 대해서 다른 이름을 부여할 때 사용 alias 지정은 space 다음에 alias명 또는 AS alias로 지정 가능 

      • (4) table_name: 질의 대상 테이블명 

      • (5) WHERE: 조건을 만족하는 행들만 검색 condition 은, column, 표현식, 상수 및 비교 연산자 

      • (6) GROUP BY: 그룹핑 하고자 하는 단위 지정 

      • (7) HAVING: 그룹핑 한 결과값에 대한 조건 검색 

      • (8) ORDER BY: 질의 결과 정렬을 위한 옵션(ASC:오름차순(Default), DESC내림차순)

     

    [4] 절차형 데이터 조작 프로시저 및 저장형 객체 활용
    • 1. 절차형 데이터 조작 프로시저 본 학습모듈은 표준 SQL을 기본으로 하지만, 데이터베이스에 종속적인 특정 영역에 대해 서는 시장 점유율을 고려하여 Oracle 데이터베이스를 전제하기로 하였으므로, 절차형 데이터 조작 프로시저 또한 Oracle에서 제공하는 PL/SQL을 기준으로 설명하기로 한다. 

    • (1) PL/SQL 개요 

      • 최근의 프로그래밍 언어의 특성을 수용한, SQL의 확장 기능이라 할 수 있다. 

      • (가) 사용시 장점 

        • 1) Compile이 필요 없어 script 생성 및 변경 후 바로 실행이 가능하다. 

        • 2) 프로그램 개발의 모듈화가 가능하다. 

          • 블록 내에서 논리적으로 관련된 문장들을 그룹화할 수 있다. 

          • 강력한 프로그램을 작성하기 위해 서브 블록들을 큰 블록에 포함할 수 있다. 

          • 복잡한 문제에 대한 프로그래밍이 적절히 나뉘어진 모듈들의 집합으로 구성할 수 있다.

        • 3) 식별자를 선언할 수 있다. 

           

          • 변수, 상수 등을 선언하여 해당 식별자를 SQL과 절차적인 프로그램에서 사용 할 수 있다. 

             

          • 데이터베이스의 테이블과 Record를 기반으로 하는 Dynamic한 변수 선언이 가능하다. 

             

          • 단일형 데이터 타입과 복합형 데이터 타입을 선언할 수 있다. 

             

        • 4) 절차적 언어 구조로 된 프로그램을 작성할 수 있다. 

           

          • IF문을 통해 조건에 따라 일련의 문장을 실행할 수 있다. 

             

          • LOOP문을 사용하여 일련의 문장을 반복적으로 실행할 수 있다. 

             

          • Explicit Cursor를 이용한 Multi-row 처리가 가능하다. 

        • 5) ERROR 처리가 가능하다. 

           

          • Exception 처리 루틴을 이용하여 Oracle Server 에러를 처리할 수 있다. 

             

          • 사용자 정의 에러를 선언하고 Exception 처리 루틴으로 처리가 가능하다. 

             

        • 6) 성능 향상을 기대할 수 있다. 

           

          • PL/SQL은 네트워크 부하를 줄여 프로그램의 성능을 향상시킬 수 있다. 

             

          • PL/SQL은 여러 SQL문장을 BLOCK으로 묶고 한번에 BLOCK전부를 서버로 전송하기 때문에 통신량을 줄일 수 있어 성능향상을 기대할 수 있다.

      • (나) PL/SQL 구조 PL/SQL은 프로그램을 논리적인 블록으로 나누게 하는 구조화된 블록 언어로서, 다 음과 같은 블록 구조로 구성된다. 

        • 1) 선언부 (DECLARE, Optional) 

          • 실행부에서 참조할 모든 변수, 상수, CURSOR, EXCEPTION을 선언한다. 

        • 2) 실행부 (BEGIN/END, Mandatory) 

          • BEGIN과 END 사이에 기술되는 영역이다.

          • 데이터베이스 데이터를 처리할 SQL문과 PL/SQL 블록을 기술한다. 

        • 3) 예외 처리부 (Exception, Optional) 

          • 실행부에서 에러가 발생했을 때 수행될 문장을 기술

    • (2) PL/SQL 처리 절차 

       

      • (가) PL/SQL로 작성된 Block을 Oracle 서버로 보내면 PL/SQL 엔진이 SQL문과 Non SQL 문을 구분한다. 

      • (나) Non SQL문은 PL/SQL Engine내의 Procedural Statement Executor가, SQL문은 SQL Statement Executor가 처리하게 된다 

      • (다) Non SQL문은 Client환경에서, SQL문은 서버에서 실행하게 된다.

         

      • (라) 따라서, PL/SQL을 사용하게 되면 서버의 작업 양을 줄이게 되므로 네트워크 부하를 감소시켜 수행성능을 증가시키는 잇점이 있다.

     

    • (3) PL/SQL 프로그래밍 가이드 

      • (가) PL/SQL Block내에서는 한 문장이 종료할 때마다 ‘;’을 기술한다. 

        • 1) END 뒤에도 ‘;’을 사용하여 Block이 끝났다는 것을 명시하여야 한다. 

        • 2) PL/SQL을 실행은 “/”을 사용하고, 성공적으로 실행 된다면 “… successfully completed” 라는 메시지가 출력되므로 이를 확인하여야 한다. 

      • (나) PL/SQL Block의 작성은 편집기를 통해서나 SQL*Plus에서 바로 작성하여 실행할 수 있고, PL/SQL 실행 시 발생한 Error는 show errors 명령어로 확인한다. 

      • (다) PL/SQL 블록을 개발할 때 명확한 코드 생성과 유지보수를 위하여 프로그래밍 가이드를 정의, 준수, 수행하는 것이 좋다. 

      • (라) 코드의 가독성을 높이기 위하여 들여쓰기를 하도록 한다.

     

    • 2. PL/SQL을 활용한 저장형 객체 활용 

      • PL/SQL로 작성할 수 있는 저장형 객체는 Stored Function, Stored Procedure, Stored Package, Trigger 등이 있는데, 각 저장형 객체의 특성과 작성을 위한 문법은 다음과 같다. 

      • (1) Stored Function 

        • (가) 특성 

          • 1) 보통 값을 계산하고 결과값을 반환하기 위해서 많이 사용한다. 

          • 2) 대부분 구성이 프로시저와 유사하지만 IN 파라미터만 사용할 수 있다. 

          • 3) 반드시 반환될 값의 데이터 타입을 RETURN문에 선언해야 한다. 

          • 4) PL/SQL블록 내에서 RETURN문을 통해서 반드시 값을 반환해야 한다. 

        • (나) 문법 

    • (2) Stored Procedure 

      • (가) 특성 

        • 1) 특정 작업을 수행할 수 있는, 이름이 있는 PL/SQL 블록이다. 

        • 2) 매개 변수를 받을 수 있고 반복적으로 사용할 수 있는 Object이다. 

        • 3) 보통 연속 실행 또는 구현이 복잡한 트랜잭션을 수행하는 PL/SQL블록을 DB에 저장하기 위해 생성한다. 

        • 4) 생성 방법 

          • CREATE OR REPLACE 구문을 사용하여 생성한다 

          • IS 로 PL/SQL의 블록을 시작한다. 

          • LOCAL 변수는 IS 와 BEGIN 사이에 선언한다

    • (나) 문법

      • Parameter 

      • 실행 환경과 프로그램 사이에 값을 주고받는 역할을 한다. 

      • 블록 안에서의 변수와 똑같이 일시적으로 값을 저장하는 역할을 한다.

         

         

      • 2) Parameter의 타입 

        • IN: 실행환경에서 Program으로 값을 전달 - OUT: Program에서 실행환경으로 값을 전달 

        • INOUT: 실행환경에서 프로그램으로 값을 전달하고, 다시 프로그램에서 실행 환경으로 변경된 값을 전달한다.

     

    • (3) Stored Package 

      • (가) 특성 

        • 1) 패키지는 오라클 데이터베이스에 저장되어 있는 서로 관련있는 PL/SQL 프로시저와 함수들의 집합이다. 

        • 2) 패키지는 선언부와 본문 두 부분으로 나누어진다. 

          • 패키지 선언부: 선언절은 패키지에 포함될 PL/SQL 프로시저나, 함수, 커서, 변수, 예외절을 선언하고, 패키지 선언부에서 선언한 모든 요소들은 패키지 전 체에 적용되며, 선언부에서 선언한 변수는 PUBLIC 변수로 사용됨 

             

          • 패키지 본문: 패키지에서 선언된 부분의 실행을 정의하는 영역이며, 실제 프로시저나 함수의 내용에 해당하는 내용으로 구성된다. 

      • (나) 문법

     

    • (4) Trigger 

      • (가) 특성 

        • 1) INSERT, UPDATE, DELETE문이 TABLE에 대해 행해질 때 묵시적으로 수행되는 PROCEDURE이다. 

        • 2) Trigger는 TABLE과는 별도로 DATABASE에 저장된다. 

        • 3) Trigger는 VIEW에 대해서가 아니라 TABLE에 관해서만 정의될 수 있다. 

        • 4) DBMS_OUTPUT.PUT_LINE 을 출력하기 위해 ‘set serveroutput on’을 사용한다

      • (나) 문법 

        • CREATE [OR REPLACE] TRIGGER 트리거명 

        • [시점] [이벤트] [OF] ON 테이블명 

        • [FOR EACH ROW] 

        • [WHEN] 

        • DECLARE 

        • 변수 선언 . . .

        • BEGIN . . . 

        • END ; /

      • 1) 시점 

        • BEFORE: INSERT, UPDATE, DELETE문이 실행되기 전에 트리거가 실행된다. 

           

        • AFTER: INSERT, UPDATE, DELETE문이 실행된 후 트리거가 실행된다. 

           

      • 2) 이벤트 

        • trigger_event: INSERT, UPDATE, DELETE 중에서 한 개 이상 올 수 있다. 

           

      • 3) FOR EACH ROW 

         

        • 이 옵션이 있으면 행 트리거가 된다. 

           

        • 행 트리거 : 칼럼의 각각 행의 데이터 행 변화가 생길 때마다 실행되며, 그 데이터 행의 실제 값을 제어할 수 있다. 

        • 문장 트리거 : 트리거 사건에 의해 단 한번 실행되며, 칼럼의 각 데이터 행을 제어할 수 없다

     

    [1] SQL*Plus 활용
    • 데이터 조작 프로시저 테스트

      • Oracle DBMS는 모든 데이터조작 프로시저에 대한 테스트 환경으로 SQL*Plus라는 도구를 제공하므로, 개발자는 데이터조작 프로시저 테스트를 위해 해당 도구 활용을 위한 SQL*Plus 명령어에 대한 사전 지식이 필요하다. 

      • 특히 절차형 SQL인 PL/SQL의 경우는 디버깅을 위한 환경과 관련 명령어가 추가적으로 요구되므로 효율적인 테스트를 위해 이와 관련된 지식을 충분히 숙지하여 익숙하게 활용할 수 있어야 한다.

     

    • 2. SQL과 SQL*Plus 차이점 

      • SQL은 데이터를 조작하는 표준 언어인 반면 SQL*Plus는 이러한 SQL을 DBMS 서버에 전송하여 처리할 수 있도록 하는 Oracle에서 제공하는 도구인 것이 가장 큰 차이점이라 할 수 있다.

     

    • 3. SQL*Plus 명령어 유형 

      • (1) 파일 명령어: SAVE, GET, SPOOL 등 

      • (2) 편집 명령어: A, C, L, I, DEL, n(숫자) 등 

      • (3) 실행 명령어: START, @, RUN, / 등 

         

      • (4) 환경 명령어: SET HEAD[LINE/PAGE/PAUSE] ON[OFF] 등 

         

      • (5) 형식 명령어: COLUMN, TTITLE, BTITLE, BREAK 등 

         

      • (6) 대화 명령어: DEFINE, PROMPT, ACCEPT 등

     

    • 4. SQL*Plus 명령어 유형별 처리 내용

     

     

    [2] PL/SQL 테스트를 위한 SQL*Plus 활용
    • 1. PL/SQL 테스트 

      • (1) DBMS_OUTPUT 패키지 활용 

        • 메시지를 버퍼에 저장하고 버퍼로부터 메시지를 읽어오기 위한 인터페이스를 제공하는 패키지인 DBMS_OUTPUT을 코드에 포함하여야 한다.

        • (가) 패키지 제공 메소드 

          • 1) DISABLE: 메시지 버퍼 내용 삭제 

          • 2) ENABLE: 메시지 버퍼 내용 할당 

          • 3) PUT: 메시지 버퍼에 저장되는 메시지의 마지막 라인 끝에 새로운 라인문자 (EOL)가 추가되지 않음 

          • 4) PUT_LINE: PUT과 달리 메시지 끝에 새로운 라인문자가 추가됨 

          • 5) GET_LINE: 한 번 호출될 때마다 하나의 라인만을 읽어옴 

          • 6) GET_LINES: 지정된 라인을 읽어옴

     

    • 2. 저장 객체 테스트 

      • (1) Stored Function 

        • (가) 함수의 반환값을 저장할 변수를 선언한다. 

          • (예시) SQL> VAR salary NUMBER; 

        • (나) EXECUTE 문을 이용해 함수를 실행한다. 

          • (예시) SQL> EXECUTE:salary:= FC_update_sal(7369); 

        • (다) SQL에서 선언된 변수의 출력은 PRINT문을 사용하고, 함수의 반환 값을 저장한 변 수 값을 확인한다. 

          • (예시) SQL> PRINT salary;

      • (2) Stored Procedure 

        • (가) 실행하기 전 프로시저 실행 후 변경될 이전의 값을 확인한다. 

        • (나) EXECUTE 문을 이용해 실행 

           

        • (예시) SQL> set serveroutput on SQL> execute update_sal(7369); 

           

        • (다) 실행 이후 프로시저에서 처리하는 대로 관련 데이터가 수정된 것을 확인한다. 

      • (3) Stored Package 

         

        • (가) 패키지의 실행은 패키지명.프로시저(함수) 명으로 기술한다. 

           

        • (나) DBMS_OUTPUT.PUT_LINE을 출력하기 위해 set serveroutput on을 실행

          • 다. SQL> SET SERVEROUTPUT ON ; 

        • (다) 다음 예시와 같이 실행함으로써 수행 결과를 확인한다. 

          • (예시) SQL> exec emp_info.all_emp_info; 

      • (4) Trigger

        • (가) DBMS_OUTPUT.PUT_LINE을 출력하기 위해 set serveroutput on을 실행한다. 

          • SQL> SET SERVEROUTPUT ON ; 

        • (나) Trigger가 처리될 조건에 부합되는 SQL을 실행하여 데이터의 처리결과를 확인 한다. 

    [데이터 조작 프로시저 최적화하기]

    데이터 조작 프로시저 성능개선
    • 작성한 데이터 조작 프로시저를 적용하는 과정에서 성능개선이나 자원의 효율적 사용의 필요성이 제기되는바, 이를 해결하기 위해서는 성능 최적화 방안을 통해 업무의 중요도나 트랜잭션 빈도, 그리고 사용하는 사용자 수에 따라 우선순위를 부여한 뒤 우선순위가 높은 SQL부터 최적화를 진행하게 된다. 

    • 이런 성능 최적화는 무엇보다도 개발자 스스로가 최적화를 위한 필요지식을 학습하고 이 해하여, 이를 습득함으로써 성능 최적화에 대한 부담을 줄이는 것이 무엇보다 우선적으로 필요하다. 

       

      • 1. APM(Application Performance Management)의 이해와, 

         

      • 2. 모니터링 결과 문제시되는 SQL에 대한 처리흐름, 그리고 

         

      • 3. 해당 SQL이 DBMS 내에서 어떻게 동작하는지를 파악할 수 있는 다양한 유틸리티(Oracle의 경우 TKPROF, EXPLAIN PLAN 등)를 활용하여 그 결과를 분석하는 방법 등이 있다

     

    [1] APM(Application Performance Management) 도구의 이해
    • 1. APM 정의 

      • APM은 Application Performance Management(Monitoring)의 약자로서, 운영 중인 시스템에 대한 가용성 확보, 다운타임 최소화 등을 통해 안정적인 시스템 운영을 위하여, 부하량과  접속자 파악 및 장애진단 등을 목적으로 하는 성능 모니터링 도구를 말한다. 

    • 2. APM 유형 

      • APM 유형은 크게 두 가지(리소스, 엔드투엔드) 영역으로 나누어 정의해 볼 수 있다. 

      • (1) 애플리케이션 수행 시 리소스 모니터링 

        • (가) 모니터링 대상 자원은 CPU, 메모리, 네트워크, 디스크 등이 있다. 

        • (나) 대표적인 오픈 소스로는 Nagios, Zabbix, Cacti 등이 있다. 

      • (2) 애플리케이션 수행을 위한 엔드투엔드(End to End) 모니터링 

        • (가) 모니터링 대상을 애플리케이션 수행 관점으로 보아, 비즈니스 트랜잭션 관리 및 최종 사용자 등 엔드투엔드 모니터링으로 본다. 

        • (나) 대표적인 오픈 소스로는 VisualVM이 있고, 상용 제품으로는 제니퍼, 파로스, 시스 마스터 등이 있다.

     

    [2] SQL 처리 흐름 

     

    [3] SQL 성능 최적화를 위한 유틸리티 활용
    • 시장에서 많이 사용하고 있는 Oracle DBMS 경우, SQL 문제점을 파악하고 개선하여 SQL 성능을 최적화하기 위해, TKPROF 및 EXPLAIN PLAN이라는 도구를 제공하고 있다. 

    • 만약 SQL문이 적절히 작성되지 않았다면 전반적인 처리 효율성이 떨어질 수 있고, 이때 처리 성능의 통계치 정보를 파악하기 위해 TKPROF 도구 활용을 고려해야 하고, EXPALIN PLAN은 SQL이 사용하는 액세스 경로를 파악하기 위해 활용할 수 있는 도구이다. 

    • 1. TKPROF 활용 

      • 실행되는 SQL문장에 대해 분석정보를 제공하여 사용자(프로그래머,..)가 특정 SQL문장을 어떻게 사용해야 할 것인지에 대한 가이드라인을 제공해 주는 도구로서, EXPLAIN PLAN 과 병행하여 사용하는 것이 좋다.

    • 2. EXPLAIN PLAN 활용

      • EXPLAIN PLAN은 사용자들이 SQL문의 액세스 경로를 확인하여 성능개선을 할 수 있도록 SQL문을 분석하고 해석하여 실행계획을 수립하고, 관련 테이블(plan_table)에 저장하도록 지원해 주는 도구이다.

     

    [연습문제]

    • SQL은 일정한 데이터 집합으로부터 보다 쉽게 자료를 검색하고 입력, 수정, 삭제와 같은 조작을 할 수 있도록 고안된 언어이다. 이에 속하지 않는 부류는?

      • 데이터 정의어  

      • 데이터 조작어

      • 데이터 제어어

      • 데이터 참조어

     

    • 다음 중 데이터 정의어에 속하지 않는 것은?

      • INSERT

      • CREATE

      • DROP

      • ALTER

     

     참고 문헌

    [논문]

    • 없음

    [보고서]

    • 없음

    [URL]

    • 없음

     

     문의사항

    [기상학/프로그래밍 언어]

    • sangho.lee.1990@gmail.com

    [해양학/천문학/빅데이터]

    • saimang0804@gmail.com

     

     

     

     

     

     

     

    본 블로그는 파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음
     
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기