📌 Study Tip
-
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..
-
정보처리기사
페이지 교체 알고리즘 - 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방법을 사용한다면 몇 번의 페이지 부재가 발생하는가? (..
-
정보처리기사
[정보처리기사 실기] 프로그래밍 언어 활용 (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튜닝/아키텍처 기반 튜닝 원리] 데이터베이스 I/O 원리(1) (블록단위 I/O, 메모리 I/O vs. 디스크 I/O, Sequential I/O vs. Random I/O, Single Block I/O vs. Multi Block I/O, Prefetch, Direct Path I/O)
🖥️ 들어가며📌 데이터베이스 성능 튜닝의 3대 요소: Li Call I/O- Library Cache 최적화- 데이터베이스 Call 최소화- I/O 효율화 및 버퍼캐시 최적화✏️ 1. 블록단위 I/ODBMS는 블록단위로 I/O를 수행합니다.데이터파일 → DB버퍼캐시로 블록을 적재할 때데이터파일 → 블록을 직접 읽고 쓸 때버퍼캐시 → 블록을 읽고 쓸 때버퍼캐시 → 변경된 블록을 다시 데이터파일에 쓸 때 ✏️ 2. 메모리 I/O vs. 디스크 I/O메모리 I/O vs. 디스크 I/O (1): I/O 효율화 튜닝의 중요성 디스크를 경유한 데이터 입출력: 디스크 액세스 암(Arm)을 움직이면서 헤드를 통해 데이터를 읽고 씀=> 느림메모리를 통한 입출력: 전기적 신호=> 디스크를 통한 I/O에 비해 비교할..
-
SQL 튜닝
[SQL 튜닝/인덱스와 조인] 다양한 인덱스 스캔 방식 (Index Range Scan, Index Full Scan, Index Unique Scan, Index Skip Scan, Index Fast Full Scan, Index Range Scan Descending, In-List Iterator, Index Combine)
🖥️ 들어가며📌 인덱스 스캔 방식: 여러가지가 있지만, Index Unique Scan을 제외하면 Index Range Scan의 성능이 가장 좋습니다.✏️ 1. Index Range Scan항상 빠른 속도를 보장하지는 않습니다.(인덱스 스캔의 손익분기점: Index Rage Scan에 의한 테이블 액세스가 Full Table Scan보다 느려지는 지점)SQL 튜닝: Key Point인덱스 스캔하는 범위를 얼마나 줄일 수 있는가?테이블로 액세스하는 횟수를 얼마나 줄일 수 있는가? (즉, R.A를 얼마나 줄일 수 있는가)힌트: Range Scan을 유도하는 인트는 없으며, Index 힌트*를 활용합니다. 👉🏻 *힌트힌트는 사용자의 명령어로 인식됩니다.따라서 힌트가 적용되지 않는 경우그 힌트가 논리적..
-
정보처리기사
프로세스 스케줄링 - 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 (바..
-
코딩테스트
[java/프로그래머스/77884] 약수의 개수와 덧셈 (Math.sqrt(i) == 0)
✏️ 문제 설명 두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요. ✏️ code🖥️ 아쉬운 점: sqrt를 생각하지 못한 것제곱수인 경우, 약수 개수가 홀수입니다.if (i % Math.sqrt(i) == 0) {answer -= i;}else {answer += i;}class Solution { public int solution(int left, int right) { int result = 0; for (int i = left; i
-
문법
[Java/문법] ArrayLIst 주요 메서드 정리 (add, get, contains, indexOf, lastIndexOf, set, remove, clear, size, isEmpty, toArray, forEach, sort(Comparator.naturalorder()/.reverseOrder()))
✏️ 추가: add메서드설명add(E e)리스트 끝에 요소 추가add(int index, E e)특정 인덱스에 요소 삽입ArrayList list = new ArrayList();list.add("Apple"); // ["Apple"]list.add("Banana"); // ["Apple", "Banana"]list.add(1, "Cherry"); // ["Apple", "Cherry", "Banana"] ✏️ 조회: get, contains메서드설명get(int index)특정 인덱스의 요소 가져오기contains(Object o)리스트에 특정 요소가 있는지 확인 (반환: true / false)indexOf(Object o)특정 요소의 인덱스 반환 (없으면 -1)lastIndexOf(Object..
-
코딩테스트
[java/프로그래머스/120924] 다음에 올 숫자 (등차수열, 등비수열 비교)
✏️ 문제 설명등차수열 혹은 등비수열 common이 매개변수로 주어질 때, 마지막 원소 다음으로 올 숫자를 return 하도록 solution 함수를 완성해보세요. 제한사항2 -1,000 common의 원소는 모두 정수입니다.등차수열 혹은 등비수열이 아닌 경우는 없습니다.등비수열인 경우 공비는 0이 아닌 정수입니다.✏️ codeclass Solution { public int solution(int[] common) { int last = common.length - 1; if (common[1] - common[0] == common[2] - common[1]) { int diff = common[1] - common[0]; ret..
-
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과 실행계획을 ..