본문 바로가기

개발자12

[SQLP] 2장. Lock과 트랜잭션 동시성 제어 - 동시성 제어 동시성 제어 (Concurrency Control)1. 비관적 동시성 제어 vs 낙관적 동시성 제어가. 비관적 동시성 제어사용자들이 같은 데이터를 동시에 수정할 것이라고 가정Select 시점에 Lock을 거는 비관적 동시성 제어는 자칫 시스템 동시성을 심각하게 떨어뜨릴 우려가 있음 -> no wait 옵션 사용holdlock, updlock 힌트 사용 권장나. 낙관적 동시성 제어사용자들이 같은 데이터를 동시에 수정하지 않을 것이라고 가정Select 시에는 Lock을 설정하지 않음 -> 수정 시점에 다른 사용자에 의해 값이 변경됐는지 검사 필요2. 다중버전 동시성 제어가. 일반적인 Locking 메커니즘의 문제점값을 읽는 순간에만 공유 Lock을 걸고 다음 레코드로 이동할 때 Lock을 해제함트랜잭션 격리.. 2019. 3. 8.
[SQLP] 2장. Lock과 트랜잭션 동시성 제어 - 트랜잭션 트랜잭션1. 트랜잭션의 특징원자성(Atomicity)트랜잭션은 더 이상 분해가 불가능한 업무의 최소단위이므로, 전부 처리되거나 아예 하나도 처리되지 않아야 한다.일관성(Consistency)일관된 상태의 데이터베이스에서 하나의 트랜잭션을 성공적으로 완료하고 나면 그 데이터베이스는 여전히 일관된 상태여야 한다. 즉, 트랜잭션 실행의 결과로 데이터베이스 상태가 모순되지 않아야 한다.격리성(Isolation)실행 중인 트랜잭션의 중간결과를 다른 트랜잭션이 접근할 수 없다.영속성(Durability)트랜잭션이 일단 그 실행을 성공적으로 완료하면 그 결과는 데이터베이스에 영속적으로 저장된다.2. 트랜잭션 격리성가. 낮은 단계의 격리성 수준에서 발생할 수 있는 현상들1) Dirty Read다른 트랜잭션에 의해 수정.. 2019. 3. 7.
[SQLP] 2장. Lock과 트랜잭션 동시성 제어 - Lock Lock1. Lock 기본가. Lock이란?다중 트랜잭션 환경에서 데이터베이스의 일관성과 무결성을 유지하려면 트랜잭션의 순차적 진행을 보장할 수 있는 직렬화(serialization) 장치DBMS마다 Lock을 구현하는 방식과 세부적인 기능이 많이 다르다.나. 공유 Lock과 배타적 Lock1) 공유 Lock데이터를 읽고자 할 때 사용한 리소스에 두 개 이상의 Lock을 동시에 설정할 수 있음 (다른 공유 Lock 호환 가능)다른 사용자가 동시에 읽을 수는 있어도 변경은 불가능2) 배타적 Lock데이터를 변경하고자 할 떄 사용배타적 Lock 해제될 때 까지 다른 Lock이 읽기, 쓰기 불가능다. 블로킹과 교착상태1) 블로킹Lock 경합이 발생해 특정 세션이 작업을 진행하지 못하고 멈춰 선 상태블로킹을 해.. 2019. 3. 7.
[SQLP] 1장. 아키텍처 기반 튜닝 원리 - 데이터베이스 I/O 원리 데이터베이스 I/O 원리1. 블록 단위 I/O하나의 레코드를 읽더라도 레코드가 속한 블록 전체를 읽는다.SQL 성능을 좌우하는 가장 중요한 성능지표는 액세스 하는 블록 개수이다.캐시와 데이터 단위 모두 적용된다.2. 메모리 I/O vs 디스크 I/O가. I/O 효율화 튜닝의 중요성디스크 입출력 : 디스크의 액세스 arm이 움직이면서 데이터를 Read Write 하기 때문에 느리다. 메모리 입출력 : 전기적 신호에 불과하기 때문에 빠르다.나. 버퍼 캐시 히트율(Buffer Cache Hit Ratio)버퍼 캐시 효율을 측정하는 지표로서, 전체 읽은 블록 중에서 메모리 버퍼 캐시에서 찾은 비율을 나타낸다.BCHR = (버퍼 캐시에서 곧바로 찾은 블록 수 / 총 읽은 블록 수) x 100다. 네트워크, 파일시.. 2019. 3. 7.