반응형

CS 69

[DB] mysql 은 relay log 를 왜 single thread(sql thread)로 처리했을까

Real MySQL 책에 복제(Replication)에 관한 내용을 읽고 있었던 중 이런 내용이 있었다. 마스터 서버에서 수많은 동시 사용자가 실행한 데이터 변경 쿼리 문장이 슬레이브 서버에서는 하나의 스레드로 모두 처리돼야 한다(이 부분은 지금의 구조상 피해 갈 방법이 없다). 즉, 마스터 서버에서는 바이너리 로그를 기록하는데 이때 "Binlog dump" 라는 스레드가 이 일을 전담하며 하나의 마스터 서버에 N개의 슬레이브가 연결돼 있다면 "Binlog dump" thread 가 10개가 생긴다. 그리고 슬레이브 서버에서는 relay log 가 존재하는데, 이 relay log 는 마스터의 변경내역이 기록된 로그 파일이며 슬레이브 서버의 I/O thread 가 마스터 서버에 접속해 변경 내역을 해당 ..

CS/Data Base 2021.06.24

[DB] MySQL 서버는 왜 스레드 기반일까?

Real MySQL 이라는 책을 읽다가 104 페이지에서 다음과 같이 이야기하는 부분이 있었다. MySQL 서버는 프로세스 기반이 아니라 스레드 기반으로 작동하며, 크게 포그라운드 스레드와 백그라운드 스레드로 구분할 수 있다. 그렇다면 왜 MySQL 서버는 프로세스 기반이 아니라 스레드 기반으로 동작하게 했을까? 라는 생각이 들었다. 우선 내 생각은 다음과 같다. 먼저 운영체제를 공부하다가 나오는 프로세스의 개념을 먼저 이해해야 한다. 간단하게 얘기하면 여러 N개의 스레드와 기타 등등으로 굴러가는 하나의 프로그램이라고 보면 된다. 크롬에서의 각각의 탭들을 예로 들 수 있다. 크롬 브라우저의 각 탭들은 하나의 프로세스들로 이루어져 있다. 그래서 탭이 10개라면 10개의 프로세스가 존재한다는 것이다. 이러한..

CS/Data Base 2021.06.22

인덱스의 중요성을 다시 한 번 느끼며..

몇 달 전 메인 기능이 배포되고, 실서비스에서 동작이 잘 되고 있어서 신경 쓰지 않고 다른 피처를 개발하고 있었다. 그 기능을 얘기하면 사용자의 로그를 쌓아서 그 로그를 기반으로 어떤 추천을 해주는 그런 기능이었다. 그 로그가 이제 유저당 몇 만개씩 쌓이게 되었고, 클라이언트에서 해당 기능에 대한 api 를 요청하게 될 때 timeout 이 발생하는 경우가 생겼다. 확인해보니 코드 상에서는 문제가 전혀 없었고 단순 select 하는 쿼리에서 이 쿼리가 이렇게 느리다고? 할 정도였다. 그리고 확인해보니 특정 컬럼에 인덱스가 걸려있지 않았었다. 흑흑. 테이블 만들 때 잊고 만들었었던 것 같다. 긍정적으로 생각하면, 평소에 인덱스 공부할 때 중요하다 중요하다 할 때는 그냥 중요하다~ 라고 생각이 들었는데 실제..

CS/Data Base 2020.12.16

[MySQL] 간단하게 보는 mysql 의 아키텍처 - 1

mysql 이 어떻게 돌아가고 어떤 구조로 돼 있는지 공부해야지 해야지 하다가 이제서야 공부하고 글을 작성해 보려고 한다. 다른 블로그에도 지금 작성하는 내용과 같거나, 비슷한 내용이 작성 돼 있는 곳이 많기 때문에 살짝 의식의 흐름대로 작성한다. 이 글은 [REAL MySQL] 이라는 책을 기반으로 작성한다. MySQL 의 전체 구조 우선 책에도 나와있지만, 간단히 MySQL 전체적인 구조를 한 번 보는게 좋을 것 같다. 우선 앞으로 설명할 것들은 MySQL 을 크게 구분할 수 있는 [MySQL 엔진], [스토리지 엔진] 부분이다. ### MySQL 엔진 접속 및 쿼리 요청 처리하는 커넥션 핸들러, SQL 파서, 전처러리기, 쿼리 최적화를 위한 옵티마이저로 이루어져 있다. 또, InnoDB 의 버퍼 풀..

CS/Data Base 2020.04.29

[MySQL] MySQL 서버 설정

해당 내용은 Real MySQL 책을 인용하였습니다. MySQL 서버를 세팅할 때 구글링을 해서 셋팅해서 사용하고 그랬었는데 서버 셋팅 시 어느 정도 지식이 있어야 함을 느꼈다. 서버 설정 MySQL 서버는 단 하나의 설정 파일만 사용한다. 리눅스/유닉스 계열에서는 my.cnf, 윈도우 계열에서는 my.ini 파일을 사용한다. 이 파일의 이름을 변경할 수 없으니 참고해야 한다. 또 중요한 점은 이 설정 파일들이 여러 디렉토리에 존재할 수 있다. MySQL 서버에서는 지정된 디렉토리를 순차적으로 탐색하면서 처음 발견된 설정 파일을 사용한다. (물론 지정된 디렉토리를 다르게 설정할 수도 있다) 리눅스 서버에서 MySQL 서버를 셋팅했다고 가정하고 얘기를 하도록 하겠다. 만약 여러 개의 설정 파일들이 있고, ..

CS/Data Base 2020.02.13

[책] 컴퓨터 아키텍처 - 07. 데이터 경로

데이터 경로데이터 경로의 의미와 두 가지 구현 방식에서 데이터의 흐름을 살펴본다.데이터 경로의 이해데이터 경로데이터 경로 : 명령어를 실행할 때 프로세서가 명렁어의 정의에 따라 데이터를 경유시키는 경로.데이터는 입력장치, 프로세서, 메모리, 출력장치 등 컴퓨터의 모든 구성 요소를 경유한다. 하지만 실행 프로그램은 이미 메모리에 적재되어 있으므로, 입출력 명령이 아니라면 명령어에 대한 데이터 경로는 프로그램 계수기(PC), 레지스터 파일, 연산장치(ALU), 메모리 등으로 구성된다.자세한 내용은 236쪽 참고데이터 경로의 두 가지 방식데이터 경로는 크게 단일 사이클 방식 과 다중 사이클 방식 으로 구현할 수 있다.단일, 다중 사이클 방식은 각각 한 번, 여러 번 돈다고 생각하면 된다.16비트 덧셈장치를 예..

CS/컴퓨터 구조 2019.04.12

[책] 컴퓨터 아키텍처 - 04. 명령어 집합의 분류와 주소 지정 방식

명령어 집합의 분류와 주소 지정 방식피연산자의 수와 명령어 집합명렁어 : 어떤 연산을 수행할 것인가를 나타내는 연산 부호 와 연산될 데이터에 대한 정보를 포함하는 피연산자로 구성됨.연산 부호 : 특별한 경우 아니면 하나의 필드에 존재피연산자 : 여러 개의 필드로 구성 가능.0-주소 명령어(스택 컴퓨터), 1-주소 명령어(누산기 컴퓨터), 2-주소 명령어 및 3-주소 명령어(범용 레지스터 컴퓨터)누산기 컴퓨터메모리-메모리 컴퓨터 : CPU 내부에 데이터 저장하는 기억장치 없음누산기 컴퓨터 : 해당 컴퓨터에 하나의 데이터를 저장하기 우히나 레지스터를 추가한 컴퓨터.누산기를 묵시적 피연산자로 사용. (유일하게 데이터를 저장할 수 있기에 굳이 명시할 이유 없기 때문)적재 혹은 저장 명령어가 아니면 누산기는 근원..

CS/컴퓨터 구조 2019.03.06

[책] 컴퓨터 아키텍처 - 03. 명령어 집합

명령어 집합 컴퓨터가 작업을 수행하려면 인식할 수 있는 명령어가 있어야 함. 명령어 집합 명령어 집합의 의미 프로그램은 높은 프로그래밍 생산성, 컴파일 오류 탐지 및 유지보수의 용이함 등과 같은 장점을 가진 고급언어로 작성된다. 하지만 프로그램은 컴파일러나 인터프리터 등을 통해 기계 명렁어로 변환되어야만 인식되거나 하드웨어에서 실행될 수 있다. 명령어 : CPU 가 수행할 동작을 2진수 코드로 정의한 것. 일반적으로 연상부호를 사용한 어셈블리 형태로 표현함. 명령어 집합 : 특정 CPU 를 위해 정의된 명령어의 모음 명령어 집합 구조 명령어 집합 구조(Instruction set architerture) : 프로그램을 수행할 하드웨어 시이의 인터페이스에 대한 완전한 정의 및 명세이다. 하드웨어가 어떤 연..

CS/컴퓨터 구조 2019.02.18

[책] 컴퓨터 아키텍처 - 02. 컴퓨터의 발전과 성능

컴퓨터의 발전과 성능컴퓨터의 세대별 발전반도체의 획기적인 발전에 따라 컴퓨터 환경은 크게 진화함.컴퓨터 : 전자회로를 이용해 다양한 종류의 데이터를 처리하는 장비.그렇다면 각 컴퓨터의 세대별 특징을 살펴보도록 하자.컴퓨터의 세대주요 소자기억장치특징0세대 컴퓨터기계적 릴레이금속 기어, 카드-1세대 컴퓨터 (~1950년대 후반)진공관자기드럼하드웨어 개발 중점. 부피 크고 전력 소모 많음.2세대 컴퓨터 (~1960년대 초반)트랜지스터자기코어고급언어 등장3세대 컴퓨터 (~1070년대 중반)SSI,MSIRAN, ROM운영체제 개발, 다중 프로그래밍, 고급언어 활용4세대 컴퓨터 (~2000년대)LSI, VLSISRAM, DRAM객체지향언어 사용, 개인용 컴퓨터 등장, 병렬 처리 기능 강화5세대 컴퓨터 (2000년대..

CS/컴퓨터 구조 2019.02.08
반응형