본문 바로가기

SQL & 데이터베이스/데이터 무결성 & 트랜잭션

(5)
ORA-00060: Deadlock Detected 오류 해결 방법 [SQL] ORA-00060: Deadlock Detected 오류 해결 방법1. ORA-00060 오류란?ORA-00060 오류는 두 개 이상의 트랜잭션이 서로의 자원을 점유한 상태에서,각자 상대방의 자원이 해제되기를 기다리면서 무한 대기 상태에 빠질 때 발생합니다.이를 데드락(Deadlock)이라고 합니다.2. 데드락이 발생하는 상황서로 다른 세션이 같은 테이블을 동시에 업데이트하거나,순서가 다른 트랜잭션 간에 서로 락을 걸면서 발생합니다.-- Session ABEGIN;UPDATE employees SET salary = salary + 100 WHERE id = 1;-- 동시에 Session B에서 실행BEGIN;UPDATE employees SET salary = salary + 200 WHER..
[SQL] 데이터 정규화(Normalization)란? - 개념과 장단점, 과정별 설명 [SQL] 데이터 정규화(Normalization)란? - 개념과 장단점, 과정별 설명1. 데이터 정규화(Normalization)란?데이터 정규화(Normalization)는 데이터베이스에서 중복을 최소화하고, 데이터 일관성을 유지하기 위해 데이터를 구조화하는 과정입니다. 정규화를 통해 데이터를 여러 개의 테이블로 나누고, 관계(Relationship)를 설정하여 불필요한 데이터 중복을 제거할 수 있습니다.2. 데이터 정규화의 장단점✅ 장점데이터 중복 제거로 저장 공간 절약데이터 무결성(Integrity) 유지데이터 삽입, 삭제, 수정 시 일관성 유지❌ 단점테이블이 많아지면서 JOIN 연산 증가 → 성능 저하 가능복잡한 쿼리 작성 필요3. 정규화 과정(Normalization Forms)정규화는 보통 ..
[SQL] PRIMARY KEY vs UNIQUE KEY 차이점 [SQL] PRIMARY KEY vs UNIQUE KEY 차이점1. PRIMARY KEY와 UNIQUE KEY란?데이터베이스에서 PRIMARY KEY(기본 키)와 UNIQUE KEY(고유 키)는 테이블의 데이터 무결성을 유지하는 데 사용됩니다.두 키 모두 **중복을 허용하지 않지만, 차이점이 있습니다.**2. PRIMARY KEY vs UNIQUE KEY 비교특징PRIMARY KEYUNIQUE KEY중복 허용 여부❌ 중복 불가능❌ 중복 불가능NULL 허용 여부❌ NULL 값 불가능✅ NULL 값 가능테이블당 개수1개만 가능여러 개 가능인덱스자동으로 클러스터형 인덱스 생성자동으로 비클러스터형 인덱스 생성사용 목적각 행을 고유하게 식별중복 방지 및 데이터 무결성 보장3. PRIMARY KEY 예제✅ PRIM..
[SQL] 트랜잭션(Transaction) 개념 및 오라클 예제 [SQL] 트랜잭션(Transaction) 개념 및 오라클 예제1. 트랜잭션(Transaction)이란?트랜잭션(Transaction)은 데이터베이스에서 **하나의 논리적인 작업 단위**를 의미합니다.즉, 여러 개의 SQL 문장을 하나의 작업 단위로 묶어 **모두 성공하거나, 모두 실패해야 하는 원칙**을 따릅니다.✔️ 예시: 은행 계좌 이체를 생각해보면, - A 계좌에서 **100만 원을 출금**하고 - B 계좌에 **100만 원을 입금**하는 작업은 **둘 중 하나라도 실패하면 전체 작업이 취소되어야 합니다.**2. 트랜잭션의 주요 특성 (ACID 원칙) ✅ 원자성(Atomicity): 트랜잭션 내의 모든 작업이 **모두 수행되거나, 전혀 수행되지 않아야 함** ✅ 일관성(C..
[SQL] Deadlock(교착 상태) 문제 해결 방법 [SQL] Deadlock(교착 상태) 문제 해결 방법📌 Deadlock(교착 상태)이란?Deadlock(교착 상태)은 두 개 이상의 트랜잭션이 서로가 가진 자원의 잠금(Lock)이 해제되기를 기다리면서 **무한 대기 상태**에 빠지는 현상을 의미합니다.즉, 트랜잭션 A는 트랜잭션 B가 잠근 자원을 기다리고, 트랜잭션 B는 트랜잭션 A가 잠근 자원을 기다리면서 교착 상태가 발생합니다.📌 Deadlock 발생 원인과 해결 방법1️⃣ 동일한 테이블에서 서로 다른 트랜잭션이 교차적으로 데이터를 수정할 때설명: 두 개의 트랜잭션이 동일한 테이블의 서로 다른 행을 잠근 후, 상대방의 잠긴 데이터를 기다리는 경우 Deadlock이 발생할 수 있습니다.오류 발생 예제:-- 트랜잭션 ABEGIN;UPDATE acc..