DB(133)
-
DB/Database Knowledge
2021.07.04
7
[DB] 데이터베이스 인덱스(Index) 란 무엇인가?
인덱스(Index)란? 인덱스는 데이터베이스 테이블에 대한 검색 성능의 속도를 높여주는 자료 구조입니다. 특정 컬럼에 인덱스를 생성하면, 해당 컬럼의 데이터들을 정렬하여 별도의 메모리 공간에 데이터의 물리적 주소와 함께 저장됩니다. 이렇게 인덱스가 생성하였다면 앞으로 쿼리문에 "인덱스 생성 컬럼을 Where 조건으로 거는 등"의 작업을 하면 옵티마이저에서 판단하여 생성된 인덱스를 탈 수가 있습니다. 만약 인덱스를 타게 되면 아래의 그림과 같이 인덱스를 타게 되고 먼저 인덱스에 저장되어 있는 데이터의 물리적 주소로 가서 데이터를 가져오는 식으로 동작을 하여 검색 속도의 향상을 가져올 수 있습니다. 즉 인덱스는 책에 있는 목차라고 생각하시면 편합니다. 우리가 책에서 정보를 찾을때도 먼저 원하는 카테고리를 목..
-
DB/Oracle
2021.06.28
[Oracle] 오라클 실행 계획 확인하기 (EXPLAIN PLAN, SET AUTORACE, SQL TRACE)
실행 계획 확인하기 실행 계획이란 SQL이 실행되어 데이터를 처리하고자 할 때 옵티마이저에서 수립되는 SQL 실행 방법론입니다. 이 실행 계획을 구성하는 내용의 분석을 통해 SQL의 비 효율적인 부분을 확인할 수 있고 쿼리의 성능 향상을 위한 튜닝 포인트도 도출해낼 수 있습니다. 실행 계획을 알아내는 방법은 크게 EXPLAIN PLAN과 SET AUTORACE, SQL TRACE 이렇게 세 가지 방법이 있습니다. [DB] 데이터베이스 옵티마이저(Optimizer)에 대하여 [DB] 데이터베이스 실행 계획에 대하여 EXPLAIN PLAN 사용 예시 EXPLAIN PLAN -- EXPLANIN PLAN 선언부 SET STATEMENT_ID = 'PLAN1' INTO PLAN_TABLE -- SQL에 PLAN..
-
DB/Database Knowledge
2021.06.27
[DB] 데이터베이스 실행 계획에 대하여
실행 계획이란?실행계획이란 사용자가 SQL을 실행하여 데이터를 추출하려고 할 때 옵티마이저가 수립하는 작업 절차입니다. 이렇게 만들어진 실행 계획은 여러 가지 방법을 통해 확인할 수 있습니다. 실제 프로젝트에서 SQL 튜닝 업무를 하다 보면 개발자들이 DBMS 툴을 활용하여 실행 계획을 확인하는 것을 자주 보실 수 있습니다. SQL을 실행한 후 실행 계획을 판단하여 이 SQL이 어떠한 방식으로 실행되는지 확인이 가능합니다.[DB] 데이터베이스 옵티마이저(Optimizer)에 대하여 쿼리문의 실행 계획을 확인하는 방법쿼리문의 실행 계획을 확인하는 방법은 EXPLAIN PLAN, AUTOTRACE, SQL TRACE 이렇게 3가지가 있습니다. 실행 계획을 판단하는 방법은 아래 포스팅에 오라클을 활용하여 방법..
-
DB/Database Knowledge
2021.06.23
[DB] 데이터베이스 옵티마이저(Optimizer)에 대하여
옵티마이저(Optimizer)란? 옵티마이저는 가장 효율적인 방법으로 SQL을 수행할 최적의 처리 경로를 생성해주는 DBMS의 핵심 엔진입니다. 컴퓨터의 두뇌가 CPU인 것처럼 DBMS의 두뇌는 옵티마이저라고 할 수 있습니다. 개발자가 SQL을 작성하고 실행하면 소프트웨어 실행파일처럼 즉시 실행되는 것이 아니라 옵티마이저(Optimizer)라는 곳에서 "이 쿼리문을 어떻게 실행시키겠다!"라는 여러 가지 실행계획을 세우게 됩니다. 이렇게 실행계획을 세운 뒤 시스템 통계정보를 활용하여 각 실행계획의 예상 비용을 산정한 후 각 실행계획을 비교해서 최고의 효율을 가지고 있는 실행계획을 판별한 후 그 실행계획에 따라 쿼리를 수행하게 되는 것입니다. 옵티마이저의 종류 옵티마이저는 실행 계획을 세우는 방식에 따라 규..
-
DB
2020.11.23
[DB] MySQL 다운로드 / 설치 방법 (for Windows)
MySQL이란? MySQL은 전세계에서 많이 사용하는 빠른 작동과 경쾌함이 장점인 오픈 소스 관계형 데이터베이스 관리 시스템(RDBMS)입니다. MySQL은 오픈소스로 이루어져있고 여러 운영체제에서 동작이 가능하며 많은 프로그램 언어를 지원한다는 장점이 있습니다. 유료버전도 따로 있으나 대부분은 무료버전을 사용하셔도 큰 무리가 없습니다. MySQL 설치 / 다운로드 방법 1. 오늘은 윈도우 10에서 MySql을 한번 설치해보려고 합니다. 아래에 링크된 사이트로 접속하여 최신버전의 MySql Install 파일을 다운 받습니다. 최소용량으로 설치하려면 2.5M의 installer를 설치해주세요. dev.mysql.com/downloads/installer/ 2. 오라클 계정에 로그인 하라고 하는데 로그인 ..
-
DB/Oracle
2019.12.29
4
[Oracle] 오라클 스케줄러 사용법 & 예제
오라클 잡과 스케줄러 데이터베이스를 운영하다보면 하루에 한번씩 운영서버의 데이터를 개발서버에 데이터를 넣어주거나 하는 주기적인 작업을 처리할 때가 있습니다. 이렇게 일정한 주기의 작업을 잡(Job)이라고 합니다. 이러한 주기적인 잡을 수행하는 방법은 스케줄러를 활용하는 방법이 있습니다. 오라클 스케줄러 (DBMS_SCHEDULER) 기존에는 주기적인 작업을 잡 패키지(DBMS_JOB)라는 것을 활용하여 작업을 하였지만 다양한 문제점으로 인해 오라클 10g부터 새로운 스케줄러 패키지인 오라클 스케줄러 (DBMS_SCHEDULER)라는 패키지가 추가되었습니다. 최근에는 이 오라클 스케줄러라는 패키지를 통해서 주기적인 잡(Job)을 처리합니다. 오라클 스케줄링 사용법 잡 객체를 이용한 스케줄링 BEGIN DB..
-
DB/Oracle
2019.12.28
14
[Oracle] 오라클 계층형 쿼리(START WITH.. CONNECT BY)
계층형 쿼리란? 계층형 구조는 상하 수직관계의 트리형태의 구조로 이루어진 형태를 말합니다. 예를 들자면 특정회사의 부서, 특정학교의 학과등이 있습니다. 계층형 쿼리는 테이블에 저장된 데이터를 계층형 구조로 반환하는 쿼리를 말합니다. 오라클에서의 계층형 쿼리는 START WITH ... CONNECT BY 절로 생성할 수 있으며 계층형 정보를 표현하기 위한 목적으로 오라클 8부터 지원되었습니다. 수행순서 1. START WITH 절에 시작 조건을 찾습니다. 2. CONNECT BY 절에 연결조건을 찾습니다. 샘플데이터 생성 위와같은 구조를 이루도록 부서 테이블을 생성하도록 하겠습니다. CREATE TABLE DEP ( DEP_CD NUMBER NOT NULL, -- 부서코드 PARENT_CD NUMBER,..
-
DB/Oracle
2019.12.27
2
[Oracle] 오라클 열을 행으로 변환하기 (UNPIVOT)
저번 포스팅에서 행을 열로 바꾸는 PIVOT절에 대해 알아보았습니다. 항상 언어는 반대의 속성도 가지고 있습니다. 행을 열로 바꾸는 방법이 있으면 열을 행으로 바꾸는 방법도 있습니다. 열을 행으로 바꿔주는 방법은 UNPIVOT절을 활용하면 됩니다. [Oracle] 오라클 행을 열로 변환하기 (PIVOT) 샘플 데이터 SELECT * FROM SCORE 위의 데이터는 시험명으로 국어, 수학, 영어 성적을 나타낸 데이터입니다. UNPIVOT의 컬럼과 로우를 바꿔주는 기능을 활용하여 위 데이터의 열과 행을 바꿔보도록 하겠습니다. UNPIVOT을 활용하여 열을 행으로 바꾸기 SELECT 컬럼 FROM (조회할 데이터 SELECT문) OR 테이블 UNPIVOT(가상 컬럼1) FOR (가상 컬럼2) IN (열으로 ..
-
DB/Oracle
2019.12.26
8
[Oracle] 오라클 행을 열로 변환하기 (PIVOT)
아주 가끔 SELECT문의 행을 열로 변환해야 할 경우가 있습니다. 과거에는 행을 열로 바꿀때 CASE WHEN이나 DECODE, WITH절을 통해서 컬럼을 로우로 변환하였었는데 오라클 11g에서 새로나온 피벗테이블을 활용하면 과거에 사용하던 방법보다 훨씬 간단한 문장으로 행과 열을 전환 할 수 있습니다. 이번 포스팅에서는 PIVOT절을 활용하여 행을 열로 바꾸는 방법에 대해 알아보도록 하겠습니다. [Oracle] 오라클 열을 행으로 변환하기 (UNPIVOT) 샘플 데이터 SELECT * FROM KOR_LOAN_STATUS 위의 데이터는 대출년도, 지역, 대출종류, 대출금을 나타낸 데이터입니다. PIVOT의 로우와 컬럼을 바꿔주는 기능을 활용하여 위 데이터의 행과 열을 바꿔보도록 하겠습니다. PIVOT..
-
DB/Oracle
2019.12.25
2
[Oracle] 오라클 그룹별 소계 합계 구하기 (ROLLUP, CUBE)
ROULLUP과 CUBE을 사용하면 그룹별 소계 및 합계를 출력할 수 있습니다. 그룹별 소계 및 합계를 구하려면 우선 그룹핑된 데이터가 필요합니다. 샘플 데이터 SELECT PERIOD, GUBUN, SUM(LOAN_JAN_AMT) FROM KOR_LOAN_STATUS GROUP BY PERIOD, GUBUN ORDER BY PERIOD 위의 데이터는 대출년도, 대출명으로 대출금액의 합계값을 나타낸 데이터입니다. 이 데이터를 바탕으로 소계와 합계를 구해보도록 하겠습니다. ROLLUP ROLLUP은 추가적인 집계 정보를 보여주는 기법입니다. ROLLUP절에는 그룹핑 된 컬럼을 나열 할 수 있으며 명시된 나열한 컬럼의수에 따라 레벨 별로 집계한 결과가 반환됩니다. 나열한 컬럼의 수가 N개이면 N+1레벨까지,..
-
DB/Database Knowledge 2021.07.04 7[DB] 데이터베이스 인덱스(Index) 란 무엇인가? 인덱스(Index)란? 인덱스는 데이터베이스 테이블에 대한 검색 성능의 속도를 높여주는 자료 구조입니다. 특정 컬럼에 인덱스를 생성하면, 해당 컬럼의 데이터들을 정렬하여 별도의 메모리 공간에 데이터의 물리적 주소와 함께 저장됩니다. 이렇게 인덱스가 생성하였다면 앞으로 쿼리문에 "인덱스 생성 컬럼을 Where 조건으로 거는 등"의 작업을 하면 옵티마이저에서 판단하여 생성된 인덱스를 탈 수가 있습니다. 만약 인덱스를 타게 되면 아래의 그림과 같이 인덱스를 타게 되고 먼저 인덱스에 저장되어 있는 데이터의 물리적 주소로 가서 데이터를 가져오는 식으로 동작을 하여 검색 속도의 향상을 가져올 수 있습니다. 즉 인덱스는 책에 있는 목차라고 생각하시면 편합니다. 우리가 책에서 정보를 찾을때도 먼저 원하는 카테고리를 목..
-
DB/Oracle 2021.06.28[Oracle] 오라클 실행 계획 확인하기 (EXPLAIN PLAN, SET AUTORACE, SQL TRACE) 실행 계획 확인하기 실행 계획이란 SQL이 실행되어 데이터를 처리하고자 할 때 옵티마이저에서 수립되는 SQL 실행 방법론입니다. 이 실행 계획을 구성하는 내용의 분석을 통해 SQL의 비 효율적인 부분을 확인할 수 있고 쿼리의 성능 향상을 위한 튜닝 포인트도 도출해낼 수 있습니다. 실행 계획을 알아내는 방법은 크게 EXPLAIN PLAN과 SET AUTORACE, SQL TRACE 이렇게 세 가지 방법이 있습니다. [DB] 데이터베이스 옵티마이저(Optimizer)에 대하여 [DB] 데이터베이스 실행 계획에 대하여 EXPLAIN PLAN 사용 예시 EXPLAIN PLAN -- EXPLANIN PLAN 선언부 SET STATEMENT_ID = 'PLAN1' INTO PLAN_TABLE -- SQL에 PLAN..
-
DB/Database Knowledge 2021.06.27[DB] 데이터베이스 실행 계획에 대하여 실행 계획이란?실행계획이란 사용자가 SQL을 실행하여 데이터를 추출하려고 할 때 옵티마이저가 수립하는 작업 절차입니다. 이렇게 만들어진 실행 계획은 여러 가지 방법을 통해 확인할 수 있습니다. 실제 프로젝트에서 SQL 튜닝 업무를 하다 보면 개발자들이 DBMS 툴을 활용하여 실행 계획을 확인하는 것을 자주 보실 수 있습니다. SQL을 실행한 후 실행 계획을 판단하여 이 SQL이 어떠한 방식으로 실행되는지 확인이 가능합니다.[DB] 데이터베이스 옵티마이저(Optimizer)에 대하여 쿼리문의 실행 계획을 확인하는 방법쿼리문의 실행 계획을 확인하는 방법은 EXPLAIN PLAN, AUTOTRACE, SQL TRACE 이렇게 3가지가 있습니다. 실행 계획을 판단하는 방법은 아래 포스팅에 오라클을 활용하여 방법..
-
DB/Database Knowledge 2021.06.23[DB] 데이터베이스 옵티마이저(Optimizer)에 대하여 옵티마이저(Optimizer)란? 옵티마이저는 가장 효율적인 방법으로 SQL을 수행할 최적의 처리 경로를 생성해주는 DBMS의 핵심 엔진입니다. 컴퓨터의 두뇌가 CPU인 것처럼 DBMS의 두뇌는 옵티마이저라고 할 수 있습니다. 개발자가 SQL을 작성하고 실행하면 소프트웨어 실행파일처럼 즉시 실행되는 것이 아니라 옵티마이저(Optimizer)라는 곳에서 "이 쿼리문을 어떻게 실행시키겠다!"라는 여러 가지 실행계획을 세우게 됩니다. 이렇게 실행계획을 세운 뒤 시스템 통계정보를 활용하여 각 실행계획의 예상 비용을 산정한 후 각 실행계획을 비교해서 최고의 효율을 가지고 있는 실행계획을 판별한 후 그 실행계획에 따라 쿼리를 수행하게 되는 것입니다. 옵티마이저의 종류 옵티마이저는 실행 계획을 세우는 방식에 따라 규..
-
DB 2020.11.23[DB] MySQL 다운로드 / 설치 방법 (for Windows) MySQL이란? MySQL은 전세계에서 많이 사용하는 빠른 작동과 경쾌함이 장점인 오픈 소스 관계형 데이터베이스 관리 시스템(RDBMS)입니다. MySQL은 오픈소스로 이루어져있고 여러 운영체제에서 동작이 가능하며 많은 프로그램 언어를 지원한다는 장점이 있습니다. 유료버전도 따로 있으나 대부분은 무료버전을 사용하셔도 큰 무리가 없습니다. MySQL 설치 / 다운로드 방법 1. 오늘은 윈도우 10에서 MySql을 한번 설치해보려고 합니다. 아래에 링크된 사이트로 접속하여 최신버전의 MySql Install 파일을 다운 받습니다. 최소용량으로 설치하려면 2.5M의 installer를 설치해주세요. dev.mysql.com/downloads/installer/ 2. 오라클 계정에 로그인 하라고 하는데 로그인 ..
-
DB/Oracle 2019.12.29 4[Oracle] 오라클 스케줄러 사용법 & 예제 오라클 잡과 스케줄러 데이터베이스를 운영하다보면 하루에 한번씩 운영서버의 데이터를 개발서버에 데이터를 넣어주거나 하는 주기적인 작업을 처리할 때가 있습니다. 이렇게 일정한 주기의 작업을 잡(Job)이라고 합니다. 이러한 주기적인 잡을 수행하는 방법은 스케줄러를 활용하는 방법이 있습니다. 오라클 스케줄러 (DBMS_SCHEDULER) 기존에는 주기적인 작업을 잡 패키지(DBMS_JOB)라는 것을 활용하여 작업을 하였지만 다양한 문제점으로 인해 오라클 10g부터 새로운 스케줄러 패키지인 오라클 스케줄러 (DBMS_SCHEDULER)라는 패키지가 추가되었습니다. 최근에는 이 오라클 스케줄러라는 패키지를 통해서 주기적인 잡(Job)을 처리합니다. 오라클 스케줄링 사용법 잡 객체를 이용한 스케줄링 BEGIN DB..
-
DB/Oracle 2019.12.28 14[Oracle] 오라클 계층형 쿼리(START WITH.. CONNECT BY) 계층형 쿼리란? 계층형 구조는 상하 수직관계의 트리형태의 구조로 이루어진 형태를 말합니다. 예를 들자면 특정회사의 부서, 특정학교의 학과등이 있습니다. 계층형 쿼리는 테이블에 저장된 데이터를 계층형 구조로 반환하는 쿼리를 말합니다. 오라클에서의 계층형 쿼리는 START WITH ... CONNECT BY 절로 생성할 수 있으며 계층형 정보를 표현하기 위한 목적으로 오라클 8부터 지원되었습니다. 수행순서 1. START WITH 절에 시작 조건을 찾습니다. 2. CONNECT BY 절에 연결조건을 찾습니다. 샘플데이터 생성 위와같은 구조를 이루도록 부서 테이블을 생성하도록 하겠습니다. CREATE TABLE DEP ( DEP_CD NUMBER NOT NULL, -- 부서코드 PARENT_CD NUMBER,..
-
DB/Oracle 2019.12.27 2[Oracle] 오라클 열을 행으로 변환하기 (UNPIVOT) 저번 포스팅에서 행을 열로 바꾸는 PIVOT절에 대해 알아보았습니다. 항상 언어는 반대의 속성도 가지고 있습니다. 행을 열로 바꾸는 방법이 있으면 열을 행으로 바꾸는 방법도 있습니다. 열을 행으로 바꿔주는 방법은 UNPIVOT절을 활용하면 됩니다. [Oracle] 오라클 행을 열로 변환하기 (PIVOT) 샘플 데이터 SELECT * FROM SCORE 위의 데이터는 시험명으로 국어, 수학, 영어 성적을 나타낸 데이터입니다. UNPIVOT의 컬럼과 로우를 바꿔주는 기능을 활용하여 위 데이터의 열과 행을 바꿔보도록 하겠습니다. UNPIVOT을 활용하여 열을 행으로 바꾸기 SELECT 컬럼 FROM (조회할 데이터 SELECT문) OR 테이블 UNPIVOT(가상 컬럼1) FOR (가상 컬럼2) IN (열으로 ..
-
DB/Oracle 2019.12.26 8[Oracle] 오라클 행을 열로 변환하기 (PIVOT) 아주 가끔 SELECT문의 행을 열로 변환해야 할 경우가 있습니다. 과거에는 행을 열로 바꿀때 CASE WHEN이나 DECODE, WITH절을 통해서 컬럼을 로우로 변환하였었는데 오라클 11g에서 새로나온 피벗테이블을 활용하면 과거에 사용하던 방법보다 훨씬 간단한 문장으로 행과 열을 전환 할 수 있습니다. 이번 포스팅에서는 PIVOT절을 활용하여 행을 열로 바꾸는 방법에 대해 알아보도록 하겠습니다. [Oracle] 오라클 열을 행으로 변환하기 (UNPIVOT) 샘플 데이터 SELECT * FROM KOR_LOAN_STATUS 위의 데이터는 대출년도, 지역, 대출종류, 대출금을 나타낸 데이터입니다. PIVOT의 로우와 컬럼을 바꿔주는 기능을 활용하여 위 데이터의 행과 열을 바꿔보도록 하겠습니다. PIVOT..
-
DB/Oracle 2019.12.25 2[Oracle] 오라클 그룹별 소계 합계 구하기 (ROLLUP, CUBE) ROULLUP과 CUBE을 사용하면 그룹별 소계 및 합계를 출력할 수 있습니다. 그룹별 소계 및 합계를 구하려면 우선 그룹핑된 데이터가 필요합니다. 샘플 데이터 SELECT PERIOD, GUBUN, SUM(LOAN_JAN_AMT) FROM KOR_LOAN_STATUS GROUP BY PERIOD, GUBUN ORDER BY PERIOD 위의 데이터는 대출년도, 대출명으로 대출금액의 합계값을 나타낸 데이터입니다. 이 데이터를 바탕으로 소계와 합계를 구해보도록 하겠습니다. ROLLUP ROLLUP은 추가적인 집계 정보를 보여주는 기법입니다. ROLLUP절에는 그룹핑 된 컬럼을 나열 할 수 있으며 명시된 나열한 컬럼의수에 따라 레벨 별로 집계한 결과가 반환됩니다. 나열한 컬럼의 수가 N개이면 N+1레벨까지,..