본문 바로가기

CS35

조인(Join) 알고리즘 - 중첩 루프 조인(Nested Loop Join) 조인(Join) 알고리즘 - 중첩 루프 조인(Nested Loop Join)조인이란 데이터베이스에서 하나의 테이블이 아닌 두 개 이상의 테이블을 묶어서 하나의 결과물을 만드는 것입니다.이번 포스팅에서는 이러한 조인의 원리. 즉, 조인 알고리즘 중 중첩 루프 조인에 대해서 알아보겠습니다.  중첩 루프 조인 (Nested Loop Join)중첩 for문과 같은 원리로 조건에 맞는 조인을 하는 방법의 조인입니다. for(i: Int in 1..10){ for(j: Int in 1..10){ ... }} 해당 방법에서는 두 개의 테이블을 Driving Table, Driven Table로 나눕니다. for(i: Int in 1..10){ //  과정을 구체적으로 설명해 보겠습니다. Driving Table은.. 2023. 3. 1.
인덱스의 정의 인덱스(Index)의 정의 데이터 베이스에서 인덱스란 데이터를 빠르게 찾을 수 있는 하나의 장치입니다. 원하는 레코드를 찾으려고 할 때 인덱스가 없으면 모든 레코드를 하나씩 확인해 봐야 합니다. 이는 Full Scan 방식으로 인덱스를 사용하는 방법에 비해 느리다는 단점이 있습니다. 인덱스를 좀 더 구체적으로 설명하자면 테이블의 한 컬럼을 복사하여 정렬한 것입니다. 이렇게 복사해서 만든 인덱스는 데이터가 들어가 있는 것이 아니라 원래 테이블에서 해당 레코드의 주소가 들어있습니다. 원하는 레코드를 찾는 방법은 인덱스에서 이 주소를 찾는 개념입니다. 즉 인덱스를 사용하면 빠른 속도로 원하는 레코드에 접근할 수 있고 이로인해 서버의 부하를 줄일 수 있습니다. 하지만 장점만 있는 것은 아닙니다. 인덱스를 생성하.. 2023. 2. 27.
프로세스의 메모리 구조 프로세스의 메모리 구조 프로세스는 메모리에 올라가 실행되고 있는 프로그램을 의미합니다. 여기서 프로세스의 코드들은 코드의 상태와 종류에 따라 프로세스에 각기 다른 메모리 영역에 들어가게 됩니다. 이번 포스팅에서는 이러한 프로세스의 메모리 구조에대해 설명 해보겠습니다. 스택 함수가 호출되고 사용되는 지역변수와 매개변수가 저장되는 영역입니다. 컴파일 시 크기가 정해집니다. 컴파일 시간에 크기가 정해지는 스택 영역 특성상 크기를 늘릴 수 없기 때문에 재귀함수의 경우, 스택 영역을 초과하는 메모리가 필요할 경우 stack overflow가 발생합니다. 힙 사용자에 의해 메모리 공간이 동적으로 할당되고 해제되는 영역입니다. 런타임 시 크기가 정해집니다. 데이터 전역변수, 정적변수가 저장되고 프로그램이 종료될 때 .. 2023. 2. 25.
프로세스와 컴파일 과정 프로세스와 컴파일 과정 이번 포스팅에서는 소스코드가 어떠한 과정을 거쳐 프로세스, 즉 실행가능한 파일이 되는지 설명해 보겠습니다. 컴파일 과정 전처리 첫 번째로 소스코드는 전처리 과정을 통해 주석들이 제거되고 헤더파일을 병합합니다. C언어에서 주로 사용하는 #include 같은 전처리문은 stdio.h 헤더파일을 선언한 소스코드 파일에 포함시킨다는 의미입니다. #include를 말고도 다양한 전처리문을 처리해주는 과정입니다. 컴파일러 오류 처리, 코드 최적화 작업을 하며 중간코드인 어셈블리어로 변환합니다 어셈블러 어셈블리어로 이루어진 코드를 .obj 형태에 목적코드로 변환합니다. 링커 마지막 단계입니다. 프로그램 내에 있는 라이브러리 함수 또는 다른 파일들과 목적 코드를 결합하여 실행 파일을 만듭니다. .. 2023. 2. 25.