결제 서비스를 만들고 테스트하던 중 인덱싱 되지 않은 컬럼을 검색 조건으로 활용한 Update에서, 단건의 요청 처리에 대해 문제가 없었으나 다수의 요청 동시 처리 시 데드락이 발생하는 상황을 경험했다. 1. 데드락 확인 org.springframework.dao.TransientDataAccessResourceException: execute; SQL [UPDATE payment_ordersSET payment_order_status = :status, updated_at = CURRENT_TIMESTAMPWHERE order_id = :orderId]; Deadlock found when trying to get lock; try restarting transaction 스프링을 통해 어떤 로직을..
정규화(Normalization)의 정의와 목적 하나의 테이블에 모든 정보를 저장하면 필연적으로 동일한 내용의 중복이 많아지게 된다. 중복이 많아짐은 저장 공간의 낭비는 물론이고, 삽입/삭제/갱신과 관련된 데이터베이스 이상 현상(Anomaly)이 발생하기도 쉬워진다. 데이터베이스 정규화(Normalization)는 관계형 데이터베이스를 설계할 때 중복이 최소화되도록 데이터를 구조화하는 과정을 의미한다. 정규화 과정은 제1 정규형에서 제5 정규형까지 존재하며, 상위의 정규형은 하위 정규형의 조건을 모두 만족한다. 이 글에서는 제3 정규형과 3.5 정규형으로 불리는 보이스-코드 정규형(Boyce-Codd normal form, BCNF)까지의 과정을 다룬다. 정규화되지 않은 비정규 릴레이션 상품 번호 상품 ..
- Total
- Today
- Yesterday
- JPA JSON
- GitHub Discussion
- Spring
- RandomPort
- MySQL
- MySQL 이벤트 스케줄
- 의존성 주입
- 우테코 5기
- 함수형 인터페이스
- 자바
- Fromtail
- 생성자 주입
- Spring 테스트
- Jenkins 예약 배포
- stubbing
- springboottest
- 스프링
- invokedynamic
- GitHub Discussion 템플릿
- Spring Boot Monitoring
- 람다식
- Payload 암호화
- thenComparing
- GitHub Discussion Template
- java switch case
- 우테코 프리코스
- JPA
- 우테코
- Java
- logback-spring.xml
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |