전체 글(163)
-
CPU의 성능에 영향을 끼치는 것들
CPU는 컴퓨터 부품중 제일 중요한 부품입니다. 따라서, CPU의 성능을 아는 것이 중요합니다! 이번 포스팅에서는 CPU의 성능에 대해서 알아보겠습니다. CPU의 성능에 영향을 미치는 것에는 크게 3가지가 있습니다. 1. 클럭 2. 코어 3. 스레드 클럭수를 빠르게! CPU의 속도를 빠르게 만들어보자! 컴퓨터에선 클럭 신호(Clock Signal)를 통해서 시간을 구분할 수 있는데, 컴퓨터 부품들은 이 클럭 신호에 맞춰 움직인다. 따라서, 클럭 신호를 빠르게 만들어 버리면 연산 속도가 빨라지게된다. 하지만, 연산 장치가 너무나도 빨라져버리면 컴퓨터에서 수행하는 작업들은 꼬이게 되고, 발열 문제도 발생할 수 있다. 즉, 적당히 빠른 클럭 신호면 CPU가 빨라진다. 클럭 속도 클럭 속도 : 헤르츠(Hz) 단..
2023.09.19 -
인터럽트가 발생한다면, CPU는 어떻게 처리할까??
아마 이 포스팅의 제목을 보고 "인터럽트가 발생한다"라는 문장에서 아래와 같은 점들이 궁금했을 것이다. 첫째로, 인터럽트란 무엇인가? 둘째로, 인터럽트는 어디에서 발생하는 것인가? 인터럽트가 뭐야? 인터럽트란 컴퓨터가 작업을 수행하던 도중 예기치 못한 특수한 상황이 발생하여 작업을 중단하고, 특수한 상황을 먼저 처리한 후 원래의 작업으로 되돌아가 나머지 작업을 계속 수행하게 되는 일련의 과정이다. 필자는 인터럽트의 개념에서 3가지가 궁금했다. 첫째로, 특수한 상황은 무엇일까?? 둘째로, 원래의 작업으로는 어떻게 되돌아가는 것일까?? 마지막으로, 인터럽트가 발생하고 처리하는 일련의 과정의 순서는 어떻게 되는 거야?? 특수한 상황 "특수한 상황은 무엇일까??" 이 질문은 필자가 처음에 궁금해했던 인터럽트는 ..
2023.09.14 -
이력 유형 데이터 모델링을 어떻게 해야할까??
카카오테크캠퍼스 3단계에서 저희 팀이 만들 서비스는 "축팅"이다. 축팅에서는 축팅내에서 사용할 수 있는 고유한 화폐인 "폭죽"이라는 것이 있다. 저희 서비스에서는 폭죽의 거래 이력을 사용하는 기능이 있어, 폭죽 거래 이력을 DB에 저장하려고 합니다. ++ 운영 시에도 필요 그렇다면, 폭죽의 거래 이력 데이터는 어떠한 특징을 가지고 있을 까요?? 이력 유형 데이터는 아래와 같은 특징을 가지고 있습니다. 시간에 따라 데이터가 누적된다. 동일한 칼럼에 대해서 발생한다. 대량 데이터가 발생할 가능성이 높다. 성능에 영향을 주는 경우가 많다. 따라서, 이력 유형 데이터 모델링을 할 때는 데이터 관리 방법에 따라 어떤 유형의 이력 테이블을 관리하는 지 성능을 위해 어떤 부분을 고려해야 하는 지가 중요하다. 쉽게 말..
2023.09.14 -
명령어 사이클을 통해 CPU 동작 원리 및 뼈대 잡기
저번 포스팅에서는 컴퓨터 구조의 큰 그림을 그려봤다. 명령어 사이클을 통해, CPU의 동작 원리와 흐름을 알아보려고 한다. 명령어 사이클이란? CPU의 정해진 동작 흐름으로, 프로그램 속에서 명령어가 실행되는 주기는 반복된다. [인터럽트가 발생하면 이야기가 다르긴 하지만, 이에 대해서는 다음 포스팅에서 다뤄보려고 한다.] 명령어 사이클 명령어 사이클은 크게 2+1단계이다. 인출 사이클 - 실행 사이클 메모리로부터 필요한 데이터를 인출한다! 그리고, 바로 실행한다! 하지만, 메모리의 데이터가 유효주소라면 바로 실행이 불가능하다! 유효주소란? 연산에 사용될 데이터를 나타낸 메모리의 주소를 가지고 있는 메모리 주소 이 경우에는 아래와 같은 사이클을 탄다. 간접 사이클 다음으로, 간접 사이클에서 CPU의 부품들..
2023.09.10 -
한 테이블에 클러스터형 인덱스와 보조 인덱스가 동시에 있다면 어떤 구조일까?
이에 대하여 알기 위해서는 클러스터형 인덱스만 존재할 때 그리고 보조 인덱스만 존재할 때 어떤 구조로 페이지들이 만들어지는 지에 대해서 학습하여야한다. 클러스터형 인덱스 (Primary Index) 특정 데이터를 기준으로 정렬해주는 인덱스로, 데이터 페이지 전체가 이를 기준으로 정렬된다. 이는 아래와 같은 특성을 가지고 있다. 한개의 테이블에 한 개씩만 만들 수 있다. 보조 인덱스보다 검색 속도는 빠르지만, 입력/수정/삭제는 느리다. 위 그림에서 볼 수 있듯이 리프 페이지자체가 PK를 기준으로 정렬된 것을 알 수 있다. 또한, 리프 페이지가 (PK, 데이터) 형태이다. 보조 인덱스 (Secondary Index) 이 인덱스는 후보키에만 부여할 수 있으며, 데이터 페이지는 따로 정렬되지는 않고 인덱스를 위..
2023.09.07 -
MySQL이 인덱스를 이용하는 방법
인덱스를 잘 이용하려면 당연히 인덱스가 어떻게 실제 레코드를 읽어내는 지를 알아야한다. 이번 포스팅에서는 MySQL이 인덱스를 이용하는 대표적인 방법을 살펴보겠습니다. 인덱스 레인지 스캔 인덱스 레인지 스캔은 검색해야 할 인덱스의 범위가 결정됐을 때 사용하는 방식이다. SELECT * FROM employees WHERE first_name BETWEEN 'Ebbe' AND 'Gad'; 위 쿼리를 실행하면, first_name이 세컨더리 인덱스이기때문에 스캔해야할 위치 검색을 위한 비교작업을 수월하게 수행할 수 있다. (아래 그림의 두꺼운 선) 세컨더리 인덱스를 이용해 스캔 시작 위치를 결정하고, 그 지점부터 필요한 방향으로 인덱스를 읽어나가고 있다. 위 사진은 리프 노드에 저장된 (인덱스 키, PK)를..
2023.09.07