데이터베이스 인덱스
·
Computer Science/Database
인덱스란?데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조로 저장되는 컬럼의 값을 사용하여 항상 정렬된 상태를 유지한다 (MySql InnoDB 기준) 값을 항상 정렬된 상태로 유지하는 이유는 B-Tree의 변형 구조인 B+Tree 자료구조를 통해 인덱스를 구현하기 때문이다 먼저 B-Tree의 구조를 알아보자 B-Tree B-Tree는 균형 잡힌 트리 구조를 가지며, 데이터를 정렬된 상태로 유지하는 특징을 갖고 있다 B-Tree에서는 크게 3가지의 노드가 존재한다루트 노드 (최상위)리프 노드 (최하위)브랜치 노드 (중간) B-Tree는 모든 데이터를 순회하기 위해서 트리의 모든 노드를 방문해야 한다는 단점이 존재하다 그렇기에 이를 개선한 B+Tree가 인덱스의 자료구조로 채택되었다 B+Tree ..
Redis
·
Computer Science/Database
특징인메모리 기반의 키-값 구조 데이터 관리 시스템모든 데이터를 메모리에 저장하여 빠른 읽기/쓰기 속도 제공싱글 스레드 기반한 번의 하나의 명령만 실행Redis 6.0부터는 멀티스레딩 I/O를 지원하기 시작했지만 코어 로직은 여전히 싱글 스레드 https://charsyam.wordpress.com/2020/05/05/%EC%9E%85-%EA%B0%9C%EB%B0%9C-redis-6-0-threadedio%EB%A5%BC-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90/데이터 구조StringsRedis의 가장 기본적인 데이터 타입최대 512MB의 길이를 가질 수 있음binary safe하며 JPEG image 같은 데이터도 포함할 수 있음Lists삽입 순서로 정렬된 String List..
저장 프로시저 (Stored PROCEDURE)
·
Computer Science/Database
저장 프로시저는 SQL 문장들의 집합으로, 데이터베이스에 저장되어 필요할 때 호출하여 실행할 수 있는 프로그램 단위이다 프로시저의 특징재사용성자주 사용되는 쿼리를 모듈화하여 필요할 때마다 호출 가능성능 향상최초 실행 시 컴파일되어 캐시에 저장, 이후 실행 시 빠른 속도로 처리네트워크 트래픽 감소하나의 요청으로 여러 sql문을 실행할 수 있음보안 강화테이블 직접 접근 대신 프로시저 접근 권한 부여로 보안 강화 단점초기 컴파일 후 변경된 데이터 환경에 대한 최적화 어려움실행 과정최초 실행: 구문 분석, 최적화, 컴파일 과정이후 실행: 캐시된 실행 계획을 사용하여 처리데이터 분포, 데이터의 양, 인덱스 변경, 통계 정보, 하드웨어 리소스 등의 변화가 일어나도 초기에 캐시된 실행 계획을 계속 사용하기 때문에 발..
SQL과 NoSQL
·
Computer Science/Database
SQL관계형 데이터베이스 관리 시스템(RDBMS)의 데이터를 관리하기 위해 설계된 프로그래밍 언어장점데이터는 정해진 데이터 스키마에 따라 테이블에 저장 → 무결성 보장스키마: 테이블, 열, 관계, 제약 조건 등의 정보를 포함데이터는 관계를 통해 여러 테이블에 분산정규화 과정 (데이터의 중복을 피하고 일관성을 유지하기 위한 원칙)ACID 원칙을 준수하여 트랜잭션의 안정성 보장단점스키마 변경이 어려워 유연성이 떨어짐복잡한 조인 쿼리로 인한 성능 저하 가능성대체로 수직적 확장만 가능수평적 확장이 어려운 이유테이블 간 관계로 데이터 분산이 복잡함스키마 변경 시 모든 서버에 영향ACID 준수를 위한 오버헤드 발생JOIN 연산이 서버 간에 이루어져야 하므로 성능 저하사용 사례금융, 결제 등 데이터 정합성이 중요한 ..
이진탐색트리
·
Computer Science/Data Structure
이진탐색(Binary Search)탐색에 소요되는 시간: O(log n)삽입/삭제 불가연결리스트(Linked List)탐색에 소요되는 시간: O(n)삽입/삭제에 소요되는 시간: O(1)이진탐색트리(Binary Search Tree)이진탐색(탐색) + 연결리스트(삽입/삭제)탐색/삽입/삭제에 소요되는 시간최적 및 평균: O(log n)트리의 높이에 비례최악: O(n)치우친 트리의 경우 장점검색, 삽입, 삭제 모두 평균적으로 O(log n) 성능중위 순회시 정렬된 순서로 데이터 접근 가능 유연한 크기 조정 가능 단점 균형이 무너지면 성능이 O(n)까지 저하될 수 있음이진탐색트리의 단점인 불균형 문제를 해결하기 위해 자가균형 이진탐색트리(삽입/삭제 연산 시 트리를 재조정)를 사용할 수 있음AVL TreeRed..
힙(heap)
·
Computer Science/Data Structure
힙(heap) : 데이터에서 최댓값과 최솟값을 빠르게 찾기 위해서 고안된 완전 이진 트리 형태의 자료구조 힙을 통해 우선순위큐를 효율적으로 구현할 수 있음힙의 특징완전 이진 트리 구조를 가짐부모 노드와 자식 노드 간의 대소 관계가 성립함 (형제 노드 간 관계 없음)최대 힙(Max Heap)과 최소 힙(Min Heap) 두 종류가 존재최댓값 최솟값 조회의 시간 복잡도: O(1)삽입/삭제 연산의 시간 복잡도: O(log n)완전 이진 트리(Complete Binary Tree): 모든 레벨이 완전히 채워져 있으며, 마지막 레벨에서는 노드들이 가능한 가장 왼쪽부터 채워져 있는 이진 트리 최대 힙: 루트 노드가 최댓값 → 부모 노드(key) ≥ 자식 노드(key)최소 힙: 루트 노드가 최솟값 → 부모 노드(ke..
캐시매핑
·
Computer Science/Operating System
캐시의 크기는 메모리보다 작기 때문에 효율적으로 매핑하는 것이 중요하다적절한 매핑 기법을 사용하면 캐시 적중률을 높일 수 있어 전체 시스템의 성능이 향상된다운영체제의 메모리 관리운영체제는 메모리를 똑같은 크기의 페이지(4kb)로 나눠 관리를 한다 주소 구조가상 주소는 로 구성P(Page Number): 페이지 번호 (20bits로 관리)D(Page Offset): 페이지번호로부터 해당 주소까지의 거리 (12bits로 관리) 가상 주소와 물리 주소가상 주소: 프로그램이 사용하는 주소(20bits)물리 주소: 실제 메모리의 주소(16bits) 주소 변환가상 주소를 물리 주소로 변환할 때 페이지 테이블을 사용Page Number만 변환되고 Page Offset은 그대로 유지 매핑의 종류1. 직접매핑메모리의 특..
캐시히트와 캐시미스
·
Computer Science/Operating System
캐시속도가 빠른 장치와 느린 장치에서 속도 차이에 따른 병목 현상을 줄이기 위한 메모리 캐시는 반응 속도가 빠른 SRAM(Static Random Access Memory)으로 주소가 키(Key)로 주어지면 해당 공간에 즉시 접근할 수 있음이러한 특성은 DRAM(Dynamic Random Access Memory)도 동일하지만 하드웨어 설계상 DRAM은 SRAM보다 느림DRAM은 행과 열을 순차적으로 활성화하여 데이터에 접근하며 이 과정에서 추가적인 지연이 발생하기 때문 캐시를 설정할 때는 자주 사용하는 데이터를 기반으로 설정함이 때 지역성을 기반으로 설정되는데, 시간 지역성과 공간 지역성으로 나뉨 int[] arr = new int[10];for(int i=0; i시간 지역성(temporal local..
PCB와 Context Switching
·
Computer Science/Operating System
컴퓨터에서 일어나는 다중 작업은 동시에 처리하는 것이 아닌각 프로그램을 일정시간 동안 번갈아가면서 실행하는 것이다.다만 그 속도가 매우 빠르기에 동시에 처리한다고 느끼는 것이다. 프로세스들이 교체되어 수행되고 나면 원래 수행하던 프로세스의 정보를 저장하고다른 프로세스를 처리해야 하는데, 이를 저장하는 공간을 PCB(Process Control Block) 라고 한다.PCBPCB : 운영체제에서 관리하는 프로세스에 대한 메타데이터를 저장한 데이터블록프로세스가 생성될 때 고유의 PCB가 생성되며 종료되면 PCB가 제거됨커널의 데이터 영역에 저장됨실행 상태일 때는 프로그램 카운터 레지스터 값 등이 CPU 레지스터에 로드됨 Pointer: 프로세스 전환 시 위치 정보를 유지하는 스택 포인터Process Stat..
메모리 계층 구조
·
Computer Science/Operating System
메모리 계층 구조?컴퓨터 시스템에서 데이터 저장과 접근을 최적화하기 위해 설계된 구조 메모리 계층 구조를 사용하는 이유컴퓨터 시스템의 성능과 효율성을 최적화하기 위함성능 최적화: CPU가 필요한 데이터에 빠르게 접근할 수 있도록 함비용 효율성: 고가의 고속 메모리와 저가의 대용량 메모리를 적절히 조합함데이터 관리 효율화: 자주 사용되는 데이터를 빠른 메모리에 저장하여 전체 시스템의 효율을 높임레지스터CPU 내부에서 데이터를 직접 처리하는 가장 빠른 메모리현재 실행중인 명령어명령어 레지스터(IR)가 처리하며 “LOAD A, 100”과 같은 현재 실행중인 명령어를 저장연산에 필요한 임시 데이터메모리 주소프로그램 카운터다음에 실행할 명령어의 주소 저장캐시CPU와 주 메모리 사이의 속도 차이를 줄이는 고속 버퍼..