[DB] PhantomRead란?
·
면접 준비/DB
Phantom Read(팬텀 리드)란? 팬텀 리드는 같은 트랜잭션 내에서 동일한 조건으로 여러 번 데이터를 조회했을 때, 새로운 행이 추가되거나 삭제되어 결과가 달라지는 현상입니다. 즉, 트랜잭션이 실행되는 동안 다른 트랜잭션에 의해 새로운 데이터가 삽입되거나 삭제되어, 처음 조회한 결과와 이후 조회한 결과가 달라지는 문제입니다.📌 Phantom Read 예제 1️⃣ 문제 상황 1. A 트랜잭션이 WHERE 조건을 만족하는 데이터를 조회합니다. 2. B 트랜잭션이 새로운 데이터를 INSERT합니다. 3. A 트랜잭션이 동일한 조건으로 다시 조회하면, 처음 조회할 때 없던 데이터가 추가된 것을 확인할 수 있습니다. 4. 동일한 SELECT 쿼리를 실행했는데도 새로운 데이터가 추가되면서 결과가 변경됨 → ..
[DB / Transaction] 트랜잭션 고립 수준
·
면접 준비/DB
트랜잭션 격리 수준(Isolation Level) 트랜잭션 격리 수준(Isolation Level)은 하나의 트랜잭션이 다른 트랜잭션의 변경 사항을 볼 수 있는 정도를 정의하는 규칙입니다.즉, 데이터의 일관성을 유지하면서 동시성을 관리하는 방법을 결정하는 중요한 요소입니다. 1. 트랜잭션에서 발생할 수 있는 동시성 문제 트랜잭션이 동시에 실행될 때, 아래와 같은 문제가 발생할 수 있습니다.문제 유형설명Dirty Read (더티 리드)다른 트랜잭션이 커밋하지 않은 데이터를 읽는 문제Non-Repeatable Read (반복 불가능한 읽기)같은 데이터를 읽었을 때 값이 변경되는 문제Phantom Read (팬텀 리드)같은 조건으로 조회했을 때 새로운 행이 추가되거나 삭제되는 문제각 트랜잭션 격리 수준은 이러..
[DB / JPA] 낙관적 락과 비관적 락
·
면접 준비/DB
비관적 락과 낙관적 락의 차이점 비관적 락(Pessimistic Lock)과 낙관적 락(Optimistic Lock)은 동시성 제어(Concurrency Control) 를 위해 사용되는 두 가지 대표적인 방식입니다.1. 비관적 락(Pessimistic Lock) 비관적 락은 데이터를 수정하는 동안 다른 트랜잭션이 해당 데이터를 변경하지 못하도록 차단하는 방식입니다. 즉, 트랜잭션이 시작되면 즉시 잠금을 걸고, 트랜잭션이 종료될 때까지 다른 트랜잭션이 접근할 수 없도록 하는 방식입니다. 특징 ✅ 장점 • 경쟁이 심한 환경에서도 안전하게 데이터 정합성을 보장할 수 있습니다. • 동시성 충돌이 발생할 가능성이 높은 경우 적합합니다. ❌ 단점 • 잠금이 유지되는 동안 다른 트랜잭션이 대기해야 하므로 성능 저하..
[면접 스터디용 질문 리스트] OS / DB / NETWORK/ MSA
·
면접 준비
OS1. 커널의 역할:커널은 운영체제의 핵심 부분으로 하드웨어와 소프트웨어 간의 중재 역할을 합니다. CPU, 메모리, 디스크, 네트워크 등 시스템 자원을 관리하고, 시스템 콜을 통해 애플리케이션과 하드웨어 사이의 인터페이스를 제공합니다. 또한 프로세스 스케줄링, 메모리 관리, 파일 시스템 관리를 담당하며, 하드웨어에 대한 직접적인 접근을 추상화하여 사용자와 프로그램이 안전하게 자원을 사용할 수 있도록 합니다. 2. 문맥 교환 문제점:문맥 교환은 CPU가 하나의 프로세스에서 다른 프로세스로 전환할 때 발생하는 작업입니다. 지나치게 자주 발생하면 CPU가 작업을 전환하는 데 많은 시간을 소모하게 되어, 실제로 유용한 작업을 처리하는 시간은 줄어듭니다. 이로 인해 성능이 저하되고 응답 시간이 길어지며, 시스..
[면접 스터디용 질문 리스트] JAVA/SPRING/JPA/Redis/ 면접 질문 리스트 10개 씩
·
면접 준비
JAVA객체지향원칙의 OOP와 SOLID에 대해 예시와 함께 설명해주세요답변 :캡슐화객체의 데이터(필드)를 직접 접근하지 못하게 하고, 메서드를 통해서만 접근할 수 있도록 보호하는 개념입니다. 데이터를 보호하고 무결성을 유지할 수 있습니다. 이 방식 뿐만 아니라 접근 제한자, 인터페이스를 사용하여 필드, 메서드, 클래스를 캡슐화 하는 방법도 존재합니다.-> 그럼 접근 제한자로는 어떻게 캡슐화를 할 수 있죠?접근 제한자는 네 가지로 public, protected, default, private로 나눌 수 있습니다. public은 모든 패키지에서 임포트하여 사용할 수 있습니다. protected는 자신이 속한 패키지와 클래스를 상속받은 클래스에서 사용 가능합니다. package는 자신이 속한 패키지에서만 ..
[CS -DB] Index 상식, JPA에서 자동생성하는 Index, Index가 많아지면 생기는 문제
·
면접 준비
데이터베이스 인덱스(Index)란? 인덱스가 많아지면 생기는 문제데이터베이스를 다루다 보면 '인덱스(Index)'라는 개념을 자주 접하게 된다. 인덱스는 데이터 검색 속도를 향상시키는 핵심적인 요소지만, 무분별하게 생성하면 오히려 성능 저하를 초래할 수 있다. 이번 글에서는 인덱스의 의미와 사용해야 하는 경우, 그리고 인덱스가 많아질 때 발생하는 문제까지 논리적으로 정리해 보겠다.1. 인덱스(Index)란?인덱스(Index)는 데이터베이스 테이블에서 특정 컬럼의 값을 빠르게 찾을 수 있도록 도와주는 자료구조이다. 책의 목차와 비슷한 역할을 하며, 특정 데이터를 검색할 때 테이블 전체를 탐색하는 것이 아니라, 인덱스를 통해 빠르게 원하는 데이터를 찾을 수 있다.인덱스의 기본 개념과 종류1) B-Tree (..