트랜잭션과 ACID 특성에 대해 알아보겠습니다. 1. 트랜잭션(transaciton) 트랜잭션이란 DBMS에서 데이터를 다루는 논리적 단위를 말한다. 트랜잭션은 완전히 완료되기도 하고 전혀 완료되지 않을 수도 있으며, 데이터베이스 상태를 한결같은 상태로 둔다. 트랜잭션의 전형적인 예는 은행 계좌에서 현금을 인출할 때 일어나는 과정이다. 현금이 계좌에서 인출되거나, 인출되지 않거나 둘 중의 하나일 뿐 외의 결과는 존재하지 않는다. 만약 중간에 실행이 중단되었을 경우, 처음부터 다시 실행하는 rollback을 수행하고, 오류 없이 실행을 마치면 commit을 하는 실행 단위를 의미한다. 즉, 한 번 질의가 실행되면 질의가 모두 수행되거나 모두 수행되지 않는 작업 수행의 논리적 단위이다. 예를 들어, 친구에게..
데이터베이스 인덱스의 자료구조 인덱스는 여러 자료구조를 이용해서 구현할 수 있는데, 대표적으로 해시 테이블(Hash Table)과 B+Tree가 있다. 1. 해시 테이블(Hash Table) 해시 테이블은 key와 value를 한 쌍으로 데이터를 저장하는 자료구조이다. (key, value)로 쌍을 표현하며, key값을 이용해 대응되는 value값을 구하는 방식이다. 해시 충돌이라는 변수가 존재하지만 평균적으로 O(1)의 매우 빠른 시간만에 원하는 데이터를 탐색할 수 있는 구조이다. 해시 테이블을 이용한다면 인덱스는 (key, value) = (컬럼의 값, 데이터의 위치)로 구현하는데, 해시 테이블은 실제로 인덱스에서 잘 사용되지 않는다. 그 이유는, 해시 테이블은 등호(=) 연산에 최적화되어있기 때문이..
데이터베이스에서 인덱스를 사용하는 이유와 장단점에 대해 알아보겠습니다. 인덱스(Index)란? [ 인덱스의 개념을 설명할 때 가장 쉬운 방법은 책의 예를 드는 것이다 ] 예를 들어 책에서 "폭포수 모델"이라는 단어를 찾는다고 했을 때 맨 앞에서부터 한장 한장 "폭포수 모델"이라는 단어를 찾을 수도 있지만, 책의 맨 뒤에 있는 "찾아보기"를 이용하여 "폭포수 모델"을 찾을 수 있다. "찾아보기"는 가나다 순서로 이미 정렬되어 있어서 "ㅍ" 부분을 찾아보면 쉽게 "폭포수 모델" 단어를 찾을 수 있고, 그 옆에 페이지 번호가 적혀 있어서 그 페이지를 펼치면 바로 원하는 내용을 찾을 수 있다. 그런데 만약 책 뒤에 "찾아보기"가 없다면 어떨까? 어쩔 수 없이 책의 처음부터 끝까지 단어를 찾아야 한다. 만약 책의..
SQL 쿼리문을 작성할 때 사용되는 WHERE, GROUP BY, ORDER BY 절과 같은 구문을 실행하는데 순서가 존재합니다. 이 순서에 의해서 쿼리가 처리되고 어떻게 쿼리문을 작성하느냐에 따라 성능 차이가 발생할 수 있으며 쿼리 실행 시 최종적으로는 결과만 확인할 수 있기 때문에 좀 더 정확한 쿼리 작성을 위해 실행 작동 순서에 대해서 간단히 알아보겠습니다. 문법 작성 순서 1. SELECT 컬럼명 2. FROM 테이블명 3. WHERE 4. GROUP BY 5. HAVING 6. ORDER BY 실행 작동 순서 1. FROM : 조회 테이블 확인 SELECT부터 처리할 것 같지만, 쿼리의 가장 첫 번째 실행 순서는 FROM 절입니다. FROM 절에서는 테이블의 모든 데이터를 가져옵니다. 2. WH..
집계함수 집계함수는 말그대로 어떤 데이터를 집계하는 함수들을 의미합니다. 예를 들어 어떤 팀에 속한 사원의 수, 어떤 팀의 연봉합계, 어떤 팀의 나이의 평균 등 집계성 정보를 반환하는 함수들을 의미합니다. 또한 집계 함수는 다대일 함수이며, 많은 행의 정보를 입력으로 사용하여 모든 행을 요약하는 단일 값으로 축소합니다. COUNT 테이블에 존재하는 데이터 갯수를 가져오고 싶을 때 사용하는 함수입니다. 전체 행의 갯수를 가져올 때는 null 값도 포함하여 계산하지만, 특정 컬럼의 갯수를 가져올 때는 null 값은 제외되어 계산됩니다. 전체 행 갯수 가져오기 SELECT COUNT(*) FROM 테이블; 컬럼 데이터 갯수 가져오기 SELECT COUNT(컬럼) FROM 테이블; SUM 테이블에 존재하는 컬럼..