DataBase/MySQL17 [MySQL] DBCP 개념, 설정 참고 자료 유투브 쉬운코드 DBCPDPCP(DB connection pool)사용 X 문제점 해당 그림은 백엔드 서버와 DB 서버의 통신 과정이다. 백엔드 서버와 DB 서버는 네트워크를 통해서 통신하는데 이때 TCP 기반으로 동작한다. TCP는 연결지향적 통신 프로토콜인데 높은 송수신 신뢰성이 특징이다. 쿼리를 요청하기 전에 open connection 쿼리 응답을 받고 close connection 과정이 있는데open/close connection 과정이 간단하지 않다. open connection (3-way Handshake)TCP 연결을 설정할 때 거치는 과정이다. SYN(Synchronize)클라이언트(백엔드 서버)가 서버(DB 서버)와 연결을 시작하려면, 먼저 DB 서버로 SYN 패킷을 .. 2024. 11. 16. [MySQL] DB 인덱스(index) 참고 자료 유투브 쉬운코드 DB 인덱스인덱스 유무에 따른 성능 차이 현재 쿼리는 CUSTOMER 테이블에서 first_name 이 'Minsoo'인 튜플을 찾는 예제이다. first_name에 index가 걸려있지 않다면?full scan(=table scan)으로 찾아야 한다 이는 O(N)이 걸린다. first_name에 index가 걸려있다면? full scan 보다 더 빨리 찾을 수 있다.O(logN): B-tree based index Index를 쓰는 이유특정 조건을 만족하는 튜플(들)을 빠르게 조회하기 위해빠르게 정렬(order by)하거나 그룹핑(group by)하기 위해이미 생성된 테이블에 Index를 거는 문법테이블 생성 create table team ( id int prim.. 2024. 11. 15. [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. 이전 1 2 3 다음