MySQL
-
MySQL 트랜잭션 lock 충돌 오류 개선하기Java & Kotlin 2022. 11. 27. 21:12
1) 서론 이번 글에서는 MySQLTransactionRollbackException의 발생 원인을 분석하고 개선 방안을 고민해보는 글입니다. 그리고 JPA를 사용하다 보면 동일한 상황에서 발생하는 PessimisticLockingFailureException도 함께 알아보려고 합니다. 나름대로의 방법을 찾았지만, 더 좋은 아이디어를 댓글로 주신다면 감사히 받겠습니다. 2) MySQLTransactionRollbackException가 발생하는 이유 아래와 같은 상황을 가정합니다. TR은 transaction의 약자로 사용합니다. TR1 test 테이블 데이터 전체 삭제 TR1 lock 획득 후 실행 중 TR2 삭제 요청 이때 TR2는 실행될 수 있을까요? 아래와 같이 코드를 작성합니다. TR1: 테이블..
-
HikariCP, 일단 connection 맺어 본다Database 2022. 11. 16. 23:18
1) 서론 이번 글에서는 HikariCP의 설정에 대해서 공부한 것을 공유드리려고 합니다. 이미 설정을 해보시고 테스트해본 분께는 쉬운 내용이므로 읽지 않으셔도 좋습니다. 2) 아이디어 출발점 중요한 새로운 모바일 애플리케이션 출시를 앞두고 있었습니다. 사용자들은 업데이트 후 재로그인이 필수인 상황 대대적인 공지로 인해 오전 평소보다 많은 요청 발생 예상 매우 제한된 IDC 레거시 인증 담당 서버의 담당자는 하필 주니어인 나... 배포를 앞두고 걱정이 되어 괜히 이래저래 문제가 없을지 고민해봅니다. 이미 계약된 IDC의 물리적인 하드웨어 스펙은 현재 개선할 수 없습니다. 그래서 애플리케이션과 DB의 설정을 확인해보는데요. 혹시 N+1 쿼리가 발생할 수 있는지 확인 DB connection 부족하지 않은지..
-
No Fedex, Yes IndexDatabase 2022. 4. 11. 00:47
1) 서론 인터넷에서 상품을 주문했을 때 예상 배송 기간보다 늦은 경험을 해보셨나요? 저는 스무 살 때 데이트를 해보겠다고, 인생 첫 헤어 왁스를 인터넷에서 주문해본 적이 있는데요. 예상보다 늦은 배송으로 인해 정작 데이트 날은 머리를 꾸미지도 못 하고 나갔던 기억이 있습니다. 이유는 택배사 물량 폭주로 인한 배송 지연이었습니다. 하지만 요즘에는 로켓 배송, 샛별 배송, 새벽 배송 등 쿠팡을 시작으로 아주 빠른 배송이 이루어지고 있는데요. 예전에는 3 ~ 5일이 걸렸지만, 요즘은 하루 혹은 반나절이면 충분한 세상이 됐습니다. 쿠팡은 각 지역마다 거대한 물류센터를 지어서 소비자와 물리적인 거리를 줄이고, 자동화 시스템을 통해 효율적인 배송 준비를 하는데요. 물건을 배송한다는 것은 기존의 업체들과 같지만, ..
-
외래키로 참조 중인 컬럼 수정하기Database 2021. 7. 4. 16:51
1. 서론 아래와 같이 post, user 각각의 테이블이 존재합니다. post 테이블은 user 테이블의 userNo 컬럼을 참조하고 있습니다. create table user ( userNo bigint not null primary key, userId varchar(50) not null, userName varchar(50) not null, userPwd varchar(100) null, constraint user_userId_uindex unique (userId) ); create table post ( postNo bigint unsigned auto_increment primary key, userNo bigint null, title varchar(255) not null, auth..