본문 바로가기

전체 글

(128)
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) : 데이터 정의어..
컴퓨터 아키텍쳐, 소프트웨어 아키텍쳐 컴퓨터 아키텍쳐는 컴퓨터 구조로서 컴퓨터 공학의 개념의 살계이며 컴퓨터 시스템의 근간이 되는 운영 구조이다. 컴퓨터의 설계적으로 이식되는 것들과 요구 사항들(특히 속도와 상호 연결)이 무엇인지 기능적으로 설명되어 있는 청사진이다. 주로 중앙처리장치가 메모리 주소에 내부적으로 수행하고 접근하는 방법이 집중적으로 설명된다. 소프트웨어 아키텍쳐는 소프트웨어 구조로서 소프트웨어의 구성요소들 사이에서 유기적인 관계를 표현하고 소프트웨어의 설계와 업그레이드를 통제하는 지침과 원칙을 말한다.
CI(Continuous Integration)/CD(Continuous Deploy/Delivery) CI(Continuous Integration)/CD(Continuous Deploy/Delivery) 의 개념에 대해 작성한다. CI(Continuous Integration) CI는 지속적 통합(Continuous Integration)으로 코드를 지속적으로 통합하는 것이다. 전통적인 방식의 개발은 여러명의 개발자가 협업을 진행할때 각자가 중앙저장소에 통합하는 프로세스로 개발을 진행하다. 하지만 컴포넌트, 피쳐의 개발이 완료될 때까지 프로젝트에 참여한 모든 개발자가 중앙저장소에 코드를 통합하지 않았다면 통합과정은 매우 어렵고 힘든 일이 될 것이다. 이런 문제를 해결하고자 지속적 통합(CI)이 등장했다. CI를 자동화 하지 않은 상태에서 수행하면 개발자는 중앙저장소에 코드를 통합하고, 본인의 코드를 중..