반응형

Putty (terminal)

SQLDEV (DB Client App)

 

Centos 

 

 

★★ 성능관점의 DBMS 아키텍처 이해 

=>DBMS 가 화이트박스처럼! SQL 이 어떻게 처리되고 어떤부분에서 느린지를 구조적으로 이해할 것 

 

 

환경설정

00 성능개선_실습환경개요.pdf
다운로드
01_01_가상화솔루션_설치.pdf
다운로드
01_02_가상화솔루션_네트웍환경구성(vmware player).pdf
다운로드
01_02_가상화솔루션_네트웍환경구성.pdf
다운로드
02 성능개선_실습환경구성_Putty.pdf
다운로드
03 성능개선_실습환경구성_SQL_Developer.pdf
다운로드

 

강의 (Day1)

00_Agenda 복사본.pptx
다운로드
01_성능관점_DBMS_아키텍처이해.pdf
다운로드
02_성능모니터링.pdf
다운로드
03_성능모니터링_실습.pdf
다운로드
04 성능개선_실습.pdf
다운로드

 

 

가상머신이 필요한 이유 

1. 완전히 새 것의 컴퓨터 환경에서 작업해야할 때 

2. 다른 운영체제의 기능 및 환경을 실습해보기 위해

https://m.blog.naver.com/ndb796/221079747949

 

 

top

=> oracle_8871_din

     ora_lgwr_dink  - LoG WRiter

     java

     ora_vktm_dink

 

DBMS 아키텍처 용어를 잘 알아둬야함!! 

 

Calc_Bonus_by_stmt_3 =>1857초

Calc_Bonus_by_stmt_5 =>643초

Calc_Bonus_by_stmt_6 =>623초

 

Calc_Bonus_by_Pstmt_1 =>156초

Calc_Bonus_by_Pstmt_2 =>16초

Calc_Bonus_by_Pstmt_3 =>16초

 

Calc_Bonus_by_Callstmt_1 =>23초

Calc_Bonus_by_Callstmt_2 =>22초

Calc_Bonus_by_Callstmt_3 =>3초

Calc_Bonus_by_Callstmt_4 =>2초

 

 

* LRU 알고리즘 (Least Recently Used Algorithm) : LRU 알고리즘 : 가장 오랫동안 참조되지 않은 페이지를 교체하는 기법

* Layer 구조 : DMBS -> O/S(프로세스를 만들고 메모리 할당) -> H/W

* PGA(Private Global Area / Process Global Area) : 메모리 덩어리 .. (개인 공간에서) 1~10MB 를 처음에 차지함

* Listener : 접속을 유도.. (port)

* Connection : User Process와 server Process를 연결하는 통로 

  - 빈번하게 Connection 을 맺을 경우 CPU를 낭비하고, OS와 Listener 가 힘들기 때문에 Connection Pool 이 정해져 있음 

* Session : Login~ LogOut  사이의 시간동안 유저의 정보(User Status)를 저장하는 메모리 덩어리

 

* resource : CPU, Memory, Disk, Network

 

* Cache : 빈번히 계속 사용하기 위해 보관 

 

* Context Switch : https://jeong-pro.tistory.com/93

 

튜닝한다고 할 때, 튜닝의 주체는 개발자가 SQL 만 튜닝해서가 아니고 그 시스템과 관련된 모든 사람들이 참여해야한다. 

 

* 인스턴스 : 메모리에 올라와 있음 

  - Large Pool : shared Pool 영역을 효과적으로 사용하기 위해 나온 메모리 영역 

   (메모리가 큰 데이터는 Shared Pool 을 쓰지않고 Large Pool을 쓰도록 하기 위해 만들어짐 )

  - SGA(System Global : 메모리덩어리 (오라클 DBMS 가 사용하는 메모리 영역_ 모든 공간에서)

    - Shared Pool : 공유영역 (Library Cache(shared SQL area), Dictionary Cache)

    - Data buffer Cache : 데이터가 올라옴 (Data File 에서) CRUD 쿼리가 저장됨 

      -> Block Size  약 2K~32K까지 지정할 수 있음 

    - Redo log buffer Cache : Redo log File이 쌓임 (메모리가 가득 찰 경우, Redo log File 로 옮김) 

  - Background Process : 프로세스 덩어리

  - Process 

    - Server Process : service를 제공 (현재는 Dedicated Server 가 더 많음 / Shared Server 는 CPU 가 부족할 때 권유함)

    - User Process

    - Background Process(○ 모양) : DBWR(Data Buffer Cached WRiter), LGWR(LoG WRiter)

 

* 데이터베이스 : 디스크에 있음 

  Database : 데이터의 집합 / 아키텍처적으로는 물리적인 파일들 

  - Control File : DB 를 제어하기 위한 파일 / 해당 파일이 망가질 경우 DBMS 가 열리지 않는다. 동일한 파일을 3개 보관하는 거임 

    (1개가 잃어버려도 복구할 수 있도록...)

  - Data Files : 바둑판 모양, 하나의 Cell 을 Block 이라고 한다. 

  - Redo log Files : DBMS 가 망가질 경우 recovery 하기 위해 log 로 만들어둔 파일 

    Redo : 데이터베이스를 recovery 하기 위해  / Undo : rollback 

  

 

① Parsing : 컴파일과 유사하다 

   - Syntax Check : SQL 문법 체크

   - Semantic Check : SQL의 의미를 체크 (CPU 를 많이 사용)

   - Shared Pool Check : 

   - Execution Plan 수립 (CPU 를 많이 사용)

② Execution : 실행

③ Fetch : Server -> Client 로 데이터를 가져오는 것

 

※ Hard Parsing(SQL을 share하지 못함) vs Soft Parsing (동일한 SQL을 share)

   => 동일한 SQL이란 공백문자와 대소문자 등이 모두 일치해야한다 (ASCII - CODE 가 달라지면 다른 SQL이기 때문)

   - SQL 공유

   - Hard Parsing 과 CPU Time 

   - Bind 변수

 

* RBO (Rule_Based Optimization) : 규칙기반 옵티마이저로서, 미리 정해진 규칙에 의한 실행계획 결정 

=>상식에 의거하나 융통성 없음, 통계정보를 보지 않음

* CBO(cost_Based Optimization) : 비용기반 옵티마이저로서, 실제 SQL 을 수행할 때 소요될 비용을 예측하고 그 값을 기준으로 실행계획 결정 

=> 현실적이고 융통성 있음 

(비용 산정의 가장 중요한 기준은 Block 의 갯수이다) ※ 11/23 추가내용

=> 갯수가 중요한 기준이 되는 이유는 많아지면 전체 컴퓨터의 Resource(디스크, 메모리, CPU)를 너무 많이쓰기 때문

 

Hash 함수 공부하기!!!!!!!!!!!!!

 

바인드 변수 :  를 쓰면 SQL을 재사용할 수 있다. 

바인딩 시점은 Parsing 이 끝나고 execute 하기 직전에 실행된다. 

 

Statement 객체 / prepared Statement 객체/ Callable Statement 객체 공부하기

 

Transaction Type

- OLTP (Online Transaction Processing) : 네트워크상에서 여러 사용자가 실시간으로 데이터베이스의 데이터를 갱신하거나 조회하는 등의 단위작업을 처리하는 방식 ex) 은행, 증권 => 작은 작업이 자주 일어남 (바인드변수는 여기서 사용)

- OLAP (Online Analytical Processing) = DSS (Decision Support System) : 이용자가 직접 데이터베이스를 검색, 분석해서 문제점이나 해결책을 찾는 분석형 애플리케이션 개념 => 대량의 작업이 빈번하지 않게 일어남 

   

* AWR(Automatic Workload Repository)

=> 자동으로 DB에 대한 통계 및 성능자료 등을 수집해 스냅샷으로 만들어 일정기간 보관하고, 이를 활용할 수 있게 해주는 기능이다.

 

 

 

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기