[Network] ASCII Code, Unicode, UTF-8 간단히
·
CS/Network
ASCII Code아스키 코드는 미국 국립표준협회(ANSI)에서 제정한 정보 교환용 7비트 문자 인코딩 체계입니다.영문 알파벳 대소문자, 숫자, 특수문자를 포함한 총 128개의 문자에 고유한 숫자 값을 할당하여,컴퓨터가 문자를 인식하고 처리할 수 있도록 만든 규칙입니다. 이 방식은 이후 대부분의 문자 인코딩 방식의 기초가 되었습니다.하지만 아스키 코드는 영문을 기준으로 설계되었기 때문에,한글이나 일본어, 중국어 등 다른 언어의 문자를 표현할 수 없다는 한계가 있습니다.또한, 아스키 코드는 1바이트(8비트) 중 7비트만 문자 데이터로 사용하고,남은 1비트는 통신 오류 검출을 위한 패리티 비트로 사용하도록 설계되었습니다.Unicode유니코드는 전 세계 모든 문자를 일관되게 표현하고 다룰 수 있도록 만든 국제..
[데이터베이스] Replication
·
CS/데이터베이스
시작하며서비스가 성장하면서 데이터베이스에 가해지는 부하가 점점 늘어난다. 사용자가 늘어나고, 데이터가 쌓이고, 복잡한 쿼리들이 실행되면서 어느순간 단일 데이터베이스로는 한계를 느끼게 된다. 이때 자주 등장하는 해결책중 하나가 Replication이다. 이번 글에서는 Replication이 무엇이고 어떠한 상황에서 사용하는지 알아보고자 한다. Replication이 무엇인가?기본 개념은 하나의 데이터베이스 내용을 여러개의 데이터베이스에 복사하여 동기화 하는 기술이다.원본 데이터베이스를 Master(혹은 Primary), 복사본을 Slave(혹은 Replica, Secondary)라고 부른다. 주요 목적고 가용성 - 장애 발생시 빠른 복구데이터 백업 - 실시간 백업본 유지읽기 성능 향상 - 읽기 쿼리를 여러..
[OS] 여유 공간 관리
·
CS/OS
빈 공간은 다양한 크기의 작은 조각으로 분할되어 결국 단편화 된다. 빈 공간들의 전체 크기가 요청된것보다 크더라도 하나의 연속된 영역이 존재하지 않으면 요청은 실패할 수 있다. 이 경우 빈 공간의 전체 크기는 20바이트이다. 하지만, 10바이트 짜리 두조각으로 나누어져 있다. 결국은 20바이트의 빈 공간이 있지만 실제로는 11바이트 이상의 요청들은 실패하게된다. 이를 해결해보고자 한다.저수준 기법들분할과 병합빈 공간 리스트는 빈 공간들의 집합이다. 이 힙의 빈 공간 리스트에는 2개의 원소가 존재한다.하나는 10바이트 세그먼트 (바이트 0~9) 다른 하나는 (20~29)위의 그림에서 10바이트 이상의 요청이 온다면 모두 실패할것이다. 하지만 더 작은 요청이라면 어떻게 될까? 분할이 일어난다. 유일하게 변경..
[OS] 세그멘테이션
·
CS/OS
세그멘테이션에 대해 알아보기 전에 base/bound 동적 재배치의 단점에 대해 다시 상기해봅시다.동적 재배치는 프로세스 저장 공간 통째로 메모리에 올리는걸 가정했습니다. 그리하여 내부 단편화가 일어났습니다. 즉 메모리를 효율적으로 사용하지 못했습니다. 해당 문제를 해결하기 위해 세그멘테이션이라는 기법이 생겼습니다.세그멘테이션프로세스의 가상 주소 공간을 논리적인 단위(세그먼트로)로 나누어 관리하는 메모리 관리 기법입니다.우리가 기준으로 삼은 주소 공간에는 코드, 스택, 힙의 세 종류의 세그먼트가 존재합니다.가상 주소 100번지를 참조한다고 가정해보겠습니다.가상 주소 100번지는 코드 세그먼트에 속하게 됩니다. 물리주소로 변환화는 과정은 다음과 같습니다.코드 세그먼트 시작주소오프셋 = 100 - 0 = 1..
[MYSQL] 실행계획 - 2
·
CS/데이터베이스
코스트 모델MySQL 서버가 쿼리를 처리하려면 다음과 같은 다양한 작업을 필요로 한다.디스크로부터 데이터 페이지 읽기메모리(InnoDB 버퍼풀)로부터 데이터 페이지 읽기인덱스 키 비교레코드 평가메모리 임시 테이블 작업디스크 임시 테이블 작업전체 쿼리의 비용을 계산하는데 필요한 단위 작업들의 비용을 코스트 모델이라고 한다.MySQL 8.0 서버의 코스트 모델은 다음 2개 테이블에 저장돼 있는 설정값을 사용하는데, 두 테이블 모두 mysqlDB에 존재한다.server_cost : 인덱스를 찾고 레코드를 비교하고 임시 테이블 처리에 대한 비용관리engine_cost : 레코드를 가진 데이터 페이를 가져오는 데 필요한 비용 관리두 테이블은 5개의 공통 칼럼을 가지고 있다.cost_name: 코스트 모델의 각 단..
[MySQL] 실행계획 -1
·
CS/데이터베이스
대부분의 DBMS는 많은 데이터를 안전하게 저장 및 관리하고 사용자가 원하는 데이터를 빠르게 조회할 수 있게 해주는 것이 목적입니다. 이러한 목적을 달성하기 위해서는 옵티마이저가 사용자의 쿼리를 최적으로 처리될 수 있게 하는 실행계획을 수립할 수 있어야합니다. 사용자는 EXPLAIN 명령으로 옵티마이저가 수립한 실행계획을 확인할 수 있도록 합니다. 통계 정보MySQL 5.6 버전부터는 InnoDb 스토리지 엔진을 사용하는 테이블에 대한 통계 정보를 영구적으로 관리할 수 있게 개선되었습니다. 5.5버전까지는 메모리에만 관리도고, SHOW INDEX 명령어로만 테이블의 인덱스 칼럼의 분포도를 볼 수 있었습니다.하지만, 5.6버전에서는 각 테이블의 통계 정보를 mysql 데이터베이스의 innodb_index..
[OS] 메모리 관리 - 동적 재배치 (Base / Bound)
·
CS/OS
논리 주소 VS 물리적 주소메모리에는 논리적 주소와 물리적 주소가 존재합니다.논리적 주소 (Virtual Address)프로세스마다 독립적으로 가지는 주소 공간각 프로세스마다 0번지부터 시작CPU가 보는 주소물리적 주소 (Physical Address)메모리에 실제 올라가는 위치해당 주소들은 주소 변환을 통해 하드웨어는 명령어 반입, 저장 등의 가상 주소를 정보가 실제 존재하는 물리 주소로 변환합니다.운영체제는 정확한 변환이 이루어질 수 있도록 메모리의 빈 공간과 사용 중인 공간을 항상 알고 있어야 하고, 메모리 사용을 제어하고 관리합니다.주소 바인딩주소 바인딩에는 대표적으로 3개가 있습니다.Complile Time Binding프로그램의 변수나 명령어가 어디 메모리에 위치할지를 컴파일 타임에 결정합니다..
[데이터베이스] MySQL 인덱스 - 2
·
CS/데이터베이스
B-Tree 인덱스 사용에 미치는 요소에 대해서 계속 알아보겠습니다.선택도(기수성)인덱스에서 선택도 또는 기수성은 거의 같은 의미로 사용됩니다. 모든 인덱스 키값 가운데 유니크한 값의 수를 의미합니다.인덱스 키 값 가운데 중복된 값이 많다면 기수성은 낮아지고 선택도 또한 낮아집니다. 인덱스는 선택도가 높을수록 검색대상이 줄어들기 떄문에 그만큼 빨리 처리가 됩니다. Select *FROM tb_testWHERE country = 'Korea' and city = 'Seoul'country 라는 컬럼과 city컬럼이 포함된 tb_test 테이블을 예로 들겠습니다. tb_test의 레코드 건수는 1만건이고 country컬럼으로만 인덱스가 생성된 상태에서 비교해보겠습니다. A 케이스 : Coutnry 컬럼의 유..
[데이터베이스] MySQL 인덱스
·
CS/데이터베이스
데이터베이스의 성능 튜닝은 어떻게 디스크의 I/O를 줄이는게 관건일떄가 상당히 많습니다.인덱스를 알기 전에 디스크에 대해 알아보도록 하겠습니다. 하드 디스크 드라이브(HDD)와 솔리드 스테이트 드라이브(SSD)컴퓨터에서 CPU나 메모라 같은 주요 장치는 대부분 전자식 장치입니다. 하지만 하드 디스크 드라이브는 기계적 장치입니다.그렇기에 데이터베이스서버에서는 디스크 장치가 병목이 됩니다. 이러한 기계식 하드 디스크를 대체하기 위해 SSD가 많이 출시 되고있습니다.전자식 장치 : 전기 신호를 이용해 동작하는 장치기계식 장치 : 기계 부품의 물리적인 움직임으노 동작하는 장치 디스크 헤더를 움직이지 않고 한번에 많은 데이터를 읽는 순차 I/O에서는 SSD가 HDD보다 조금 빠르거나 비슷한 성능을 보입니다.하지만..
[OS] Proportional Share(비례 배분) 스케줄러
·
CS/OS
비례 배분은 반환 시간이나 응답 시간을 최적화하는 것보다는, 각 작업에게 CPU 자원을 일정 비율로 공정하게 분배하는 데 목적이 있는 스케줄링 방식입니다.반환 시간 (Turnaround Time)이란?작업이 시작해서 끝날 때까지 걸리는 총 시간 (완료시간 - 시작시간)응답 시간사용자가 작업을 요청한 순간부터처음 응답이 돌아올 때까지 걸린 시간(첫 실행 시간 - 도착시간) 기본 개념비례 배분 스케줄링의 예시 중 하나인 추첨 스케줄링(Lottery Scheduling)에 대해 알아봅시다.이 방식에서는 ‘추첨권(티켓)’이라는 개념을 사용합니다. 티켓은 각 작업이 CPU 자원을 받을 수 있는 확률적인 비율을 나타냅니다.총 100장의 티켓 중에서 A 작업이 75장, B 작업이 25장을 가지고 있다면, A 작업이 ..