목록전체 글 (167)
변수의 기록

✅ 정규화 (Normalization) 개요정규화는 데이터의 중복을 최소화하고 이상 현상(Anomaly)을 방지하기 위해 테이블을 구조적으로 나누는 과정입니다. 주로 삽입, 삭제, 갱신 이상 (Insert/Delete/Update Anomalies) 을 방지하는 목적입니다.✅ 이상 현상 (Anomalies) 예시1. Insertion Anomaly (삽입 이상)특정 데이터를 저장하려면 불필요한 정보도 같이 저장해야 하는 문제 문제점1.데이터 중복 dept_id , dept_name 등 중복된 데이터 다수 (실수로 인한 데이터 불일치 가능성도 존재,저장공간 낭비)2. null 값 많이 쓰이게 됨. ( 임직원 없는 즉 부서만 입력시 혹은 반대 ) 올바른 db 설계 직원 , 부서 분리되어 삽입 삭제 등..
Repeatable Read에서 Write Skew가 발생하는 이유와 DBMS별 대응 전략 트랜잭션의 일관성을 보장하기 위한 격리 수준 중 하나인 `Repeatable Read`는 이름만 보면 마치 모든 데이터를 고정된 스냅샷으로 보장해줄 것처럼 보입니다. 하지만 실제로는 **Write Skew**와 같은 정합성 오류가 발생할 수 있는 여지가 있습니다. 이 글에서는 `Repeatable Read` 격리 수준에서 발생할 수 있는 Write Skew 현상을 설명하고, 이를 방지하기 위한 전략으로 **Locking Read (SELECT ... FOR UPDATE)** 나 **Serializable 격리 수준**을 사용하는 이유를 정리합니다. 또한, **Oracle, MySQL(InnoDB), PostgreS..

정답.import java.util.*;import java.io.*;public class Main { static int T,N; static int[] dp; public static void main(String[] args) throws IOException { // TODO Auto-generated method stub BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); T = Integer.parseInt(st.nextToken()); dp = new int[11]; dp[0]..

내가 최초 제출한답 (DP 사용 X )import java.util.*;import java.io.*;public class Main { static int T; static int N; static int count0 =0 ,count1 =0; public static void main(String[] args) throws IOException { // TODO Auto-generated method stub BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); T=Integer.parseInt(st.nextT..
MVCC와 Isolation Level – Oracle 예제1. MVCC란?**MVCC (다중 버전 동시성 제어)**는 동시성을 높이기 위해 트랜잭션마다 **자신만의 일관된 데이터 시점(snapshot)**을 제공하는 방식이다.MVCC를 사용하는 데이터베이스는 읽기와 쓰기 간의 충돌(Blocking)을 제거하고, 성능과 일관성을 동시에 추구한다.2. MVCC의 핵심 개념 구분설명읽기(read)특정 트랜잭션이 시작될 때의 "시점" 기준으로 commit된 데이터만 읽는다쓰기(write)기존 데이터를 직접 수정하지 않고, 새로운 버전의 데이터를 생성커밋 후 노출다른 트랜잭션은 오직 commit된 버전만 읽을 수 있다비차단 (non-blocking)읽기와 쓰기 작업은 서로 Lock을 걸지 않음 3. MVCC와..
데이터베이스 Lock과 2PL, 데드락까지 완벽 정리동시성을 제어하는 건 단순히 commit을 잘하는 걸 넘어서, **일관성, 격리성(ACID 중 I)**을 유지하는 핵심 기술입니다. 이 포스팅에선 Read/Write Lock, 2PL, 데드락, 그리고 MVCC까지 단계적으로 정리해봅니다.📌 1. Lock 호환성 (Lock Compatibility)DB는 트랜잭션 간의 충돌을 막기 위해 Lock을 사용합니다. read-lockwrite-lockread-lock✅ 가능❌ 불가능write-lock❌ 불가능❌ 불가능 read-lock (공유 잠금):다른 트랜잭션이 읽는 것은 가능, 쓰는 것은 불가여러 트랜잭션이 동시에 읽는 것 가능write-lock (배타 잠금):읽기/쓰기 둘 다 막음오직 단일 트랜잭션만..

처음 제시한 답package test;import java.util.*;import java.io.*;public class Backjun_1759 { static int L,C; static char[] list; static char[] result; static boolean[] visite = new boolean[26]; static boolean flag = false; static char[] contain = new char[] {'a','e','i','o','u'}; public static void main(String[] args) throws IOException { // TODO Auto-generated method stub BufferedReader br = new Buf..
1. 트랜잭션은 동시에 실행된다대부분의 데이터베이스 시스템은 성능을 위해 여러 트랜잭션을 동시에 병렬 실행시킨다.그런데 문제는, 이 과정에서 트랜잭션들이 서로 영향을 주고받을 수 있다는 점이다.그 영향은 때때로 심각하다.읽어서는 안 될 값을 읽거나, 중간에 사라지는 값을 읽고 계산하거나,더 나쁘면 트랜잭션이 업데이트한 결과가 통째로 덮어써지며 날아간다. 2. 동시에 실행될 때 발생하는 대표적인 이상 현상들 이상 현상설명Dirty Read아직 commit되지 않은 트랜잭션이 작성한 값을 읽음Non-repeatable Read같은 쿼리를 두 번 실행했는데 결과가 다름Phantom ReadWHERE 조건은 같지만, 행의 개수가 달라지는 현상 → 이런 현상들은 트랜잭션 격리 수준(Isolation Level..