728x90

삼분공부/DataBase 3

[DB] commit(), rollback(), release()의 역할

MySQL을 사용할 때 여러 쿼리를 하나의 작업으로 묶어 처리하고 싶을 경우 트랜잭션을 사용한다. 트랜잭션을 사용하면 중간에 에러가 발생했을 때 이전 작업을 모두 취소할 수 있어 데이터 정합성을 보장할 수 있다.Node.js 환경에서 MySQL 커넥션을 사용한 트랜잭션 처리의 핵심 메서드는 다음과 같다.1. beginTransaction()트랜잭션의 시작을 선언하는 메서드이다. 이 시점부터 실행되는 쿼리들은 commit()을 호출하기 전까지 실제로 DB에 반영되지 않는다.await conn.beginTransaction();2. commit()트랜잭션 내에 실행한 모든 쿼리를 실제 DB에 반영하는 메서드이다. 이 명령이 실행되면 트랜잭션은 종료되고, 데이터는 확정적으로 저장된다.await conn.com..

[MySQL] GET_LOCK()을 활용한 동시성 제어 — Spring Boot에서 안전한 주문 번호 생성하기

동시성이 중요한 시스템에서는 "동시에 들어온 요청이 같은 값을 쓰면 안 되는" 상황이 자주 발생합니다. 특히 주문 번호(billNo)를 생성할 때 순서를 보장해야 하는 경우, 단순한 카운트 기반 로직은 예상치 못한 중복 문제를 일으킬 수 있습니다.이번 글에서는 Spring Boot + MySQL 환경에서 GET_LOCK()을 이용해 이러한 문제를 간단하게 해결하는 방법을 소개합니다.💥 문제 상황예를 들어, 아래와 같이 특정 일자의 주문 건수를 카운트해서 billNo를 생성한다고 가정해봅시다: int orderCount = orderRepository.count(storeNo, regDate);int billNo = orderCount + 1;✅ 해결 방법: MySQL GET_LOCK() 사용MySQL은..

[SQL] MySQL Slow Query Log 설정과 활용법

MySQL에서 성능 저하를 유발하는 느린 쿼리(Slow Query)를 파악하고 최적화하기 위해 Slow Query Log를 활용합니다. 이 글에서는 Slow Query Log를 활성화하고 관리하는 방법에 대해 알아보겠습니다.1. Slow Query Log란?MySQL에서 Slow Query Log는 특정 시간 이상 실행된 느린 쿼리를 기록하는 로그입니다. 성능 문제를 진단하고 최적화할 수 있는 중요한 자료로 활용됩니다.Slow Query Log의 필요성데이터베이스 성능 저하를 사전에 파악할 수 있음느린 쿼리의 개선점을 확인 가능성능 최적화와 모니터링에 유용2. Slow Query Log 확인 방법Slow Query Log와 관련된 변수를 확인하려면 아래 명령어를 사용합니다.SHOW VARIABLES LI..