Transaction Propagation스프링 트랜잭션을 다시 공부하며 영한님의 스프링 DB 2편 - 데이터 접근 활용 기술 강의 내용을 요약해 보았습니다.트랜잭션 전파Spring Transaction Propagation Use transaction twice[출처: https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-db-2]로그를 보면 트랜잭션1, 2가 같은 conn0 커넥션을 사용 중인데, 이것은 커넥션 풀 때문트랜잭션1은 conn0을 모두 사용 후 커넥션 풀에 반납하고, 이후 트랜잭션2가 conn0을 커넥션 풀에서 획득히카리(HikariCP) 커넥션 풀에서 커넥션을 획득하면 실제 커넥션을 그대로 반환하는 것이 아니라 내부 관리를 위해히카리..
Spring Transaction스프링 트랜잭션을 다시 공부하며 영한님의 스프링 DB 2편 - 데이터 접근 활용 기술 강의 내용을 요약해 보았습니다.추상화org.springframework.transaction.PlatformTransactionManager 인터페이스를 통해 트랜잭션 추상화package org.springframework.transaction;public interface PlatformTransactionManager extends TransactionManager { TransactionStatus getTransaction(@Nullable TransactionDefinition definition) throws TransactionException; void commi..
HikariCP HikariCP(Hikari Connection Pool) Connection Pool 을 관리해 주는 라이브러리 Spring Boot 2.0 버전부터 Tomcat connection pool 대신 HikariCP 사용 . HikariCP 기본 설명은 쉽게 풀어서 설명된 링크를 참고해 보자. . 최근 HikariCP Connection 관련 장애를 겪고, HikariCP 의 Connection 관련 이슈와 대응방법에 대하여 알아보게 되었다. 고로... 본문에는 Hikari 기본설정, Dead lock 과 해결방법에 대해서 간단하게 다뤄보려고 한다. Hikari 기본설정 ✅ autoCommit pool에서 반환된 connection의 기본 자동 커밋 동작 제어 Default: true ⏳ ..
Redis Transactions 프로젝트에 Redis 를 적용하면서 Redis Transaction 을 잘 모르고 사용했다가, Spring Transaction 과 함께 데이터가 롤백되어 버리는 상황을 맞이하고 Redis Transaction 에 대해 알아보게 되었다. . Redis 는 싱글 스레드 기반으로 데이터 처리 반면, 이벤트 루프(Event Loop)라는 Redis 동작 원리로 여러 클라이언트 요청을 동시에 응답하는 동시성 보유 유저 레벨에서는 싱글 스레드로 동작하지만, 커널 I/O 레벨에서는 스레드 풀 이용 따라서, 동시성 문제에 대한 처리가 필요 Redis 동시성 처리를 위한 트랜잭션 방법은 SessionCallback 인터페이스를 구현하는 방법과 @Transactional 을 사용하는 방..
@Transactional 잘 사용해보기 @Transactional 을 사용하고는 있지만.. 잘 모르고 저스트 그냥 사용하고 있다 보니 간단하게라도 탐구를 해볼 필요성을 느끼게 되었다. 그래서.. 오늘도 어김없이 탐정놀이를 해보려고 한다. 🔍🤠🔎 . 시작하기에 앞서, 트랜잭션 구성은 @Configuration, XML 기반 설정 말고도 애노테이션 기반으로 설정할 수 있다. 주로 애노테이션 기반으로 많이 사용되는 것 같다. 애노테이션 방식은 선언적 트랜잭션이라고 불리고, 선언 시 트랜잭션 기능이 적용된 프록시 객체가 생성된다. . @Transactional으로 생성된 프록시 객체는 @Transactional이 적용된 메소드가 호출될 경우, PlatformTransactionManager를 사용하여 트랜잭션..
MS SQL 자주 사용하고 자주 까먹는 쿼리 모음 a.k.a. 매번 찾기 귀찮은 Insert INSERT INTO 테이블 이름 (열1, 열2, ...) VALUES (값1, 값2 , ….) -- Example INSERT INTO table_name (col1, col2, ...) VALUES (3, 'value' , ….) Alter 컬럼 추가 ALTER TABLE 테이블명 ADD 컬럼명 데이터타입 속성 기본값 -- Example ALTER TABLE table_name ADD column_name CHAR(1) NOT NULL DEFAULT 'N' 컬럼 삭제 ALTER TABLE 테이블명 DROP COLUMN 컬럼명 -- Example ALTER TABLE table_name DROP COLUMN c..