분류 전체보기
[Real MySQL] 12장. 쿼리 종류별 잠금 (2) SQL 문장별 잠금
배타적 락 vs 공유 잠금 배타적 락 즉 배타적 락이란 "내가 쓰기를 하는 동안 남들이 쓰지 못하게 하는 잠금" 공유 잠금 즉 공유 잠금이란 "내가 읽는 동안 남들이 내가 읽고 데이터를 변경하거나 삭제하지 못하게 하는 잠금" 참고로 SELECT만을 의미하는 것이 아닌, INSERT, UPDATE , DELETE 문장을 실행할 때도 읽기가 필요하다. SQL 문장별로 사용하는 잠금 - SELECT SELECT 쿼리 InnoDB 테이블에서는 기본 형태의 SELECT 쿼리는 별도의 잠금을 사용하지 않는다. (REPEATABLE-READ 이하 격리 수준에서) 만약 읽어야 할 레코드가 다른 트랜잭션에 의해 변경되거나 삭제되는 중이라면 InnoDB에서 관리하고 있는 데이터의 변경 이력인 언두 로그를 이용해서 레코드를..
[Real MySQL] 12장. 쿼리 종류별 잠금 (1) InnoDB의 기본 잠금 방식
먼저 트랜잭션이란 논리적인 작업셋의 완전성을 보장하기 위한 기능이고, 잠금이란 동시성을 제어하기 위한 기능이라고 할 수 있습니다. 1. InnoDB의 기본 잠금 방식 MySQL에서 일반적으로 사용 가능한 스토리지 엔진 가운데 InnoDB를 제외한 모든 스토리지 엔진은 대부분 테이블 잠금을 지원하고 있기 때문에 각 쿼리가 사용하는 잠금이 복잡하지도 않고 이해하기 어렵지도 않다. 하지만 InnoDB에서는 각 쿼리의 패턴별로 사용하는 잠금이 달라 복잡한 부분이 있기 때문에 주의해야 한다. SELECT REPEATABLE-READ 이하의 격리 수준에서는... InnoDB 테이블에 대한 SELECT 쿼리는 기본적으로 아무런 잠금을 사용하지 않는다. 또한 이미 잠금 레코드를 읽는 것도 아무런 제약이 없다. 만약 읽..
네트워크의 흐름 2단계
프로토콜 스택 내부의 흐름 1. 소켓을 작성한다. 프로토콜 스택의 내부 구성 프로토콜 스택의 내부는 역할이 다른 몇 부분으로 나뉘어 있다. 맨 위의 네트워크 애플리케이션은 브라우저, 웹 서버 등의 프로그램이 해당되며, 여기부터 아래로 향하여 데이터 송수신 등의 일을 의뢰합니다. 애플리케이션 아랫부분에는 Socket 라이브러리가 있으며, 그 안에는 리졸버가 내장되어 있습니다. (DNS 리졸버는 DNS 서버에 조회하는 동작을 실행하는 역할을 수행합니다) 그 아래가 OS의 내부를 나타내며, 여기에 프로토콜 스택이 존재합니다. 프로토콜 스택의 윗부분에는 TCP 프로토콜을 사용하여 데이터 송수신을 담당하는 부분과, UDP 프로토콜을 사용해서 데이터 송수신을 담당하는 부분이 있으며, 이 둘이 애플리케이션에서 보낸 ..
네트워크의 흐름 1단계
클라이언트와 서버간에 네트워크 통신시, OS 레벨에서 어떠한 일이 일어나는지 궁금해서 "성공과 실패를 결정하는 1%의 네트워크 원리" 라는 책을 읽고 정리한 글입니다. URL 구조 URL은 다음과 같은 구조를 갖습니다. HTTP 프로토콜 Hyper Text Transfer Protocol로, 클라이언트와 서버가 주고받는 메시지의 내용이나 순서를 정한 것이라고 할 수 있습니다. 일종의 클라이언트와 서버 사이에 통신하기 위한 약속이라고 할 수 있습니다. 클라이언트에서 서버를 향해 요청 메시지를 보냅니다. 이 요청 메시지 안에는 "무엇을", "어떻게" 하겠다는 내용이 포함되어 있는데요, "무엇을"에 해당하는 것은 URI이라고 하고, "어떻게"에 해당하는 즉 동작에 해당하는 것은 HTTP Method라고 할 수..
Java 제네릭
제네릭이란? 클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일 시 미리 타입검사를 수행하는 방법. (List) 반대 개념으로 Raw Type을 들 수 있다. (List) 효과 컴파일 시점에 타입 체크를 수행할 수 있어서 좀 더 안정성 제공. (런타임 시에 타입 에러가 발생하지 않고, 컴파일 시점에 타입 에러가 발생한다는 것은 엄청난 효과....!) 제네릭의 타입 소거 시점 제네릭 타입은 컴파일 시점에 컴파일러에 의해 자동으로 검사 되어 타입 변환된다. 그리고 나서 런타임 시점에는 모든 제네릭 타입은 소거(제거)되고, 런타임 시점에는 어떠한 제네릭 타입도 포함되지 않게 된다. 제네릭의 특징 - 비구체화 제네릭 타입은 비구체화 타입으로, 컴파일 시점에 타입 체크를 수행하고 런타임에는 타입을 모두 소거하는..