본문 바로가기

전체 글

(138)
보일러 플레이트 (Boilerplate) 보일러플레이트(boilerplate)는 변경 없이 재사용할 수 있는 저작품을 의미하며, 프로그래밍에서는 상용구 코드를 의미한다. 어떤 동작을 수행하기 위해 사전에 작성해야 하는 코드로서 자바에서는 클래스의 getter, setter 메소드를 말한다. 보일러 플레이트의 특징은 다음과 같다. 1. 최소한의 변경으로 재사용할 수 있는것 2. 적은 수정만으로 여러 곳에 활용이 가능한 코드, 문구 3. 각종 문서에서 반복적으로 인용되는 문서의 한 부분
데이터베이스 정규화, 반정규화 데이터베이스의 정규화, 반정규화에 대해 작성한다. 1.정규화(Normalization) 정규화는 데이터의 중복성을 제거하여 여러 엔티티의 조인이 발생하는 데이터베이스 환경에서 성능을 향상시키기 위한 데이터 구조화 프로세스를 말한다. 정규화 단계 -제1정규화 중복되는 컬럼을 제거한다. -제2정규화 종속되는 값을 제거한다. -제3정규화 엔티티에 맞는 데이터로 분리한다. 2. 반정규화(역정규화, Denormalization) 정규화로 인해 테이블 수가 증가하면 다수의 조인이 발생함에 따라 성능 저하가 발생할 수 있다. 이 문제를 해결하고자 정규화 과정이 모두 마무리된 다음 반정규화를 실시한다. 단 테이벌을 합치는 것만이 반정규화는 아니다. -그룹에 대한 합계 값을 미리 계산하여 테이블에 저장 (기존 테이블에 ..
Index Index는 테이블에 저장된 데이터를 빠르게 조회하기 위한 데이터베이스 객체이다. 대부분 B-Tress, B+Tree 구조를 가진다. Index는 논리적/물리적으로 테이블과 독립적이다. 테이블의 레코드는 순서 없이 저장되는데 인덱스가 없는 테이블의 데이터를 찾을 때 무조건 풀스캔을 한다. 데이터의 양이 많을 경우 풀스캔을 하게되면 처리 성능이 떨어진다. 인덱스를 통해 데이터를 빨리 찾고자 사용한다. 인덱스를 생성할 때는 WHERE 절과 JOIN, ORDER BY 등 키 값의 선별이 가능한 컬럼에 생성한다. 테이블이 자주 갱신될 경우엔 인덱스를 사용하지 않는 것이 좋다. 인덱스는 클러스터드 인덱스와 논클러스터드 인덱스로 나누어진다. 클러스터드 인덱스는 물리적인 정렬로 데이터를 입력 시 이것을 기준으로 입력..
SQL - GROUP BY, HAVING GROUP BY 데이터를 원하는 그룹으로 나누어 가져온다. 그룹의 컬럼명을 GROUP BY 절 뒤에 추가해 사용한다. 집계함수와 함께 사용되는 상수는 GROUP BY 절에 추가하지 않아도 된다. SELECT TEST_NAME, TEST_TEXT, COUNT(*) FROM TEST GROUP BY TEST_NAME ORDER BY COUNT(*) ASC; HAVING WHERE 절에서는 집계함수 사용이 불가능하다. 집계함수를 가지고 조건비교를 할 때 HAVING 을 사용한다. SELECT TEST_NAME, TEST_TEXT, COUNT(TEST_NO) FROM TEST GROUP BY TEST_NAME HAVING COUNT(TEST_NO) > 3;
SQL 튜닝 같은 결과의 쿼리는 여러 형태로 작성될 수 있으며 옵티마이저가 실행계획을 생성할 때 최대 성능의 쿼리를 작성해야 한다. 옵티마이저는 SQL을 가장 빠르고 효율적으로 수행할 최적의 처리경로를 생성해주는 DBMS 내부의 핵심 엔진이다. 사용자가 구조화된 질의언어로 결과집합을 요구하면 이를 생성하는데 필요한 처리경로는 DBMS에 내장된 옵티마이저가 자동으로 생성해주며 이 처리 경로를 실행계획이라고 부른다. 더 높은 성능의 쿼리를 작성하기 위한 튜닝 가이드라인을 작성한다. 1. WHERE 조건에 인덱스 모두 사용 TEST 테이블에서 TEST_NO, TEST_CONTEXT 컬럼이 TEST_NO_IDX 인덱스로 존재할 때 아래 쿼리는 인덱스를 사용하지 않는다. SELECT * FROM TEST WHERE TEST_..
저장 프로시저(Stored Procedure) 저장 프로시저(Stored Procedure)는 SQL 서버에서 제공되는 프로그래밍 기능이다. 쿼리문의 집합으로 동작을 일괄 처리하는 용도이다. 정의 --Transact-SQL Stored Procedure Syntax CREATE { PROC | PROCEDURE } [schema_name.] procedure_name [ ; number ] [ { @parameter [ type_schema_name. ] data_type } [ VARYING ] [ = default ] [ OUT | OUTPUT ] [READONLY] ] [ ,...n ] [ WITH [ ,...n ] ] [ FOR REPLICATION ] AS { [ BEGIN ] sql_statement [;] [ ...n ] [ END ] ..
트랜잭션 (Transaction) 트랜잭션(Transaction)은 하나의 논리적 작업 단위로 수행되는 일련의 작업을 말한다. 트랜잭션은 데이터 일치성과 동시발생을 보장하기 위해 사용한다. 트랜잭션 작업 시 영향을 받은 행들은 락처리 되며 다른 사용자는 해당 행을 변경할 수 없다. 트랜잭션 작업 후 커밋시 영향받았던 행들에 대해 락이 해제되며 트랜잭션이 완료 처리된다. 트랜잭션 롤백 시 트랜잭션 생성 이전 시점으로 롤백된다. 롤백 세그먼트(Rollback Segment) 롤백 세그먼트는 수정되기 전의 파일, 블록 ID 등 블럭 정보 및 데이터를 저장한다. MSSQL의 경우 BEGIN TRAN 으로 트랜잭션을 시작하고 트랜잭션 성공시 COMMIT 하거나 ROLLBACK 할 수 있다. 트랜잭션이 성공하면 트랜잭션 동안 이루어진 일련의 작업 ..
데이터베이스 (Database) 정보시스템 데이터를 통해 정보를 얻어내는 시스템을 말한다. 현실세계에서 데이터를 수집하고 데이터를 처리하여 유의미한 정보를 얻어내는 시스템이다. 데이터 : 현실 세계의 단순한 관찰을 통해 수집된 사실 또는 값 정보 : 특정 해석이나 의미를 갖는 데이터 데이터베이스 시스템 데이터를 처리하여 정보를 얻어내는 과정을 도와주는 시스템이다. 데이터베이스의 특징은 다음과 같다. 실시간 접근성 계속적인 변화 동시 공유성 운영 가능 내용 참조 DBMS(Database Management System) 데이터베이스를 다루기 위한 시스템을 의미한다. 데이터를 정의,조작,제어할 수 있으며 관계형 데이터베이스 관리 시스템에서는 SQL 사용이 가능하다. DDL(Data Manipulation Language) : 데이터 정의어..

반응형