본문 바로가기

DataBase23

[DB] 테이블 설계의 중요성 참고 자료유투브 쉬운코드 DB 테이블 설계 잘못하면 어떤 문제가 생길 수 있을까요?잘못 설계된 테이블의 여러 가지 문제점 EMPLOYEE_DEPARTMENT: 잘못 설계한 테이블  현재 EMPLOYEE_DEPARTMENT 에 2개의 튜플 데이터가 있다. MESSI, JINHO는 같은 부서이다. 그래서 dept_id, dept_name, dept_leader_id 같이 부서 관련된 정보가 중복된다.  이런 중복된 데이터의 문제점은 뭘까?1. 저장 공간 낭비2. 실수로 인한 데이터 불일치 가능성 존재 (똑같은 부서인데 수기로 입력하면 dept_id, dept_name, dept_leader_id가 다를 수 있다.) Insertion Anomalies (삽입 이상) 아직 부서 배치를 받지 않은 사원 데이터 추.. 2024. 11. 14.
[MySQL] MVCC(Multi Version Concurrency Control) 참고 자료 유투브 쉬운코드 DB MVCC MVCC 등장 배경 https://20240228.tistory.com/410 [MySQL] Lock을 활용한 concurrency control (2PL)참고 자료 유투브 쉬운코드 LOCK을 활용한 concurrency controlLock 데이터베이스 락(lock)은 동시성 문제를 방지하고 데이터의 무결성을 유지하기 위해 필수적이다. 락을 걸지 않으면 여러 트랜잭션이20240228.tistory.com 초창기의 RDBMS가 동시성 제어를 위해 사용한 LOCK을 활용하는 2PL 방식은read - read conflict 케이스를 제외하고는 write - write / write - read / read - write 에서는 트랜잭션들이 서로 대기 상태에 빠지게 .. 2024. 11. 14.
[MySQL] Lock을 활용한 concurrency control (2PL) 참고 자료 유투브 쉬운코드 LOCK을 활용한 concurrency controlLock 데이터베이스 락(lock)은 동시성 문제를 방지하고 데이터의 무결성을 유지하기 위해 필수적이다. 락을 걸지 않으면 여러 트랜잭션이 동시에 동일한 데이터를 수정하려고 할 때 충돌이 발생하여 데이터가 손상되거나 일관성을 잃을 수 있다. 즉, 이상 현상이 일어날 수 있다. 예제1 흐름 x 시작: 50 트랜잭션1: write_lock 획득 트랜잭션2: write_lock 획득 X트랜잭션1: x = 20 변경트랜잭션1: write_lock 반환트랜잭션2: write_lock 획득트랜잭션2: x = 90 변경트랜잭션2: write_lock 반환예제2 흐름 x 시작: 10트랜잭션1: write_lock 획득트랜잭션2: read_l.. 2024. 11. 14.
[MySQL] 트랜잭션 격리 레벨 참고 자료 유투브 쉬운코드 트랜잭션 격리 레벨Dirty Read처음에 x는 10 y는 20 이었다. 트랜잭션1이 트랜잭션2의 커밋되지 않은 write(y = 70)값을 읽어서 최종적으로 x = 80, y = 20 이라는 이상 현상(Anomaly)이 발생되었다.  이런 이상 현상은 격리 레벨(READ UNCOMMITTED)에서 발생할 수 있다. Non - Repetable Read (Fuzzy Read) x는 처음에 10 이었다. 트랜잭션1의 첫 번째 read 10 지만 중간에 트랜잭션2가 x를 50으로 바꾸고 커밋해서 트랜잭션1의 두 번째 read 50으로 트랜잭션 첫 번째 실행 결과와 다른 이상 현상 Non - Repetable Read 현상이 발생했다.  이런 이상 현상은 격리 레벨(READ COMM.. 2024. 11. 14.
[MySQL] concurrency control 기초2 (recoverability) 참고 자료 유투브 쉬운코드 동시성 제어 예제schedule 개념과 serializability에 대한 개념이 없으면 이전 글을 참고하자 https://20240228.tistory.com/407 [MySQL] concurrency control 기초1 (schedule, serializability)참고 자료 유투브 쉬운코드 동시성 제어여러가지 트랜잭션 실행 케이스 트랜잭션1 K가 H에게 20만원 입금  트랜잭션2 H가 자신 계좌에 30만원 입금  해당 2개의 트랜잭션은 여러 형태의 실행이20240228.tistory.com 트랜잭션1 K가 H에게 20만원 입금  트랜잭션2 H가 자신 계좌에 30만원 입금  트랜잭션1 commit 이후 트랜잭션2가 rollback 하면서 20만원이 증발했다. schedu.. 2024. 11. 13.
[MySQL] concurrency control 기초1 (schedule, serializability) 참고 자료 유투브 쉬운코드 동시성 제어여러가지 트랜잭션 실행 케이스 트랜잭션1 K가 H에게 20만원 입금  트랜잭션2 H가 자신 계좌에 30만원 입금  해당 2개의 트랜잭션은 여러 형태의 실행이 가능할 수 있다.  CASE1 CASE2 CASE3 CASE4 (Lost Update)operation 실행된 각 쿼리를 의미한다.  각 CASE를 operation 간소화 r1(K) 의미: READ / 트랜잭션1 / K 계좌 c1 의미: 트랜잭션1 commit Schedule 개념 여러 트랜잭션들이 동시에 실행될 때 각 트랜잭션에 속한 operation들의 실행 순서각 트랜잭션 내의 operations들의 순서는 바뀌지 않는다. Serial Schedule 개념 CASE1, CASE2 같이 동시에 실행된 트랜잭.. 2024. 11. 13.