본문 바로가기

전체 글34

데이터 저장 구조 및 I/O 메커니즘 SQL이 느린 이유 프로세스가 일을 하지 않는 이유는 I/O 떄문이다. 프로세스가 I/O를 요청하고 CPU를 반환한다. 그리고 응답이 올때까지 기다린다. 프로세스는 응답이 올때까지 기다리기에, 기다리는 동안 프로세스는 일을 하지 않아 성능이 비효율적이기 된다. I/O 대기 프로세스가 SQL을 실행하면, 데이터베이스 시스템은 디스크에서 데이터를 읽거나 쓰기 위해 I/O 요청을 보냅니다. 이때, 프로세스는 I/O가 완료될 때까지 기다리게 됩니다. 이 기간 동안 CPU는 해당 프로세스에 대한 작업을 중단하고, 다른 프로세스나 스레드에 작업을 할당할 수 있습니다. 이로 인해 다음과 같은 현상이 발생합니다: I/O 대기로 인한 지연: I/O 작업이 완료될 때까지 시간이 걸리기 때문에, 프로세스는 이 기간 동안 비.. 2024. 4. 23.
SQL 공유 및 재사용 시스템 전역 영역(SGA, System Global Area) 시스템 전역 영역(SGA, System Global Area)은 주로 데이터 베이스 시스템에서 사용되는 용어이다. SGA는 데이터베이스 인스턴스가 시작될때 할당되는 공유 메모리 영역으로, 데이터 베이스 인스턴스의 모든 프로세스에서 공유된다. SGA는 데이터베이스에서 자주 엑세스되는 데이터와 제어구조를 캐싱하는데 사용되는 여러 구성요소가 포함된다. SGA는 주로 데이터 베이스 시스템의 성능을 향상시키는데 사용되며, 데이터베이스가 실행 중일 때 계속해서 메모리를 차지하고 있다. 이러한 메모리 영역은 데이터베이스 인스턴스에 특화되어 있으며, 다른 응용 프로그램이나 시스템에서 사용되는 메모리와는 구분된다. 따라서, "시스템 전역 영역(SGA)"은 주.. 2024. 4. 13.
SQL파싱과 최적화 SQL(structed Query Language) - SQL은 기본적으로 구조적(structed)이고, 집합적(set-based)이고 선언적(declaration) 질의 언어이다. - 사용자는 SQL를 만들면 옵티마이저가 해당 SQL에 맞는 최적의 코스를 분석한 다음 프로시저에게 제일 효과적인 실행계획을 준다. * SQL 최적화 과정 알아보기 1) SQL 파싱 - SQL 최적화하는 과정을 구체적으로 말하자면, 크게 SQL 작성-> SQL 파싱 -> SQL 최적화입니다. - SQL를 주면 DB에서 해당 SQL을 파싱 트리로 생성한다. 여기서 문법적인(Syntax) 오류를 체크하고, 의미상(Sematic) 오류는 체크를 한다. - 여기서의 의미상 오류는 존재하지 않는 테이블 또는 칼럼, 오브젝트에 대한 권.. 2024. 4. 12.
java.time패키지 패키지 설명 java.time 날짜와 시간을 다루는데 필요한 핵심클래스들을 제공 java.time.chrono 표준(ISO)이 아닌 달력 시스템을 위한 클래스들을 제공 java.time.format 날짜와 시간을 파싱하고 형식화하기 위한 클래스들을 제공 java.time.temporal 날짜와 시간의 필드(field)와 단위(unit)를 위한 클래스들을 제공 java.time.zone 시간대(time-zone)와 관련된 클래들을 제공 public enum ChronoUnit implements TemporalUnit { NANOS("Nanos", Duration.ofNanos(1)), MICROS("Micros", Duration.ofNanos(1000)), MILLIS("Millis", Duration.. 2023. 10. 20.
collections framework - Collections 컬렉션 클래스 요약 Collections - 컬렉션을 위한 메서드(static)를 제공 1. Objects 2. Arrays 3. Collections 1. 컬렉션 채우기, 복사, 정렬, 검색 - fill(), copy(), sort(), binarySearch() 등 2. 컬렉션의 동기화 - synchronizedXXX() static Collection synchronizedCollection(Collection c) static List synchronizedList(List list) static Set synchronizedSet(Set s) static Map synchronizedMap(Map m) static SortedSet synchronizedSortedSet(SortedSet s) static Sort.. 2023. 9. 4.
collections framework - HashMap HashMap과 Hashtable - 순서X, 중복(키X,값O) - Map 인터페이스를 구현. 데이터를 키와 값의 쌍으로 저장 key : 중복 X value : 중복 가능 즉, id는 중복은 안되나 비밀번호는 중복 가능하다. Map Hashtable HashMap SortedMap LinkedHashMap TreeMap Hashtable : 동기화 O HashMap : 동기화 X TreeMap : TreeSet과 같은 특징을 가지고 있다(이진 탐색 트리) LinkedHashMap: Map은 순서를 유지하고 있지 않으나 순서를 유지하고 싶으면!! HashMap - Map 인터페이스를 구현한 대표적인 컬렉션 클래스 - 순서를 유지하려면, LinkedHashMap 클래스를 사용하면 된다. TreeMap - 범.. 2023. 9. 3.
collections framework - TreeSet TreeSet 이진 탐색 트리(binary search tree)로 구현. 범위 탐색과 정렬에 유리. 이진 트리는 모든 노드가 최대 2개의 하위 노드를 갖음(즉, 0 ~ 2개) 각 요소(node)가 나무(tree)형태로 연결(LinkedList의 변형) 첫번째 요소는 : 루트(root) 부모-자식 루트 A(부모) D(부모) B(A의 자식) C(A의 자식) F(D의 자식) class TreeNode { TreeNode left; 왼쪽 자식 노드 Object element; 저장할 객체 TreeNode right; 오른쪽 자식 노드 } 이진 탐색 트리(binary search tree) 부모보다 작은 값은 왼쪽, 큰 값은 오른쪽에 저장 데이터가 많아질 수록 추가, 삭제에 시간이 더 걸림(비교 횟수 증가) 5.. 2023. 9. 2.
collections framework - HashSet HashSet - 순서 X, 중복 X, Set HashSet SortedSet TreeSet HashSet - Set 인터페이스를 구현한 대표적인 컬렉션 클래스 - 순서를 유지하려면, LinkedHashSet클래스를 사용하면 된다. - HashSet은 객체를 저장하기전에 기존에 같은 객체가 있는지 확인 후 같은 객체가 없으면 저장하고, 있으면, 저장하지 않는다. - boolean add(Object o)는 저장할 객체의 equals()와 hashCode()를 호출 - equals() 와 hashCode()가 TreeSet - 범위 검색과 정렬에 유리한 컬레션 클래스 - from ~ to - HashSet보다 데이터 추가, 삭제에 시간이 더 걸림 HashSet - 주요 매서드 생성자 매서드 HashSet(.. 2023. 9. 2.
collections framework - Comparator 와 Comparable 객체 정렬에 필요한 매서드(정렬기준 제공)를 정의한 인터페이스 Comparable 기본 정렬기준을 구현하는데 사용 Comparator 기본 정렬기준 외에 다른 기준으로 정렬하고자할때 사용 public interface Comparator{ int compare(Object o1, Object o2); boolean equals(Object obj); } public interface Comparable { int compareTo(Object o); 주어진 객체(o)를 자신(this)과 비교 } 연습문제 class Ex11_7 { public static void main(String[] args){ String[] strArr = {"cat", "Dog", "lion", "tiger"}; Arrays... 2023. 9. 2.
collection framework : Arrays Arrays - 배열을 다루기 편리한 매서드(static) 제공 (1) 1. 배열의 출력 toString(배열) 매개변수에 배열을 넣으면 배열 그대로 출력해 준다. {1, 2, 3, 4, 5} -> [1, 2, 3, 4, 5] int[] 배열 = new int[]{1,2,3,4,5}; System.out.println(Arrays.toString(배열)); static String toString(boolean[] a) static String toString(byte[] a) static String toString(char[] a) static String toString(short[] a) static String toString(int[] a) static String toString(long[].. 2023. 9. 1.