Putty (terminal)
SQLDEV (DB Client App)
Centos
★★ 성능관점의 DBMS 아키텍처 이해
=>DBMS 가 화이트박스처럼! SQL 이 어떻게 처리되고 어떤부분에서 느린지를 구조적으로 이해할 것
환경설정
강의 (Day1)
가상머신이 필요한 이유
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에 대한 통계 및 성능자료 등을 수집해 스냅샷으로 만들어 일정기간 보관하고, 이를 활용할 수 있게 해주는 기능이다.
'DBMS > Oracle' 카테고리의 다른 글
[Oracle] SQL 튜닝_3. 성능 모니터링 (0) | 2019.11.30 |
---|---|
[Oracle] SQL 튜닝_2. DBMS 아키텍처 (0) | 2019.11.23 |
[Oracle] 오라클(Oracle) 조인(JOIN) 문법 (0) | 2019.02.18 |
[Oracle] 오라클(Oracle) DB 계정 생성 및 삭제 권한부여 비밀번호 변경 방법 (0) | 2019.02.18 |
[Oracle] 오라클(Oracle) 설치 및 다운로드(Download) (0) | 2019.02.18 |
최근댓글