본문 바로가기

Tech/Database32

Transaction Isolation Level 이해 Database의 Transaction Isolation Level(트랜잭션 고립화 수준)이란?DBMS마다 Lock 메커니즘인 Isolation Level 을 가지고 있다. 데이터의 무결성을 보장하기 위해 존재하는 것으로, 다른 트랜잭션이 현재의 데이터에 대한 무결성을 해치지 않기 위해 잠금을 설정하는 것을 말한다.고립화 수준은 보통 4단계로 나누어지며, 1단계인 Read Committed가 각 DBMS마다 가지고 있는 기본 Lock 레벨이다.실습을 통해 고립화 수준을 이해해보자. 여기서는 SQL Server 2017 Expression 버전을 사용하였다. 먼저 Read Uncommitted(Level 0) 이란?-. 트랜잭션에서 처리 중인, 아직 커밋되지 않은 데이터를 다른 트랜잭션이 읽는 것을 허용하.. 2018. 11. 22.
인덱스 구조 DBMS는 일반적으로 B*Tree 인덱스를 사용한다.이 B*Tree 인덱스는 Root node와 Branch node, Leaf node로 구성되어 있다. Root와 Branch 블록에 있는 각 레코드는 하위 블록에 대한 주소 값을 가진다.리프 블록에 저장된 각 레코드는 키값 순으로 정렬돼 있고, 테이블 레코드를 가리키는 주소값(ROWID)를 갖는다.ROWID의 구조는 아래와 같다.ROWID = 오브젝트번호(6자리) + 데이터 파일 번호(3자리) + 블록 번호(6자리) + 데이터 번호(3자리) EMP 테이블의 각 레코드의 오브젝트 번호는 AAAE5p 이다. 오브젝트별로 유일한 값이므로 EMP 테이블의 모든 오브젝트번호는 AAAE5p 이다.데이터 파일 번호는 AAB이다. 테이블의 Extent가 다른 데이터.. 2018. 8. 2.
Database I/O Database 읽기 단위 PC에서 한글 파일이나 Word 파일을 저장할 때, 파일 단위로 읽고 저장한다. 물론 내부 메카니즘은 좀 더 섬세한 면이 있겠지만, 대용량 파일을 저장/수정할 때 시간이 걸리는데는 이러한 이유일 것이다. Database는 익히 알려진대로, 블록(Block) 단위로 읽고 저장한다. 오라클은 기본적으로 블록 사이즈가 8kb이다. 즉, database가 아주 작은 데이터를 가져온다고 하더라도, 최소한 8kb의 블록을 읽는 셈이다. Database 튜닝에 있어서, 가장 중요한 것은 바로 이 블록 단위 I/O를 줄이는 것이다. 참고로 오라클은 아래와 같은 방법으로 블록 사이즈를 확인할 수 있다. [그림1] block size Database 액세스 방법(Sequential VS Rand.. 2018. 7. 26.
SQL 공유 및 재사용 친절한 SQL 튜닝 Study - 조시형 저(DBian) 소프트 파싱 / 하드 파싱 Library Cache(라이브러리 캐시) : PL/SQL, SQL에 대한 분석 정보(Parse Tree) 및 실행 계획을 반복 재사용할 수 있도록 캐싱해 두는 메모리 공간으로서, Shared Pool의 영역 안에 있다. 소프트 파싱이란 SQL을 캐시에서 찾아 곧바로 실행단계로 넘어가는 것을 말한다. 하드 파싱이란 라이브러리 캐시에 SQL 파싱 결과가 없을 때, 최적화 부터 로우 생성 단계까지 모두 거치는 것을 말한다. 옵티마이저가 SQL을 최적화할 때, 많은 정보를 이용하여 최적화 작업을 수행한다. 예를 들어, N개의 테이블을 조인하는 쿼리문을 최적화 할 때, 조인 순서만 해도 N Factorial 이 된다. 여기에다양.. 2018. 7. 23.
반응형