본문 바로가기

db7

INDEX 와 SQL 성능 UPDATE 시 어디에 INDEX 있고 없는 것이 성능에 좋을까? SET절에 INDEX O SET절에 INDEX X WHERE절에 INDEX O BEST WHERE 절에 INDEX X WORST NON-CLUSTERED INDEX (NC) => LEAF LEVEL 은 NC에만 있음 => INDEX "INCLUDE" 는 LEAF LEVEL에만 존재함 각 데이터를 인덱스 해놓음 ( 몇 페이지의 몇번째 ) (SEEK) 데이터를 찾을 때 이 인덱싱 트리에서 몇 페이지에 있는지 LEAF LEVEL 까지 찾고 (예: I/O 4) (LOOK UP) 그 페이지 찾아가 실 데이터를 찾는다. (I/O 1) (SCAN) 트리가 아니라 한 레벨 다 훑는것 2% 미만 데이터 검색할 때만 만든다. 2% 넘어가면 쿼리 돌릴때 알아.. 2022. 11. 15.
[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] 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.