본문 바로가기

db9

SQLP - 동시성 제어 1. 동시성 제어 DBMS는 다수의 사용자를 가정하며, 동시에 작동하는 다중 트랜잭션의 상호 간섭 작용에서 데이터베이스를 보호 할 수 있어야 하며, 이를 동시성 제어(Concurrency Control)이라 한다. 동시성을 제어할 수 있도록 하기 위해 모든 DBMS가 공통적으로 Lock 기능을 제공. SET TRANSACTION 명령어를 이용해 트랜잭션 격리성 수준을 조정할 수 있는 기능도 제공. SQL Server의 경우, 기본 트랜잭션 격리성 수준인 Read committed 상태에선 레코드를 읽고 다음 레코드로 이동하자 마자 공유 Lock을 해제하지만, Repeatable Read로 올리면 트랜잭션을 커밋될 대까지 공유 Lock을 유지 동시성과 일관성의 상관관계 가. 비관적 동시성 제어 (Pessi.. 2021. 4. 28.
[J STORY] SQLP - 트랜잭션 트랜잭션(Transaction)은 업무 처리를 위한 논리적인 작업 단위이다. 1. 트랜잭션의 특징 원자성(Atomicity) 트랜잭션은 더 이상 분해가 불가능한 업무의 최소단위이므로, 전부 처리되거나 아예 하나도 처리되지 않아야 함. 일관성(Consistency) 일관된 상태의 데이터베이스에서 하나의 트랜잭션을 성공적으로 완료하고 나면 그 데이터베이스는 여전히 일관된 상태여야 함. 격리성(Isolation) 실행 중인 트랜잭션의 중간 결과를 다른 트랜잭션이 접근할 수 없음 영속성(Durability) 트랜잭션이 일단 실행을 성공적으로 완료하면 그 결과는 데이터베이스에 영속적으로 저장. 2. 트랜잭션 격리성 가. 낮은 단계의 격리성 수준에서 발생할 수 있는 현상들 1) Dirty Read 다른 트랜잭션에 .. 2021. 4. 27.
[J STORY] SQLP - 데이터베이스 CALL과 네트워크 부하 1. 데이터베이스 CALL 종류 가. SQL 커서에 대한 작업 요청에 따른 구분 Parse Call : SQL 파싱을 요청하는 Call Execute Call : SQL 실행을 요청하는 Call Fetch Call : SELECT 문의 결과 데이터 전송을 요청하는 Call select cust_nm, birthday from customer where cust_id = :cust_id call count cpu elapsed disk query current rows ----- ------ ----- ------- ---- ----- ------ ----- Parse 1 0.00 0.00 0 0 0 0 Execute 5000 0.18 0.14 0 0 0 0 Fetch 5000 0.21 0.25 0 200.. 2021. 4. 25.
[J STORY] SQLP - SQL 파싱 부하 1. SQL 처리과정 사용자는 구조화된 질의언어(SQL, Structured Query Language)를 통해 사용자가 원하는 결과집합을 정의 DBMS는 사용자의 SQL을 SQL옵티마이저를 통해 실행계획으로 작성해줌 가. SQL 파싱(Parsing) SQL을 실행하면 제일먼저 SQL 파서(parser)가 SQL 문장에 문법적 오류가 없는지 검사(Syntax 검사) 문법적 오류가 없다면 의미상 오류가 없는지 검사(Semantic 검사, 오브젝트 존재유무등) 검사를 다 마치면, 사용자가 발생한 SQL과 그 실행계획이 라이브러리캐시(프로시저캐시)에 캐싱되어 있는지 확인 캐싱되어 있다면 소프트파싱, 캐싱되어있지 않다면 하드파싱 파싱종류 소프트파싱 (Soft Parsing) SQL과 실행계획을 캐시에서 찾아 곧.. 2021. 4. 25.
SQLP - 인덱스 기본 1. 인덱스 특징과 종류 인덱스는 원하는 데이터를 쉽게 찾을 수 있도록 돕는 책의 찾아보기(색인)과 유사한 개념이다. 인덱스는 테이블을 기반으로 선택적으로 생성할 수 있는 구조이다. 인덱스의 기본적인 목적은 검색 성능의 최적화이다. 검색 조건을 만족하는 데이터를 인덱스를 통해 효과적으로 찾을수 있도록 돕는다. DML 작업은 테이블과 인덱스를 함께 변경하므로 느려지는 단점이 존재한다. 가. 트리기반 인덱스 DBMS에서 가장 일반적인 인덱스이다. B 트리 인덱스는 브랜치블록과 리프 블록으로 구성한다. 브랜치 블록중 가장 상위에 있는 블록을 루트 블록이라한다. 브랜치 블록은 분기를 목적으로 하는 블록이다. 리프 블록은 트리 가장 아래 단계에 존재한다. 리프블록은 인덱스를 구성하는 칼럼의 데이터와 해당 데이터를.. 2021. 4. 24.
SQLP - 데이터베이스 아키텍처 1. 아키텍처 가. ORACLE 아키텍처 데이터베이스 : 물리적인 디스크에 저장된 데이터집합(데이터파일, 리두로그파일, 컨트롤파일) 인스턴스 : 공유메모리(SGA)와 이를 엑세스하는 프로세스 집합 ★ 하나의 인스턴스는 하나의 데이터베이스를 엑세스(Single), 여러개의 인스턴스는 하나의 데이터베이스를 엑세스(RAC) 나. SQL SERVER 아키텍처 정의 하나의 인스턴스당 최고 32,767개의 데이터베이스를 정의해서 사용 기본적으로 시스템데이터베이스가 만들어지면, 사용자데이터베이스를 추가하여 생성하는 구조 시스템데이터베이스 : mster, model, msdb, tempdb 등 사용자데이터베이스 : 데이터파일(mdf), 트랜잭션로그파일(ldf), 보조데이터파일(ndf) 2. 프로세스 서버프로세스 : 전.. 2021. 4. 24.