2024/08/16 5

Isolation Level

다중 트랜잭션에서 발생할 수 있는 읽기 및 쓰기 문제문제 유형설명예시Dirty Read커밋되지 않은 데이터를 읽는 상황T1이 피자 가격을 2만 원으로 변경 중,T2가 이 가격을 읽고 T1이 롤백되면 T2의 결과는 잘못된 값이 된다.Non-Repeatable Read같은 트랜잭션 내에서 데이터 값이 달라지는 상황T1이 피자 가격을 3만 원으로 읽고,T2가 2만 원으로 변경 후 커밋, T1이 다시 읽을 때 2만 원으로 변경된 값을 읽는다.Phantom Read트랜잭션 중에새로운 데이터가 추가되거나 기존 데이터가 삭제되어결과가 달라지는 상황T1이 1만 원 이하의 피자를 조회하고,T2가 1만 원 이하로 피자를 추가 후T1이 다시 조회 시 새 피자가 포함된다.Dirty Write커밋되지 않은 트랜잭션이다른 트랜잭..

Database 2024.08.16

Recoverability

Unrecoverable Schedule트랜잭션 간의 의존성으로 인해, 일부 트랜잭션이 롤백될 때 데이터베이스가 이전의 일관된 상태로 복구될 수 없는 상황을 의미한다. 이러한 스케줄이 발생하면 데이터 일관성에 심각한 문제가 생길 수 있으므로, DBMS는 Unrecoverable Schedule을 허용해서는 안 된다.예시T1이 데이터를 변경한다.T1이 커밋하기 전에 T1이 변경한 데이터를 읽고 T2가 커밋한다.T1이 어떤 이유로 롤백되면, T2가 읽어 간 데이터는 잘못된 데이터가 되고, T2의 결과는 잘못된 데이터에 기반하게 된다. T2는 이미 커밋되었기 때문에, T1을 롤백한다고 하더라도 전체 시스템의 일관성을 회복할 수 없게 된다. Recoverable Schedule스케줄 내에서 트랜잭션은 자신이 읽..

Database 2024.08.16

Serializability

Lost Update두 개 이상의 트랜잭션이 동일한 데이터를 동시에 갱신하려고 할 때 발생하는 문제이다. 이로 인해 한 트랜잭션의 결과가 다른 트랜잭션에 의해 덮어써져 이전의 변경 내용이 사라지게 된다.예시:초기 상태: B의 계좌 잔액은 100만 원이다.트랜잭션 1 (T1): A가 B에게 20만 원을 입금한다.트랜잭션 2 (T2): B가 본인 계좌에 30만 원을 입금한다.Lost Update 시나리오:T1과 T2가 동시에 B의 잔액을 읽어온다. 두 트랜잭션은 B의 현재 잔액을 각각 100만 원으로 인식한다.T1이 B의 잔액에 20만 원을 더해 120만 원으로 업데이트한다.T2가 B의 잔액에 30만 원을 더해 130만 원으로 업데이트한다.최종 결과: B의 잔액은 130만 원이 되며, T1에서 수행한 20만..

Database 2024.08.16

Trigger

데이터베이스에서 특정 이벤트가 발생할 때 자동으로 실행되는 특별한 유형의 프로시저이다.특정 테이블에서 데이터가 변경될 때(INSERT, UPDATE, DELETE) 자동으로 실행되며, 보통 데이터 무결성을 유지하거나 자동으로 로그를 기록하는 데 사용된다.자동화: 데이터 변경 시 자동으로 실행되므로, 데이터 무결성을 유지하거나 특정 작업을 자동화할 수 있다.일관성: 동일한 작업을 반복적으로 수행할 수 있어 데이터베이스 내에서 일관성을 유지할 수 있다.보안: 트리거를 사용해 민감한 데이터 변경을 감지하고 로그를 기록하거나 특정 행동을 취할 수 있다.가시성 부족: 트리거는 자동으로 실행되므로, 디버깅이 어렵고 예상치 못한 동작을 유발할 수 있다.성능 저하: 잘못 설계된 트리거는 성능 저하를 초래할 수 있다. ..

Database 2024.08.16

Stored Procedure

데이터베이스 관리 시스템(RDBMS)에 저장되어 특정 작업을 수행하는 로직을 정의한 코드 블록이다.여러 SQL 작업을 절차적으로 수행할 수 있도록 지원하며, 복잡한 비즈니스 로직을 캡슐화하여 데이터베이스에서 직접 실행할 수 있다.하나의 구체적인 작업을 수행하는 데 적합하다.조건문을 사용하여 로직을 분기 처리할 수 있으며, 반복문을 통해 반복 작업을 수행할 수 있다.에러 처리를 위한 로직을 포함할 수 있으며, 특정 상황에 따라 에러를 발생시킬 수도 있다.입력(IN), 출력(OUT), 입력 및 출력(INOUT) 파라미터를 사용하여 데이터를 주고받을 수 있다. 예제 1: 두 정수의 곱셈 결과를 반환하는 프로시저두 개의 정수를 입력받아 그 곱을 출력하는 프로시저.DELIMITER $$CREATE PROCEDUR..

Database 2024.08.16