Home
김동현의 개발 블로그
Cancel

DB Lock

트랜잭션이란 ? 모든 명령어의 성공 또는 실패 를 한꺼번에 모아서 처리 하는 것 명령어 중에 하나라도 실패하면 한 트랜잭션 내의 모든 명령어들이 무효화 (롤백) 됨 EX) 은행에서 돈을 송금하려고 할 때 내 계좌에서 돈을 출금 다른 계좌로 돈을 입금 하는 과정이 함께 일어 나야 하는데 2번 과정에서 에러가 발생해서 입금이 되...

MySQL Batch 처리에서 적정 레코드 수 구하는방법

JDBC 커넥션을 생성할 때 rewriteBatchedStatements 옵션을 true 로 하면 MySQL Connector/J 가 addBatch() 함수로 누적된 레코드를 모아 다음과 같은 형태의 구문으로 실행합니다. INSERT INTO employees VALUES (10000, 'Brandon', 'Lee'), (10000, 'Brando...

여러개의 Repository 또는 여러개의 Row 를 동시에 Lock 을 걸고자 할 때

증상 여기에 상품의 후기를 기록하면 연관된 상품들의 좋아요 횟수가 +1 씩 증가하는 로직이 있습니다. 그리고, 동시성 이슈를 해결하고자, SELECT FOR UPDATE 를 사용하고 있습니다. @Repository public interface StorePackagesRepository extends JpaRepository<StorePack...

동시성 문제

E-커머스 에서 실무하면서 경험했던 동시성 문제에 대해 기록을 해보겠습니다. 가장 중요하고 대표적인 동시성이 적용되는 도메인중 하나가 재고입니다. 그전에 동시성 문제란 뭔지 알고 넘어가겠습니다. 동시성 문제 동시성 문제란 두 개 이상의 세션(트랜젝션)이 공통된 자원에 대해 모두 읽고 쓰는 작업(Read→Write) 을 하려고 하는 경우 발생할 수 있...

Exclusive Lock (배타적 잠금)

book 의 id 값이 1, 2인 row 에 락을 걸고, 그와 동시에 book 테이블의 FK 관계인 author 테이블에도 동시에 exclusvie lock 을 걸어놓고 (읽기, 쓰기) 안전하게 레코드를 수정하는 방법입니다. SELECT * FROM book INNER JOIN author ON book.author_id = author.id W...

자바 빌드 관리 도구 (Ant, Maven, Gradle)

자바 빌드 도구로 Maven 과 Gradle 을 사용했었는데 Maven 에서 Gradle 로 넘어갈 때 조금 더 간결하고 가독성이 좋다 이정도만 알고 넘어갔어서 이번에 차이점 및 성능 비교까지 해보려고 한다 빌드 관리 도구란 ? 우리가 프로그램에서 작성한 java 코드 및 xml, properties, jar 파일들을 JVM 이나 WAS 가 인식...

String, StringBuffer, StringBuilder의 장단점 및 차이점

String은 immutable(불변) StringBuffer, StringBuilder는 mutable(가변) String String literalString = "literal"; //리터럴로 생성하는 방식 String newString = new String("literal"); //new로 생성하는 방식 //위에서 "literal...

Enable Google Page Views

This post is to enable Page Views on the Chirpy theme based blog that you just built. This requires technical knowledge and it’s recommended to keep the google_analytics.pv.* empty unless you have ...