목록전체 글 (144)
변수의 기록
1. 트랜잭션은 동시에 실행된다대부분의 데이터베이스 시스템은 성능을 위해 여러 트랜잭션을 동시에 병렬 실행시킨다.그런데 문제는, 이 과정에서 트랜잭션들이 서로 영향을 주고받을 수 있다는 점이다.그 영향은 때때로 심각하다.읽어서는 안 될 값을 읽거나, 중간에 사라지는 값을 읽고 계산하거나,더 나쁘면 트랜잭션이 업데이트한 결과가 통째로 덮어써지며 날아간다. 2. 동시에 실행될 때 발생하는 대표적인 이상 현상들 이상 현상설명Dirty Read아직 commit되지 않은 트랜잭션이 작성한 값을 읽음Non-repeatable Read같은 쿼리를 두 번 실행했는데 결과가 다름Phantom ReadWHERE 조건은 같지만, 행의 개수가 달라지는 현상 → 이런 현상들은 트랜잭션 격리 수준(Isolation Level..

트랜잭션 스케줄은 왜 회복 가능해야 할까?Recoverable / Cascadeless / Strict Schedule 완전 정리데이터베이스는 동시성(Concurrency)을 보장해야 하지만, 동시에 발생하는 트랜잭션이 모두 문제없이 끝나는 것은 아닙니다. 일부 트랜잭션은 롤백되기도 하고, 이로 인해 다른 트랜잭션까지 영향을 받을 수 있습니다.따라서 DBMS는 단순히 serializable한 스케줄만을 고려해서는 안 되며, rollback 상황에서도 데이터 정합성을 유지할 수 있는 스케줄, 즉 **회복 가능한 스케줄(Recoverable Schedule)**을 반드시 보장해야 합니다.1. 스케줄(Schedule) 복습스케줄이란, 여러 트랜잭션의 연산(read/write)이 실제로 어떤 순서로 실행되었는지..
트랜잭션이 동시에 실행될 때, 우리는 무엇을 보장해야 할까?데이터베이스에서 여러 사용자가 동시에 트랜잭션을 수행한다면 어떤 일이 벌어질까요?예를 들어, 두 명의 사용자가 동시에 같은 은행 계좌에 접근해 금액을 업데이트한다고 가정해봅시다.T1: 1000원을 출금T2: 2000원을 입금정상이라면 결과는 잔고 +1000원이 되어야겠지만, 두 트랜잭션이 얽혀 실행되면 예기치 못한 결과가 발생할 수 있습니다. 이처럼 트랜잭션의 실행 순서는 단순히 성능을 넘어서 데이터의 정확성과 직결됩니다.스케줄(Schedule)이란?스케줄은 여러 트랜잭션이 동시에 실행될 때, 각 연산(읽기, 쓰기)이 실제로 어떤 순서로 실행되었는지를 기록한 것입니다.중요한 점은:각 트랜잭션 내부의 연산 순서는 바뀌지 않지만여러 트랜잭션이 뒤섞여..
데이터베이스 트랜잭션과 ACID 완전 정리 (Oracle 중심 + Java 예제 포함)트랜잭션(Transaction)이란?트랜잭션은 하나의 논리적 작업 단위 (logical unit of work) 를 의미합니다.일반적으로 여러 SQL 문장을 하나의 트랜잭션으로 묶어, 전부 성공하거나 전부 실패하게 만들어야 합니다.예를 들어, 계좌이체는 출금과 입금이 동시에 성공하거나 동시에 실패해야 합니다.핵심 특징트랜잭션에 포함된 SQL 일부만 실행되어 반영되는 일은 절대 없어야 합니다.데이터 정합성과 일관성을 유지하기 위해 필수적인 개념입니다.Oracle의 트랜잭션 처리 방식트랜잭션의 시작과 종료Oracle에서는 INSERT, UPDATE, DELETE 같은 DML 문이 실행되면 트랜잭션이 자동으로 시작됩니다.트랜..

import java.util.*;import java.io.*;public class Backjun_15649 { static int N, M; static int[] result; static boolean[] visited; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); N = Integer.parseInt(st.nextToken()); ..
트리거(Trigger)란? — Oracle 기준으로 정리하는 SQL 트리거의 개념과 실무 주의사항1. 트리거(Trigger)의 사전적 의미와 개념Trigger는 사전적으로는 아래와 같은 의미를 가집니다:총기의 방아쇠사건을 유발하는 계기어떤 반응을 촉발시키는 요소 (to set off)자동 작동시키는 장치 (to set on)이를 데이터베이스 관점에서 해석하면 다음과 같습니다:트리거는 특정 이벤트(INSERT, UPDATE, DELETE)가 발생했을 때 자동으로 실행되는 절차형 객체로, 명시적으로 호출하지 않아도 자동으로 작동하는 DB 내부 로직입니다.Oracle DB에서 트리거는 테이블 또는 뷰에 부착되며, 다음과 같은 구조로 동작합니다:BEFORE 또는 AFTER 특정 DML(INSERT, UPDATE..
Stored Procedure의 장단점과 일반 백엔드에서의 활용 시 주의점1. Stored Procedure란?Stored Procedure(저장 프로시저)는 SQL 구문을 미리 데이터베이스에 저장해두고, 이를 이름을 통해 실행할 수 있는 일종의 서버 측 함수입니다. 반복되는 DB 연산이나 특정 트랜잭션을 캡슐화하여 효율적으로 관리할 수 있도록 도와주는 도구입니다.2. Three-tier Architecture와 Stored Procedure현대적인 웹 시스템은 대개 다음의 세 계층으로 구성된 Three-tier Architecture를 따릅니다:Presentation Layer: 사용자 인터페이스 (예: React, Vue 등)Application Layer: 비즈니스 로직 처리 (예: Spring, ..

Stored Procedure와 Stored Function의 차이 DBMS에서 자주 쓰이는 저장 객체인 **Stored Procedure(저장 프로시저)**와 **Stored Function(저장 함수)**는 언뜻 비슷해 보이지만, 용도와 실행 방식에 있어 중요한 차이가 존재합니다. 각자의 역할과 제약을 이해하고 적절하게 사용하는 것이 중요합니다.1. 생성 문법항목Stored ProcedureStored Function생성 문법CREATE PROCEDURECREATE FUNCTION값 반환RETURN 키워드 사용 불가 (SQL Server에서는 상태 코드용으로 사용 가능)RETURN 키워드로 반드시 반환값 존재 2. 파라미터와 값 반환항목Stored ProcedureStored Function파라미터로..