📌 Study Tip
-
SQL 튜닝
[SQL튜닝/아키텍처 기반 튜닝 원리] SQL 파싱 부하 (SQL 처리과정, 캐싱된 SQL 공유, Bind 변수 사용, Static/Dynamic SQL, Application Cursor Caching)
🖥️ 들어가며📌 SQL 파싱 부하의 핵심: 파싱 최소화, 쿼리 최적화, 인덱스 관리를 통해 시스템 자원 효율성을 극대화하는 것입니다.(Hard Parsing, Soft Parsing, Bind 변수, Application Cursor Caching)✏️ 1. SQL 처리과정처리과정 1: SQL 파싱(Parsing)(1) Syntax 검사: SQL 문장에 문법적 오류가 없는지(2) Semantic 검사: 의미상 오류가 없는지(3) SQL 실행 계획이 Library Cache(SQL Server: Procedure Cache)에 존재하는지, 존재 여부 점검=> ⭐⭐⭐ 캐싱 O: Soft Parsing, 캐싱 X: Hard Parsing파싱 종류설명소프트 파싱 (Soft Parsing)SQL과 실행계획을 ..
-
SQL 튜닝
[SQL튜닝/옵티마이저 원리] 쿼리 변환 2 (조건절 Pushing, 조건절 이행, 불필요한 조인 제거, OR 조건을 Union으로 변환, 기타)
🖥️ 들어가며📌 쿼리 변환 종합- 서브쿼리 Unnesting (+ push_subq)- 뷰 Merging (불가한 경우: 집CR 함수는 불가, Group By는 가능)- 조건절 Pushing (조인절 Pushdown, 조인절 Pullup, 조인조건 Pushdown)- 조건절 이행- 불필요한 조인 제거- OR 조건을 Union으로 변환 (OR-Expansion)- 기타 ✏️ 1. 조건절 Pushing옵티마이저의 뷰 처리1차적으로 뷰 Merging을 수행하지만뷰 Merging 실패 시 옵티마이저는 조건절(Predicate) Pushing을 시도합니다.조건절 Pushing뷰를 참조하는 메인쿼리 블록의 조건절을 → 뷰 쿼리 블록 안으로 Pushing하는 기능입니다.조건절 Pushing 종류1. 조건절 Pus..
-
정보처리기사
프로세스 스케줄링 - FCFS, SJF, HRN, SRT, RR
비선점FCFS(First come First served, 서비스를 받으러 도착한 순서대로)1. 다음은 CPU에 서비스를 받으려고 도착한 순서대로 프로세스와 그 서비스 시간을 나타낸다. FCFS CPU 스케줄링에 의해서 프로세스를 처리한다고 했을 때, 프로세스 평균 대기 시간은 얼마인가?프로세스버스트 시간(초)대기시간P1240 (바로 시작)P2324 (P1의 소요시간)P3327 (P1 + P2 소요시간 )24 + 27 = 5151 / 3 = 17 2. 다음과 같은 3개의 작업에 대하여 FCFS 알고리즘을 사용할 때, 임의의 작업 순서로 얻을 수 있는 최대 평균 반환 시간을 T, 최소 평균 반환 시간을 t라고 가정했을 때 T-t 값은?프로세스실행시간P19P23P312최대평균반환시간대기시간반환시간120 (바..
-
정보처리기사
[정보처리기사 실기] 프로그래밍 언어 활용 (C언어, JAVA, Python)
✏️ C언어, JAVA기본 데이터 타입 및 크기C언어JAVA자료형예약어(크기, byte)예약어(크기, byte)정수형short(2)int(4)long(4)unsignedbyte(1)short(2)int(4)long(8)실수형float(4)double(8)long doublefloat(4)double(8)문자형char(1)unsigned charchar(2)형 없음voidvoid논리형-boolean(1) C언어 연산자 우선순위비트연산자: 정수형 변수만을 대상으로 합니다. JAVA 연산자 우선순위 JAVA의 다형성: 오버로딩(Overloading), 오버라이딩(Overriding), 업캐스팅(UpCasting)오버로딩- 같은 클래스 내에서 같은 메소드명 중복 정의(매개변수의 자료형, 개수, 순서 상이)- 메..
-
SQL 튜닝
[SQL튜닝/고급SQL활용] 배치 프로그램 튜닝 (배치 프로그램 튜닝 개요, 병렬처리 활용, Full/Partial/Dynamic Partition Wise Join, QC와 서버프로세스, 데이터 재분배, PD_DISTRIBUTE 힌트, 병렬처리 시 주의사항)
🖥️ 들어가며📌 배치 프로그램이란- 사용자와 상호작용 없이 대량의 데이터를 처리하는 일련의 작업들을 묶어- 정기적으로 반복수행하거나 정해진 규칙에 따라 자동수행하는 프로그램을 말합니다.📌 특징에 따른 배치 프로그램 구분- 정기 배치: 정해진 시점에 실행 (주로 야간)- 이벤트성 배치: 사전에 정의해 둔 조건에 충족될 경우 자동 수행- On-Demand 배치: 사용자의 명시적인 요구가 있을 때마다 실행 ✏️ 1. 배치 프로그램 튜닝 개요배치 환경 변화과거: 일(Daily)/월(Monthly) 배치 작업 위주, 야간에 생성된 데이터 → 주간 업무에 활용, 온라인과 배치 프로그램 구분이 비교적 명확했습니다.현재: 시간(Houly)/분(Minutely) 배치 작업, On-Demand 배치를 제한적이나마 허..
-
SQL 튜닝
[SQL튜닝/SQL 분석] SQL 분석 도구(1) (AutoTrace, dbms_xplan.display & dbms_xplan.display_cursor, 10046 Trace & SQL Trace)
🖥️ 들어가며📌 Trace 결과 분석: AutoTrace, dbms_xplan.display & dbms_xplan.display_cursor, 10046 Trace & SQL Trace📌 전체 DB 성능 분석: AWR Report ✏️ 1. AutoTraceSQL*Plus에서 제공하는 실제실행계획 및 실행통계 확인 도구SQL 수행 시 실제 일량 측정 및 튜닝하는데 유용한 정보들을 많이 포함하는 도구입니다.10046 Trace와는 달리(.trc 파일 생성) 트레이스 파일 없이 화면에 결과를 출력합니다.출력 정보조건절 정보(Predicate Information): access / filterHint ReportNoteEvent에 대한 통계 정보: sorts SQL> set autot onSQL> s..
-
SQL 튜닝
[SQL튜닝/인덱스와 조인] 인덱스 스캔 효율1 (Sequential Access 선택도 높이기, =, IN, 드라이빙 조건, 체크 조건)
🖥️ 들어가며📌 I/O 튜닝의 핵심 원리- Sequentail Access의 선택도를 높인다.- Random Access 발생량을 줄인다.👉🏻 드라이빙 조건과 체크 조건드라이빙 조건: 인덱스를 사용하여 데이터에 빠르게 접근합니다.체크 조건: 인덱스를 사용하지 않고 필터링 역할을 합니다. ✏️ 1. 인덱스 매칭도⭐⭐⭐ =, IN 조건이 아닌 조건 이후는 무조건 체크 조건입니다.SELECT *FROM 사원WHERE 입사년월 BETWEEN '2001' AND '2103'AND 성별 = '남'AND 관리자 = '52';쿼리문이 위와 같을 때, 가장 적절한 인덱스 구성은?성별 + 관리자 + 입사년월(=, =, BETWEEN)(드라이빙, 드라이빙, 드라이빙 조건)사유: =, IN을 선두컬럼으로 두어 이후에도..
-
SQL 튜닝
[SQL튜닝/인덱스와 조인] 인덱스의 구조, 기본 원리
🖥️ 들어가며📌 튜닝에서 가장 중요한 점: 즉, 디스크 I/O 횟수를 절감해야하고, 이를 위해 튜너는 블록을 적게 읽는 방법을 찾아야 합니다.✏️ 1. 인덱스의 구조인덱스: 키 순서대로 정렬한다는 점이 가장 중요합니다.인덱스는 Index Key + RowID만 저장하면 되기 때문에 한 블록에 테이블보다 더 많은 데이터를 저장할 수 있습니다.RowID: Oracle에서 데이터의 물리적 위치를 나타내는 포인터입니다. (Data Object + File + Block + Row)Node: key 범위 + 블록 주소를 갖고 있습니다.Root Node: 가장 상위 노드, 하위의 Branch Node 수 만큼의 RowBranch Node: Root와 Leaf의 연결 고리, 자기 하위의 Leaf Node 수 만큼..
-
Python
[Python/level 1] 자연수 뒤집어 배열로 만들기 - 12932, reversed()
문제 설명자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다. reversed()reversed(sequence)The reversed() function returns a reversed iterator object.역순으로 순회할 수 있도록 iterator를 결과값으로 반환한다.ParameterDescriptionsequenceRequired. Any iterable object 참고자료: W3Schools - Python reversed() Function code - 1차def solution(n): listN = [] for i in str(n): listN.append(int(i)) ..
-
정보처리기사
페이지 교체 알고리즘 - FIFO, LRU, LFU
FIFO(First in First out, 먼저 들어온 것을 먼저 교체)1. 3개의 페이지 프레임을 갖는 시스템에서 페이지 참조 순서가 1, 2, 1, 0, 4, 1, 3일 경우 FIFO 알고리즘에 의한 페이지 교체의 경우 프레임의 최종 상태는?FIFO공간 3개1: 페이지 부재 발생1 2: 페이지 부재 발생1 21 2 0: 페이지 부재 발생4 2 0: 페이지 부재 발생FIFO: 먼저 들어온 것을 먼저 빼냄1 → 44 1 0: 페이지 부재 발생2 → 14 1 3: 페이지 부재 발생0 → 3프레임의 최종 상태4, 1, 3 2. 3개의 페이지 프레임을 가진 기억장치에서 페이지 요청을 다음과 같은 페이지 번호 순으로 요청했을 때 교체 알고리즘으로 FIFO방법을 사용한다면 몇 번의 페이지 부재가 발생하는가? (..