본문 바로가기

database (3)

NoSQL이란? NoSQL 무엇의 약자인지는 여러 의견들이 있지만, 현재 다수가 Not Only SQL란 의미로 사용하고 있다. 해석해보면 "SQL뿐만 아니라" 즉, 기존의 RDBMS가 갖고 있는 특성뿐만 아니라 다른 특성들도 부가적으로 지원한다는 의미이다 비정형 초고용량 데이터를 처리를 할 수 있는 비관계형 데이터 저장소 ACID는 제공하지 않지만, 뛰어난 확장성과 성능을 제공한다 테이블 간 관계를 정의하지 않아 Join이 불가능하다 분산형 구조를 통해 데이터를 여러 서버에 분산 저장, 상호 복제해 서버 장애가 발생했을 때에도 데이터 유실이나 서비스 중지 없는 구조의 형태를 가진다 수평적 확장(scale-out)을 쉽게 할 수 있다 데이터 중복이 발생할 수 있다 정확한 데이터 구조를 알 수 없고, 데이터가 변경/확장 ..
트랜잭션 격리 수준 (Transaction Isolation Level) Transaction Isolation Level 동시에 여러 트랜잭션이 처리될 때 트랜잭션끼리 얼마나 고립되어 있는지 나타낸 것 쉽게 말해 A트랜잭션에서 변경되거나 조회하는 데이터를 B 트랜잭션에서 볼 수 있도록 허용할지 말지를 결정하는 것이다 트랜잭션은 데이터의 정합성을 위해 원자성, 일관성, 격리성, 지속성(=ACID)를 보장한다. 이때 격리성을 완벽히 보장하면 트랜잭션을 차례대로 실행해야 해서 성능이 나빠지게 된다. 이러한 문제 때문에 ANSI 표준은 트랜잭션 격리 수준을 4단계로 나누어 정의하고 있다 낮은 Transaction Isolation Level에서 발생할 수 있는 문제들 Dirty Read 변경 후 commit/rollback 되지 않은 값을 읽어온다 Non-Repeatable Rea..
InnoDB란? InnoDB란? MySQL/MariaDB의 스토리지 엔진 특징 대용량 데이터를 처리할 때 최고의 성능을 낼 수 있도록 설계 Low Level Lock 트랜잭션(commit/rollback) 제공 Foreign Key 지원 장애 복구 가능 데이터 무결성 보장 정렬 가능 테이블은 pk를 기준으로 클러스터링 되어 저장 ACID 보장 구조 Buffer Pool 디스크의 데이터 파일이나 인덱스 정보를 메모리에 캐시해두고, 쓰기 작업을 일괄 처리할 수 있게 버퍼링해주는 역할 아직 디스크에 기록되지 않은 변경된 데이터인 dirty page를 가지고 있다 dirty page는 주기적으로 또는 체크 포인트가 발생하면 write 스레드가 필요한 만큼의 dirty page를 디스크에 기록한다 Change Buffer 해당 ..