본문 바로가기

데이터베이스3

[Database] MySQL 잠금(Lock) InnoDB 스토리지 엔진 잠금 편 0. 이 글을 쓰게 된 이유 MySQL 엔진 레벨 잠금 편에이어서 InnoDB 스토리지 엔진 잠금 편을 쓰게 되었다. InnoDB 스토리지 엔진은 MySQL에서 기본 스토리지 엔진이며 엄청나게 특수한 경우가 아니면 MyISAM이나 MEMORY 엔진을 사용할 이유가 없다. 그래서 InnoDB 스토리지 엔진만이 레코드 기반 잠금을 제공하기 때문에 스토리지 엔진에서 InnoDB 스토리지 엔진만을 다루게 되었다. 1. InnoDB 스토리지 엔진 잠금 1.1 InnoDB 스토리지 엔진 잠금의 장점 InnoDB 스토리지 엔진은 MySQL에서 제공하는 잠금과는 별개로 스토리지 엔진 내부에서 레코드 기반 잠금 방식을 탑재하고 있다. 이러한 이유로 다음과 같은 장점이 존재한다. InnoDB 스토리지 엔진은 레코드 기반 .. 2023. 1. 12.
[Database] MySQL 잠금(Lock) MySQL 엔진 레벨 잠금 편 0. 이 글을 쓰게 된 이유 MySQL 잠금에 대해서 공부하던 중 새롭게 안 지식과 전체적인 내용을 정리하기 위해 이 글을 쓰게 되었다. 1. MySQL 엔진의 잠금 MySQL에서 사용되는 잠금은 크게 MySQL 엔진 레벨과 스토리지 엔진 레벨로 나눌 수 있다(MySQL 엔진은 MySQL 서버에서 스토리지 엔진을 제외한 나머지 부분으로 이해하면 됨). MySQL 엔진 레벨의 잠금은 모든 스토리지 엔진에 영향을 미치지만, 스토리지 엔진 레벨의 잠근은 스토리지 엔진 간 상호 영향을 미치지 않는다. MySQL 엔진 레벨 잠금은 크게 글로벌 락, 테이블 락, 네임드 락, 메타데이터 락이 있다. 그리고 스토리지 엔진 레벨의 락은 사실 상 INNODB 엔진의 락이라고 봐야한다. 왜냐하면 MyISAM과 MEMORY .. 2023. 1. 12.
[Database] 트랜잭션과 격리 수준(Transaction And Isolation level) 0. 이 글을 쓰게 된 이유 평소에 db에 대한 지식이 부족하다는 생각을 해서 공부를 하던 도중 db의 기본 중의 기본인 트랜잭션 격리성 수준에 대해서 정리하고자 이 글을 쓰게 되었다. 1. 트랜잭션과 격리 수준이란? 1.1 트랜잭션의 ACID 트랜잭션은 ACID라 하는 원자성(Atomicity), 일관성(Consistency), 격리성(isolation), 지속성(Durability)를 보장해야한다. 원자성 : 트랜잭션 내에서 실행한 작업들은 하나의 작업처럼 처리되어 모두 성공하거나 모두 실패해야 한다. 일관성 : 모든 트랜잭션은 일관성 있는 데이터베이스 상태를 유지해야 한다. 예를 들어 데이터베이스에서 정한 무결성 제약 조건을 항상 만족해야한다. 격리성 : 동시에 실행되는 트랜잭션들이 서로에게 영향을.. 2023. 1. 3.