본문 바로가기

CHALLENGE489

[J STORY] SQLP - LOCK 1. LOCK 가. Lock이란? 같은 자원을 액세스하려는 다중 트랜잭션 환경에서 데이터베이스의 일관성과 무결성을 유지하기 위해 트랜잭션의 순차적 진행을보장할 수 있는 직렬화(Serialization) 장치이다. 나. 공유 Lock과 배타적 Lock 1) 공유 Lock 공유(Shared) Lock은 데이터를 읽고자 할 때 사용 다른 공유 Lock과는 호환되지만 배타적 lock과는 호환되지 않음 2) 배타적 Lock 배타적(Exclusive) Lock은 데이터를 변경하고자 할 대 사용되며, 트랜잭션이 완료될 때까지 유지 해당 Lock이 해제될 때까지 다른 트랜잭션은 해당 Resource에 접근할 수 없음 다. 블로킹과 교착상태 1) 블로킹 Lock경합이 발생해 특정 세션이 작업을 진행하지 못하고 멈춰 선 .. 2021. 4. 26.
[J STORY] SQLP - 데이터베이스 I/O 원리 1. 블록단위 I/O 데이터 파일에서 DB 버퍼 캐시로 블록을 적재할 때 데이터 파일에서 블록을 직접 읽고 쓸때 버퍼 캐시에서 블록을 읽고 쓸때 버퍼 캐시에서 변경된 블록을 다시 데이터 파일에 쓸 때 2. 메모리 I/O VS 디스크 I/O 가. I/O 효율화 튜닝의 중요성 디스크를 경우한 데이터 입출력은 디스크의 액세스 암(Arm)이 움직이면서 헤드를 통해 데이터를 읽고 쓰기 때문에 느림 메모리를 통한 입출력은 전기적 신호에 불과하기 때문에 디스크를 통한 I/O에 디해 비교할수 없을정도로 빠름 모든 DBMS는 읽고자 하는 블록을 먼저 버퍼 캐시에서 찾고 ,없을경우에는 디스크에서 읽어 버퍼 캐시로 적재 후 읽기/쓰기 작업을 수행 이러한 이유로 모든 데이터를 메모리에 올려놓고 사용하면 좋겠지만 메모리는 물리.. 2021. 4. 26.
[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.