본문 바로가기

Database18

트랜잭션 트랜잭션(Transaction) 기초정의:트랜잭션은 데이터베이스에서 하나의 논리적 작업 단위를 의미하며, 하나의 트랜잭션 안의 모든 연산은 전체가 실행되거나 전혀 실행되지 않아야 함.트랜잭션의 상태:활동(Active): 트랜잭션이 실행 중부분 커밋(Partially Committed): 마지막 연산이 완료된 상태 (아직 커밋 안됨)커밋(Committed): 트랜잭션 성공 → 변경사항이 확정실패(Failed): 오류 발생, 실패 상태철회(Aborted): 실패 후 롤백 수행, 이전 상태로 복구ACID 특성트랜잭션이 지켜야 하는 4가지 핵심 속성원자성 (Atomicity)전부 성공하거나 전부 실패, 중간 없음일관성 (Consistency)트랜잭션 전·후 데이터 무결성 유지고립성 (Isolation)트랜잭션이.. 2025. 5. 14.
해싱과 특수 인덱싱 해싱(Hasing) 기법해시 함수 (Hash Function)정의: 탐색키에 산술적인 연산을 통해 버킷의 주소를 계산하는 함수.역할:레코드의 탐색키 값을 입력받아 해당 레코드를 저장하거나 찾을 버킷 주소를 결정.가장 이상적인 해시 함수는 탐색키의 값들이 균등하게 분포되도록 설계되어야 함.충돌이 적고, 빠른 접근이 가능한 함수가 이상적.해시 파일 구조버킷(Bucket): 한 개 이상의 레코드를 저장할 수 있는 저장 공간 단위 (보통 블록 단위(4KB) 와 동일).구조:탐색키 → 해시함수 → 버킷버킷 내에 레코드 저장, 충돌 발생 시 오버플로우 발생.정적 해싱의 특징버킷 개수 고정: 초기 생성 시 고정된 버킷 수.충돌 발생 시: 체인 방식(포인터 연결) 또는 다음 버킷에 저장(오버플로 체인) 방식 사용.성능.. 2025. 5. 13.
인덱싱 인덱스 개념 및 필요성인덱싱 (Indexing)데이터베이스에서 인덱스를 생성하고 구성하는 작업인덱스 (Index)데이터 검색의 효율성을 높이기 위한 부가적인 자료구조대량 데이터에서 원하는 레코드를 빠르게 찾기 위해 사용인덱스가 없을 경우 → 순차 검색 (Sequential Search)파일 내의 모든 레코드를 처음부터 끝까지 탐색데이터 양이 많아질수록 성능 심각하게 저하인덱스의 종류1. 순서 인덱스 (Ordered Index)레코드들이 탐색키 기준으로 정렬된 순차 파일인덱스 엔트리 구조: 탐색키 값 + 레코드 포인터실무에서 가장 널리 사용되는 형태 → B+-트리 인덱스2. 해시 인덱스 (Hashed Index)탐색키에 해시 함수를 적용하여 인덱스 엔트리 생성정확한 키 검색은 빠르지만 범위 검색 비효율적O.. 2025. 5. 13.
데이터 저장과 파일 저장장치 추상화 계층(1) 주요 개념DBMS는 사용자에게 물리적 저장 방식을 숨기고, 논리적 관점에서 데이터를 정의하고 조작할 수 있게 한다.사용자나 개발자는 파일 시스템, 디스크 구조를 직접 알 필요 없이 데이터 모델과 질의 언어(SQL 등)만 사용한다.(2) 물리적 저장 구조가 중요한 이유실제 저장방식은 DB 성능에 직접적인 영향을 미친다.DBA(데이터베이스 관리자)는 물리적 저장 방식, 파일구조, 접근 방법까지 잘 이해해야 한다.저장장치의 계층 구조(1) 저장장치 접근 속도별 계층레지스터 → 캐시 → 메인 메모리 → 자기 테이프, 플래시 메모리 → 광학 디스크, 자기 테이프(←←용량이 적고, 가격이 비싸짐←←)상위 계층접근 빠름, 고가, 주로 휘발성캐시(CPU내부에 위치 자주 사용 할 데이터를 저장.. 2025. 4. 29.
저장 객체 저장 객체SQL은 비절차적(선언형) 언어로, 원하는 결과는 명시하지만 어떻게 처리할지는 직접 제어하지 못함.이 한계를 보완하기 위해 절차형 구조(조건문, 반복문 등)를 포함한 저장 객체가 도입됨.저장 객체는 데이터베이스 내부에 저장되어, 자주 사용하는 로직을 모듈화하고, 실행 효율성과 보안성을 높여주는 요소.주요 저장 객체 유형저장 프로시저 (Stored Procedure)복잡하거나 반복적인 SQL 명령문을 하나의 객체로 정의하여 호출 가능CALL로 실행, 결과 반환 없이 작업 수행함수 (Function)연산 결과를 RETURN 문으로 반환하는 저장 객체SELECT 문에 포함되어야 호출 가능, 하나의 반환값트리거 (Trigger)특정 테이블에 대해 INSERT, UPDATE, DELETE 이벤트 발생 시.. 2025. 4. 16.
정규화 1. 정규화란?정규화(Normalization)는 데이터베이스 설계 과정에서 데이터의 중복을 줄이고, 데이터 삽입/삭제/수정 시 발생할 수 있는 이상(anomaly)을 방지하기 위해 릴레이션(테이블)을 구조적으로 재구성하는 과정입니다.동일한 정보를 담는 릴레이션 스키마라도 속성 구성 방식에 따라 성능과 정확성에 큰 차이가 발생할 수 있습니다.정규화는 데이터베이스의 효율성, 일관성, 유지보수성을 확보하는 핵심 설계 기법입니다.2. 정규화의 필요성정규화는 다음과 같은 갱신 이상(Update Anomaly) 문제를 해결:삽입 이상데이터를 삽입하려 해도 불필요한 다른 정보도 함께 입력해야 하는 문제삭제 이상일부 데이터를 삭제하면 원하지 않는 다른 정보까지 함께 삭제되는 문제수정 이상하나의 데이터 변경을 위해 여.. 2025. 4. 16.
SQL(4) 1. 중첩 질의(Subquery)란?하나의 SQL 문 안에 또 다른 SELECT 문이 포함된 것보통 괄호 () 안에 작성메인 쿼리가 서브쿼리(=중첩 질의)의 결과를 사용WHERE, FROM, SELECT, HAVING 절 등 다양한 위치에 들어갈 수 있음2. 기본 구조SELECT 컬럼1, 컬럼2, ...FROM 테이블명WHERE 컬럼 비교연산자 (SELECT ... FROM ... WHERE ...);3. 중첩 질의 위치별 설명(1) WHERE절의 중첩 질의조건식으로 사용하는 서브쿼리→ "이 값과 같은 것", "이 목록에 포함된 것" 등구조SELECT 컬럼1, 컬럼2FROM 테이블WHERE 컬럼명 = (SELECT ... FROM ... WHERE ...);최고 점수를 받은 학생SELECT name, s.. 2025. 3. 28.
SQL(3) SELECT 전체 문법 구조SELECT [DISTINCT] 컬럼1, 컬럼2, ...FROM 테이블1 [INNER JOIN | LEFT/RIGHT OUTER JOIN] 테이블2 ON 조인 조건1 [INNER JOIN | LEFT/RIGHT OUTER JOIN] 테이블3 ON 조인 조건2 ...WHERE 조건식 [서브쿼리 가능]GROUP BY 컬럼1, 컬럼2, ...HAVING 조건식ORDER BY 컬럼1 [ASC|DESC], 컬럼2 [ASC|DESC], ... 데이터 정렬 — ORDER BY결과 데이터를 정렬된 순서대로 출력할 때 사용합니다.SELECT 컬럼1, 컬럼2, ...FROM 테이블명ORDER BY 정렬기준컬럼 [ASC|DESC], ...;ASC오름차순 (기본값)DESC내림차순SE.. 2025. 3. 28.
SQL(2) DML(데이터 조작 언어)실행 즉시 방영되는 영구적 변경을 위한 명령어의 집합이 아니며 복구가 가능(설정에 따라 복구가 불가능 할 수 있다.)1. INSERT 문 — 데이터 삽입테이블에 새로운 데이터를 추가기본 문법INSERT INTO 테이블명 (컬럼1, 컬럼2, ...)VALUES (값1, 값2, ...);예시INSERT INTO Student (id, name, age)VALUES (1, '철수', 20);모든 컬럼 순서대로 값을 넣을 경우 컬럼 생략 가능:INSERT INTO Student VALUES (2, '영희', 22);INSERT INTO ... VALUES ...는 우리가 직접 값을 써서 삽입하는 방식이고,INSERT INTO ... SELECT ... 문은 다른 테이블의 검색결과를 기반.. 2025. 3. 28.