MySQL 기본적인 Locking & 격리 수준MySQL의 기본적인 Lock기본적으로 REPEATABLE READ 격리 수준을 사용한다.MVCC (Multi-Version Concurrency Control)을 활용하여 데이터 일관성을 유지합니다.트랜잭션이 진행되는 동안 동일한 데이터를 읽으면 변경된 데이터는 보이지 않습니다. (커밋된 새로운 트랜잭션의 데이터가 반영되지 않음)SELECT 시 Read Lock 걸지 않음select 쿼리는 잠금을 걸지 않음MVCC를 사용해 트랜잭션이 시작된 시점의 데이터 스냅샷 반환UPDATE / DELETE 시 Record Lock (행 단위)행에 대해 Record Rock을 획득합니다.해당 행이 다른 트랜잭션에서 수정되지 않도록 방지GAP Lock (Phantom Re..
Segment와 Packet 정보 차이결론Segment는 전송 계층에서 다루는 데이터 단위Packet은 네트워크 계층에서 다루는 데이터 단위1. 애플리케이션이 데이터를 보냅니다. (웹 요청)2. 전송 계층에서 TCP/UDP가 데이터를 세그먼트로 나눕니다.2-1. TCP의 경우 데이터 흐름 제어, 오류 검출 등을 위한 헤더를 추가합니다.3. 네트워크 계층에서 IP가 Segment를 감싸고 목적지 주소를 추가합니다.3-1. IP 헤더를 추가하여 Packet을 생성합니다.4. 패킷이 네트워크를 통해 전송된다. Internet Layer3계층은 (네트워크 계층, Internet Layer, Packet) 데이터가 서로 다른 네트워크 간에 전달될 수 있도록 경로를 결정하고 (IP 주소 기반) 패킷을 라우팅 하는 ..
QnA. 생성자 주입과 필드 주입의 차이 생성자 주입은 객체 생성 시 의존성이 즉시 주입된다.반면, 필드 주입은 일단 빈 객체를 먼저 생성하고, 스프링 컨테이너가 초기화된 이후에 관련 의존성들이 주입된다. 생성자 주입 추가 설명@Componentpublic class FooBean { private final FooService fooService; @Autowired public FooBean(FooService fooService) { this.fooService = fooService; }}생성자 주입은Spring Container가 FooBean을 생성하기 전에 FooService 빈을 먼저 찾습니다.FooService 빈이 컨테이너에 있는 경우, 이를 Foo..