[MySQL] 트랜잭션: 트랜잭션의 개념, 주의사항, 트랜잭션 VS 락 (Real MySQL 8.0)

2023. 8. 13. 08:00· MySQL
목차
  1. 💋 인트로
  2. ✔ 트랜잭션
  3. ✔ 락
  4. ✔ 락 VS 트랜잭션
  5. 💋 트랜잭션
  6. ✔ 개념
  7. ✔ 주의사항
  8. 💋 참고자료
반응형

 

 

💋 인트로

 

MySQL의 동시성에 영향을 주는 요소

  • 락(Lock)
  • 트랜잭션
  • 트랜잭션의 격리 수준(Isolation Level)

 

✔ 트랜잭션

  • 작업의 완전성을 보장해주는 것
  • 논리적인 작업 셋을 모두 완벽하게 처리하거나, 처리하지 못할 경우에는 원상복구해서 작업의 일부만 적용되는 현상(Partial update)이 발생하지 않게 만들어주는 기능

 

✔ 락

  • 여러 커넥션에서 동시에 동일한 자원을 요청할 경우 순서대로 한 시점에는 하나의 커넥션만 변경할 수 있게 해주는 것
  • 만일 하나의 레코드를 여러 커넥션에서 동시에 변경하려고 하는데, 락이 없다면 하나의 데이터를 여러 커넥션에서 동시 변경할 수 있게 되어, 레코드 값은 예측할 수 없는 상태가 됨

 

✔ 락 VS 트랜잭션

 

  • 락: 동시성 제어를 위한 기능
  • 트랜잭션: 데이터 정합성을 보장하기 위한 기능

 

💋 트랜잭션

✔ 개념

  • MySQL에서 기본 스토리지 엔진으로 사용하는 InnoDB에서 제공하는 기능

  • 부분 업데이트 현상이 발생하지 않도록 해서 애플리케이션 개발에서 고민해야 할 문제를 줄여주는 필수적인 DBMS의 기능
  • 트랜잭션을 지원하지 않는 스토리지 엔진에 대한 참고 (접은글)
더보기
  • 스토리지 엔진에 따라서 트랜잭션을 지원하기도, 지원하지 않기도 함.
  • 트랜잭션을 지원하지 않는 스토리지 엔진(eg. MyISAM)의 경우, 부분 업데이트 현상이 발생하면 실패한 쿼리로 인해 남은 레코드를 다시 삭제하는 재처리 작업이 필요할 수 있음.
이미지 출처: http://idchowto.com/myisam-vs-innodb-storage-engine/

 

✔ 주의사항

  • 꼭 필요한 최소의 코드에만 적용해서 애플리케이션 코드 내 트랜잭션의 범위를 최소화
    • 데이터베이스 커넥션 수는 개수가 제한적이어서, 각 단위 애플리케이션이 커넥션을 소유하는 시간이 길어질수록 사용 가능한 커넥션 수가 줄어들기 때문
    • 예) DBMS에 데이터를 저장하기에 앞서 검증을 해야 한다면, 비즈니스 로직은 검증부터 시작되지만, 트랜잭션은 실제로 DBMS에 데이터를 저장하는 작업부터 시작하는 것이 좋음.
    • 예) 메일 전송, 파일 전송 작업 또는 네트워크를 통해서 원격 서버와 통신하는 작업은 DBMS 트랜잭션 내에서 제거하는 것이 좋음. 통신이 안되는 상황이 발생하면, 웹 서버 뿐 아니라 데이터베이스 서버까지 위험해지는 상황이 발생할 수 있음.

 

 

💋 참고자료

  • Reql MySQL 8.0 1편
  • https://dev.mysql.com/doc/refman/8.0/en/innodb-introduction.html
  • MyISAM과 InnoDB 비교

 

 

반응형
저작자표시 비영리 변경금지

'MySQL' 카테고리의 다른 글

[MySQL] MVCC와 언두 로그(Undo log)  (0) 2023.08.29
[MySQL] MySQL 엔진의 락 (Lock)  (0) 2023.08.15
[MySQL] MySQL 아키텍처: 접속 클라이언트, MySQL 엔진, 스토리지 엔진, 운영 체제, 하드웨어  (0) 2023.08.14
[MySQL] ON DELETE CASCADE: foreign key로 묶인 테이블의 레코드를 삭제할 때, 해당 레코드를 참조하는 다른 테이블의 레코드도 함께 자동으로 삭제하기  (0) 2023.05.08
[MySQL] No value supplied for the SQL parameter 'gameId': No value registered for key 'gameId’ 오류 해결  (0) 2023.04.28
  1. 💋 인트로
  2. ✔ 트랜잭션
  3. ✔ 락
  4. ✔ 락 VS 트랜잭션
  5. 💋 트랜잭션
  6. ✔ 개념
  7. ✔ 주의사항
  8. 💋 참고자료
'MySQL' 카테고리의 다른 글
  • [MySQL] MySQL 엔진의 락 (Lock)
  • [MySQL] MySQL 아키텍처: 접속 클라이언트, MySQL 엔진, 스토리지 엔진, 운영 체제, 하드웨어
  • [MySQL] ON DELETE CASCADE: foreign key로 묶인 테이블의 레코드를 삭제할 때, 해당 레코드를 참조하는 다른 테이블의 레코드도 함께 자동으로 삭제하기
  • [MySQL] No value supplied for the SQL parameter 'gameId': No value registered for key 'gameId’ 오류 해결
깃짱
깃짱
연새데학교 컴퓨터과학과 & 우아한테크코스 5기 백엔드 스타라이토 깃짱
반응형
깃짱
깃짱코딩
깃짱
전체
오늘
어제
  • 분류 전체보기
    • About. 깃짱
    • Weekly Momentum
      • 2024
    • PROJECT
      • AIGOYA LABS
      • Stamp Crush
      • Sunny Braille
    • 우아한테크코스5기
    • 회고+후기
    • Computer Science
      • Operating System
      • Computer Architecture
      • Network
      • Data Structure
      • Database
      • Algorithm
      • Automata
      • Data Privacy
      • ETC
    • WEB
      • HTTP
      • Application
    • C, C++
    • JAVA
    • Spring
      • JPA
      • MVC
    • AI
    • MySQL
    • PostgreSQL
    • DevOps
      • AWS
      • 대규모 시스템 설계
    • frontend
      • HTML+CSS
    • NextJS
    • TEST
    • Industrial Engineering
    • Soft Skill
    • TIL
      • 2023
      • 2024
    • Linux
    • Git
    • IntelliJ
    • ETC
      • 日本語

블로그 메뉴

  • 홈
  • 깃허브

인기 글

최근 글

태그

  • 예외
  • 우테코
  • 레벨로그
  • 스트림
  • 우테코5기
  • lamda
  • 조합
  • 람다와스트림
  • Composition
  • Stream
  • 컴포지션
  • TDD
  • 함수형프로그래밍
  • 우아한테크코스
  • 상속
  • 상속과조합
  • 람다
  • Java
  • 우아한테크코스5기
  • OOP
hELLO · Designed By 정상우.v4.2.0
깃짱
[MySQL] 트랜잭션: 트랜잭션의 개념, 주의사항, 트랜잭션 VS 락 (Real MySQL 8.0)
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.