[Spring/DB] Spring에서 데이터 동시성 제어하기
서론 DB Lock 포스팅에서 데이터베이스에서 동시성 처리를 위한 Lock에 대해 공부했다. 뿐만 아니라 공유 락, 배타 락과 같이 블로킹과 데드락이 발생할 수 있는 조건을 알 수 있었다. Spring Framework 개발 환경에서 어플리케이션 레벨에서의 Lock 기법과 데이터베이스 레벨에서의 Lock 기법, 그리고 Spring 내에서 지원하는 ...
서론 DB Lock 포스팅에서 데이터베이스에서 동시성 처리를 위한 Lock에 대해 공부했다. 뿐만 아니라 공유 락, 배타 락과 같이 블로킹과 데드락이 발생할 수 있는 조건을 알 수 있었다. Spring Framework 개발 환경에서 어플리케이션 레벨에서의 Lock 기법과 데이터베이스 레벨에서의 Lock 기법, 그리고 Spring 내에서 지원하는 ...
서론 트랜잭션 격리 수준에서 각 트랜잭션끼리 서로 어떤 기준으로 격리되어야하는 지 알아보았다. 트랜잭션 격리 수준이란 여러 트랜잭션이 동시에 테이블, 레코드를 접근하지 못하도록 막는 규칙을 의미한다. 그렇다면 Lock은 무엇일까? 트랜잭션 격리 수준이라는 규칙을 구현할 수 있으며, 여러 커넥션에서 동시에 변경할 수 없도록 데이터를 잠금하는 기법...
서론 트랜잭션에 대한 개념과 특징, 상태에 대해 지난 포스팅에서 알아보았다. 트랜잭션의 특징 중 I에 해당하는 isolation(격리성)은 트랜잭션 수행 시에 서로 끼어들면 안된다는 것을 말한다. 데이터베이스는 여러 사용자가 같은 데이터에 접근할 수 있어야 한다. 순차적으로 접근할 수 있다면 쉽게 구현할 수 있겠지만 성능이 나쁠 것이다. 트랜잭션 ...
공부하게 된 배경 최근에 기술 면접에서 DB의 인덱스에 대한 질문을 받았는데 DB 조회 성능을 개선할 당시에 나는 현업에서 사용하지 않았었다. 면접관 분은 당연히 인덱스를 이용해보았을 거라고 생각하셨지만 인덱스에 대해 깊이 알고 있지 못했고 이미 100만 건 이상의 데이터가 있어서 인덱스를 새로 설정하는 데에 시간이 오래 걸릴 것이라 생각했다. 하지...
Spring의 AOP(관점 중심 프로그래밍)에서 프록시와 프록시 패턴이 사용되는데, 프록시와 프록시 패턴이라는 디자인 패턴에 대해 공부하기 위해 기록한다. 프록시란? 프록시(Proxy)를 번역하면, 대체자, 대리자, 위임과 같은 키워드가 등장한다. 그리고 대리자는 누군가의 일을 대신해서 수행하는 사람을 의미한다. 이 부분은 프로그램에서 프록시를 통...
트랜잭션이란? 트랜잭션은 데이터의 상태 변화에 대한 작업 단위라고 표현할 수 있다. 하지만 SQL문 한 줄이 트랜잭션이라고 보기에는 어렵다. 은행의 송금을 예시로 드는데 A가 B에게 30,000원을 보냈다면, A의 잔고가 30,000원이 넘는 지 확인하고, 그 뒤에 A의 잔고에는 -30,000의 update가 수행되어야하며, B의 잔고에는 +30,...
Batch Insert 개발을 진행하던 중에 대량의 데이터를 insert 해야하는 일이 있었는데 당시 환경에서 소요 시간이 꽤 걸려서 성능 향상을 위해 batch insert를 도입했던 내용을 정리해보고자 한다. Batch Insert란? # 일반적인 개별 insert insert into member (username, age) values (...
문제 및 원인 파악 이 블로그는 jekyll repository를 fork하여 생성한 github blog로 블로그 포스팅을 하고 있었다. 내 Github의 contributions(잔디)를 보니 잔디가 심어지지 않고 있어서 ‘fork 해왔더라도 내 계정 아이디 소유의 repository에 커밋을 했는데 왜 잔디가 심어지지 않는걸까?’라는 의문이...
BitSet Java로 ‘비트마스킹’을 이용해 알고리즘 문제를 해결할 때 비트 관리를 편하게 할 수 없을까 하다가 찾은 라이브러리이다. 패키지는 java.util.BitSet 이다. BitSet 은 비트들로 이루어진 vector로, boolean 배열처럼 이용할 수 있다. 그리고 대량의 이진 데이터를 효율적으로 다룰 때에 유용하다. 여러 비트를 한...
책 ‘면접을 위한 CS 전공노트’ 중에서 공부하고 싶었던 부분에 대해 요약 정리한 글이다. 이번에는 디자인 패턴 중에 DB 모듈 클래스에 많이 쓰이는 싱글톤 패턴을 깊게 보고, 라이브러리, 프레임워크에 대한 용어 정리를 간단하게 하고자 한다. 0. 사전지식 라이브러리 공통으로 사용될 수 있는 특정한 기능들을 모듈화한 것. ...