CS

    스키마(Schema)

    스키마 스키마라는 단어는 형태 , 모양 , 모양 또는 계획 을 의미 하는 그리스어 skhēma 에서 유래했다. 스키마는 심리학에서 정보 범주와 정보 간의 관계를 구성하는 조직화된 사고 또는 행동 패턴을 설명하는 데 사용된다. 정의 데이터베이스의 구조와 제약조건에 대한 명세를 기술한 것을 의미한다. 데이터베이스에서 데이터 저장을 나타내는 추상적인 디자인을 의미한다. 특징 데이터 사전(= 시스템 카탈로그)에 저장 데이터베이스에 저장되어 있는 모든 데이터 개체들에 대한 정보를 유지, 관리하는 시스템 MySQL 에서는 information_schema 가 데이터 사전을 의미 MySQL 서버 내에 존재하는 DB 의 메타 정보(테이블, 칼럼, 인덱스 등의 스키마 정보)를 모아둔 곳이다. 대부분 읽기전용으로 제공되는..

    인덱스와 힌트

    Index 와 Hint 데이터베이스 I/O 디스크가 느린 이유 데이터를 읽기 위해서는 헤드를 움직여 데이터가 저장된 위치(트랙)를 찾아야 한다. 이때 소요되는 시간을 탐색 시간(seek time)이라고 한다. 그 후 원하는 정보가 있는 섹터가 다가올 때까지 기다리는데 이때의 시간을 회전 대기 시간(rotational latency time)이라고 한다. 헤드 : 상단 이미지에서 디스크 오른쪽에 있는 회색 꺾쇠의 디스크와 닿는 부분 트랙 : 디스크(플래터)의 한 면에서 중심으로부터 같은 거리에 있는 섹터들의 집합 섹터 : 데이터 저장/판독의 물리적 단위 데이터베이스의 I/O 처리 작업은 이렇게 물리적인 작업을 거치기 때문에 시간이 많이 소모된다. 순차 I/O vs 랜덤 I/O 순차 I/O 물리적으로 인접한..

    트랜잭션이란?

    트랜잭션(Transacation) 정의 트랜잭션이란 데이터베이스의 상태를 변화시키는 하나의 논리적인 작업 단위라고 할 수 있으며, 트랜잭션에는 여러개의 연산이 수행될 수 있다. 특징 하나의 트랜잭션은 Commit 되거나 Rollback 된다. 트랜잭션을 사용하는 이유 트랜잭션은 하나의 논리적인 작업의 단위이기 때문에, 여러개의 작업을 하나의 논리적인 단위로 묶어서 반영과 복구를 조정할 수 있기 위해 사용한다. 따라서, 데이터의 부정합이 일어났을 경우 롤백을 하여 데이터의 부정합을 방지할 수 있다. Ex. A 계좌에서 출금 -> B 계좌로 입금 하는 것을 하나의 논리적인 작업의 단위로 묶어서 반영과 복구를 조정할 수 있다. ACID 트랜잭션의 성질에는 ACID 가 있다. Atomicity(원자성) 트랜잭션..

    세그멘테이션과 페이징

    세그멘테이션과 페이징 세그멘테이션과 페이징을 배우기 전에 아래 내용에 대해서 학습이 안되어 있다면 배우고 오자. 주소 바인딩(Address Binding) 스와핑(Swapping) 메모리 할당과 단편화 세그멘테이션 세그멘테이션(Segmentation)은 프로그래머가 인지하는 메모리의 모습을 실제 메모리의 모습(Ex. 프로세스의 메모리 구조)으로 변환해주는 메모리 기법을 제공한다. 세그먼테이션은 프로세스를 세그먼트(segment)의 집합으로 만든다. 각 세그먼트의 크기는 일반적으로 같지 않다. 프로세스를 code, data, stack & heap 으로 나누는 것 역시 세그먼테이션의 모습이다. 물론 code, data, stack & heap 각각 내부에서 더 작은 세그먼트로 나눌 수도 있다. 세그먼트(S..

    메모리 할당과 단편화

    메모리 할당과 단편화 이번 시간에 메모리 할당과 단편화에 대해서 배워보자. 메모리 할당 메모리 할당은 프로세스를 메모리에 할당하는 것을 의미한다. 메모리 공간을 할당할 때 빈곳이 여러개라면, 어디에 할당을 해야할지 정해야 한다. 공간을 할당한다는 것은 메모리를 어떻게 분할(partition)할 것인지와 연관이 있는데 두 가지 방식이 있다. 고정 분할 고정 분할은 말 그대로 메모리를 똑같은 고정된 크기로 분할하는 것을 의미한다. 각 분할마다 하나의 프로세스를 가진다. 고정 분할 방식을 사용하면 내부 단편화가 발생할 수 있다. 가변 분할 가변 분할은 메모리의 어떤 부분이 사용되고 있고, 어떤 부분이 사용되고 있지 않은가를 파악할 수 있는 테이블을 유지하여 관리하는 기법이다. 초기에 모든 메모리 공간은 한 개..

    스와핑

    스와핑(Swapping) 스와핑(Swapping) 개념은 메모리 관리 전략을 배울때 꼭 알아두어야하는 필수 개념이다. 메모리 관리 전략 메모리 용량이 증가함에 따라 프로그램의 크기 또한 계속 증가하고 있기 떄문에 메모리는 언제나 부족하다. 메모리 관리 전략이란 제한된 메모리를 효율적으로 사용하기 위한 전략을 의미한다. CPU 스케줄링 CPU 를 효율적으로 사용하기 위한 여러 CPU 스케줄링 기법들에 대해서 배운다. 메모리 관리전략 메모리를 효율적으로 사용하기 위해서 메모리 관리 전략들에 대해서 배운다. 스와핑(Swapping) 스와핑(Swapping)은 원어 그대로 교체라는 의미를 지닌다. 무엇을 교체하는지 배워보자. 프로세스가 실행 되기 위해서는 메모리에 있어야 하지만, 프로세스는 실행 중에 임시로 예..

    주소 바인딩

    주소 바인딩(Address Binding) 주소 바인딩(Address Binding) 방식에 대해서 배워보자. 논리 주소와 물리 주소 프로세스는 실행을 위해 메모리에 적재되면 프로세스를 위한 독자적인 주소공간이 생긴다. 이 주소를 논리적 주소(logical address)라고 한다. 논리적 주소는 각 프로세스마다 독립적으로 할당된다. 즉, 프로세스의 메모리 영역(코드, 데이터, 힙, 스택)에 할당되는 주소들을 논리 주소라고 부른다. 따라서, 웹 애플리케이션에서 작성한 코드들이 프로세스의 메모리 영역에 할당될 것이며, 각 논리 주소가 부여될 것이다. 그리고 웹 애플리케이션이 실행되어 메모리에 적재되면 기억장치 메모리의 주소도 있을텐데, 그곳에서 할당되는 주소를 물리 주소(physical address)라고..

    교착상태와 기아상태

    교착상태(Deadlock) 교착상태에 대해서 배워보자. 만약에, 프로세스 동기화에 대한 지식이 없다면 해당 링크를 통해서 배우고오자. 교착상태란 Wikipedia - 교착상태란 두 개 이상의 작업이 서로 상대방의 작업이 끝나기 만을 기다리고 있기 때문에 결과적으로 아무것도 완료되지 못하는 상태를 가리킨다. 예를 들어 하나의 사다리가 있고, 두 명의 사람이 각각 사다리의 위쪽과 아래쪽에 있다고 가정한다. 이때 아래에 있는 사람은 위로 올라 가려고 하고, 위에 있는 사람은 아래로 내려오려고 한다면, 두 사람은 서로 상대방이 사다리에서 비켜줄 때까지 하염없이 기다리고 있을 것이고 결과적으로 아무도 사다리를 내려오거나 올라가지 못하게 되듯이, 전산학에서 교착 상태란 다중 프로그래밍 환경에서 흔히 발생할 수 있는..