본문 바로가기

MySQL

(4)
Transaction Isolation Level Transaction Isolation Level 설정에 따라, 트랜잭션이 데이터를 읽기 전에 읽기 락을 하냐 마냐, 읽기 락을 언제까지 유지 하냐가 결정된다. 읽기 락을 많이 걸고 오래 유지할 수록 데이터의 안정성은 좋아지지만 성능은 나빠진다. Transaction Isolation Level을 설정하는 명령 SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED SET TRANSACTION ISOLATION LEVEL READ COMMITTED SET TRANSACTION ISOLATION LEVEL REPEATABLE READ SET TRANSACTION ISOLATION LEVEL SERIALIZABLE Transaction Isolcation Level을 설정하는..
Transaction 트랜잭션은 DBMS에서 SQL이 실행되는 것을 말한다. 트랜잭션 시작과 종료 트랜잭션은 시작하는 SQL 명령어는 start transaction이다. 트랜잭션을 성공적으로 종료하는 명령어는 commit. 트랜잭션을 취소하면서 종료하는 명령어는 rollback. 트랜잭션 속성 A: 원자성 => 트랜잭션은 전체 성공 또는 전체 실패를 보장한다. C: 일관성 => 트랜잭션이 끝나면 모순이 없는 상태여야한다. 즉, 중복되는 학번을 저장하려는 트랜잭션은 자동 취소된다 I: 독립성 => 여러개의 트랜잭션이 충돌되지 않음을 보장한다 D: 지속성 => 트랜잭션이 끝난 데이터는 시스템 장애 이유로 날라가는 일 없이 계속 보장이된다. DataBase Lock 예를 들어 어떤 트랜잭션에서 어느 레코드를 수정하는 도중에, 다..
성능 개선 clustered index 클러스터드 인덱스 순서로 레코드들이 하드디스크에 저장된다. 클러스터드 인덱스를 따로 지정하지 않으면, 기본 키(primary key)가 클러스터드 인덱스가 된다. 클러스터드 인덱스를 만들면, 조회할 레코드들이 하드디스크에서 서로 모여있기 때문에, 최소한의 하드디스크 읽기로 게시글 목록을 조회할 수 있다. 그리고 조회할 순서대로 레코드들이 저장되어 있기 때문에 하드디스크에서 순서대로 레코드를 읽을 수 있다. 따라서 읽어야할 데이터가 하드디스크에 순서대로 모여있으면 헤드 이동 없이 한 번에 읽을 수 있으므로 빠르다. 장점은 테이블의 모든 보조 인덱스가 클러스터링 인덱스를 가지고 있기 때문에 인덱스만으로 처리될 수 있는 경우가 많다(이를 커버링 인덱스라고 함) 단점은 테이블의 모든..
RDB vs NoSQL DB RDB: 관계형 DB NoSQL: 관계형이 아닌 DB RDB의 장점 표현이 풍부하고 선언적인 언어인 SQL을 사용할 수있다. 트랜잭션을 통한 엄격한 데이터 처리 RDB의 단점 DB 서버 몇백대를 연결하여 하나의 DB처럼 운영하기 어렵다. NoSQL DB의 단점 DB 서버 몇백대를 연결하여 하나의 DB처럼 운영하기 편하다. NoSQL DB의 단점 SQL 언어를 사용하기 힘들다. 데이터 처리가 관계형 DB처럼 엄격하지는 않다