본문 바로가기

Development/Database4

[lock]MySQL user-level lock vs Redisson MySQL user-level 장점 1.redisson을 이용할 때보다 MySQL user-level의 분산락을 이용하는게 빌드 속도가 더 빠름 2.추가 DB에 대한 비용 발생 X 3.선언적 트랜잭션 사용 가능(@Transcational) 단점 1.별도로 스레드를 생성해서 락을 걸어줘야 하는 단점 1개의 스레드(요청) - 1개의 lock이 걸리도록 동작해야 하므로 Redisson 장점 1.구현이 편리 2.가독성 좋은 코드 단점 1.빌드 시 지연 발생(MySQL user-level의 분산락이 더 빠름) 2.추가 DB이므로 비용 발생. 캐싱 등 redis의 기능을 적극 활용한다면 비용이 아깝지 않겠지만, 분산락만 이용한다면 아깝지 않을까... 3.선언적 트랜잭션 사용 불가 TranscationManager를.. 2021. 11. 23.
MySQL DB log 보기 1. mysql 설정 SHOW VARIABLES LIKE '%general%'; SET GLOBAL general_log = ON; general_log 값이 on 이 되어 있어야 로그 확인 가능 general_log_file의 파일에서 에러 로그 확인 가능 2. 참고문서 https://myjamong.tistory.com/59 2021. 11. 23.
MySQL Connection Pool 이란 MySQL Connection Pool 이란? DBCP(Database Connection Pool)이란 데이터베이스와 연결을 맺고 있는 Connection 객체를 관리하는 기법 WAS가 실행되면서 미리 일정량의 DB Connection 객체를 생성하고 Pool이라는 공간에 저장 저장된 DB Connection 객체는 요청에 따라 필요할 때마다 Pool에서 가져다 쓰고 반환 가능 동작흐름 1.DBMS 연결 요청이 들어왔을 때, DB Connection Pool에는 이미 DB Connection 객체가 저장되어 있는 상태 (WAS 실행 시 개발자가 설정한 만큼의 Connection이 생성) 2.DBCP에서 DB Connection 객체를 가져다 사용 1. 쿼리 수행 후 결과 값 반환 3.사용 후 Conne.. 2021. 11. 23.
RDBMS의 트랜잭션과 병행제어 RDBMS의 트랜잭션 DBMS는 데이터베이스가 항상 정확하고 일관된 상태를 유지하도록 트랜잭션 단위로 일을 수행한다. 이를 통해 데이터베이스의 회복과 병행제어(동시성 제어)가 가능해져 일관성을 유지한다. 트랜잭션 하나의 작업을 수행하는데 필요한 데이터베이스의 연산들을 모아놓은 것으로, 데이터베이스의 논리적인 작업단위이다. 업무 처리에 필요한 세부 프로그램 단위 데이터베이스에 대한 연산(조회, 삽입, 삭제, 수정) SQL문들로 구성 데이터베이스에 장애 발생 시 데이터를 복구하는 작업 단위이다. 데이터베이스는 무결성, 일관성을 보장하기 위해 작업 수행에 필요한 연산들을 하나의 트랜잭션으로 정의, 관리한다. ex. 계좌이체 트랜잭션 성호 계좌에서 5000원을 인출 은영 계좌에서 5000원을 입금 → 계좌이체 .. 2021. 9. 23.