본문 바로가기

전체 글

Real My SQL - 아키텍처(2) 쿼리를 실행하는 관점에서 MySQL 구조를 설명할 수 있다. 파서 사용자로부터 요청된 SQL 문장을 서버가 인식할 수 있는 토큰으로 파싱해 트리형태의 구조를 만들어 내는 작업을 의미하다. SQL 문법 오류는 이 단계에서 필터링된다. 전처리기 파서 과정에서 만들어진 파서 트리를 기반으로 SQL 문장에 구조적인 문제가 있는지 확인한다. 각 토큰이 테이블이나 칼럼이름, 내장함수와 같은 개체에 매핑해 객체의 존재여부와 접근권한 등을 확인하는 단계이다. 실제 존재하지 않거나 권한상 접근할 수 없을경우 이 단계에서 필터링된다. 옵티마이저 요청된 문장을 저렴한 비용으로 가장 빠르게 처리하는 DBMS의 두뇌역할이다. 실행엔진 옵티마이저에 의해 수립된 실행계획을 기반으로 실행엔진은 핸들러에게 요청한다. 핸들러(스토리지 .. 더보기
Real My SQL - 아키텍처(1) My SQL 서버는 크게 MySQL 엔진과 스토리지 엔진(핸들러)로 구분해서 볼 수 있다. MySQL 엔진 - 클라이언트로부터의 접속 및 쿼리 요청을 처리하는 커넥션 핸들러와 SQL 파서 및 전처리기, 쿼리의 최적화된 실행을 위한 옵티마이저가 중심을 이룬다. 성능향상을 위한 MyISAM 엔진의 키 캐시나 InnoDB의 버퍼 풀과 같은 보조 저장소 기능도 포함되어 있다. 스토리지 엔진 - MySQL엔진은 요청된 SQL 문장을 파서하여 분석하거나 최적화하는 등 DBMS의 두뇌 역할을 하며, 데이터를 디스크에 저장하거나 읽어오는 역할은 스토리지 엔진이 담당한다. - 스토리지엔진은 테이블 별로 지정할 수 있다. 핸들러 API - 실행엔진이 스토리지 엔진(핸들러)에게 데이터를 읽거나 쓰기 요청을 하는데 이러한 요.. 더보기
Jenkins 설치하기 이번 게시글에는 AWS EC2(우분투 리눅스)를 통해 Jenkins를 설치해보려고 합니다. 원격접속 프로그램 Putty를 이용하여 우분투 서버에 접속합니다. Java 및 필수 패키지가 설치되어 있지 않기 때문에 필요한 패키지를 설치합니다. sudo apt-get update sudo apt-get install default-jdk Jenkins 리포지터리 키를 설치합니다. wget -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add - APT 데이터베이스에 공식 Jenkins 리포지토리를 추가합니다. echo "deb https://pkg.jenkins.io/debian-stable binary/" > /etc/apt/sources.. 더보기
FileSystem이란?(2) * 본 내용은 운영체제를 공부하며 추후 복습하기 위해 포스팅하는 게시물입니다. 디스크로부터 데이터를 read/write 하기위한 시간은 3가지 단계로 분류할 수 있다. 1) Seek Time - Access Time의 대부분을 차지한다. - 디스크의 read/write 헤드가 찾고자하는 데이터가 존재하는 실린더를 찾아가는 과정을 의미한다. 2) Rotate Time - 디스크의 read/write 헤드가 실린더를 찾은 다음의 과정으로 트랙의 섹터를 찾아가는 과정을 의미한다. 3) Transfer Time - 디스크의 헤드가 섹터를 읽은 다음 디스크로부터 메모리로 보내는 시간을 의미한다. 디스크를 접근하는 시간의 대부분은 디스크의 read/write 헤드가 실린더(트랜)을 찾아가는 단계에서 소요된다. 대안.. 더보기
Linux 기본적인 명령어를 알아보자(1) ls : list - 현재 디렉토리의 파일 목록을 표시하는 명령어 - 보통 옵션 a,l을 사용하여 전체 목록이나 숨겨진 파일을 보여준다. cat - 파일의 내용을 보여주며 input으로 파일을 받아 output으로 다른명령어의 실행을 실행해준다 - 옵션 e : 문장 마지막에 공백여부를 확인할 수 있도록 $를 붙여준다 - 옵션 n : 문자의 라인 수를 출력해준다. touch - 파일의 수정날짜를 현재날짜로 변경해주는 명령어로 만약 파일이 없다면 0byte의 파일을 생성해준다. more - 파일의 내용을 출력해주는 명령어 - space를 통해 다음 페이지로 이동하며, enter를 통해 다음 줄로 이동한다. less - 명령어 more보다 더 향샹된 명령어 - more가 다음 페이지 혹은 다음 줄로 이동이 가.. 더보기
File System이란? * 본 내용은 운영체제를 공부하며 추후 복습하기 위해 포스팅하는 게시물입니다. File System이란? File을 저장하고 관리하고 보호하는 시스템을 의미 File 이름이 있는 연관된 데이터들의 집합을 의미 운영체제는 다양한 장치를 File이라는 논리적 단위로 보여줌 create, delete, read, write, open, close 연산이 존재하며 open을 해야만 read, write가 가능 Directory Directory 하부의 있는 파일들의 일부 metadata를 내용으로 가지고 있는 특별한 파일을 의미 Partition(=Logical Disk) 하나의 물리적 디스크를 여러 개의 논리적 디스크로 분할하는게 일반적ex) C 드라이브, D 드라이브 여러 개의 물리적 디스크를 하나의 논리적.. 더보기
카카오 커머스, 데브매칭 코딩테스트 후기 4월 3일 토요일 카카오 커머스와 데브매칭 코딩테스트를 봤다. 카카오 커머스는 13:00 ~ 15:00, 데브매칭은 16:00 ~ 18:00으로 중간에 1시간 휴식을 가졌지만 아침부터 Real My SQL 스터디를 진행했기 때문에 체력적으로 피곤했다. 우선 카카오 커머스 문제부터 리마인딩 해보겠다. 총 3문제가 나왔으며 첫번째 문제부터 순서대로 이중 for문, 비트마스킹 + 조합, BFS 알고리즘으로 풀었다. 1시간 30분안에 3문제 모두 풀고 제출했으나, 첫번째 문제의 풀이가 틀렸다는 것을 제출한 후 알았다. 첫번째 문제를 복기해보면 이중 for문을 사용할 것이 아닌 HashMap을 사용하면 for문 한번으로도 구현이 가능하다ㅠ 데브매칭은 알고리즘 3문제와 SQL 1문제가 나왔다. 첫번째 문제는 무척 .. 더보기
Virtual Memory에 대해서 알아보자 * 본 내용은 운영체제를 공부하며 추후 복습하기 위해 포스팅하는 게시물입니다. 현대의 운영체제는 메모리와 프로세스를 Page 단위로 분할하는 Paging 기법을 사용한다. 이해가지 않는다면 이전 포스팅 참고 → javairus.tistory.com/53?category=973522 Memory Management에 관해서 알아보자 * 본 내용은 운영체제를 공부하며 추후 복습하기 위해 포스팅하는 게시물입니다. 프로그램을 실행할 때 프로그래머가 개발 시 사용했던 심볼릭 주소(참조변수)를 논리적 주소 or 물리적 주소 javairus.tistory.com CPU가 명령어를 실행할 때 필요한 Page만 메모리에 할당하는 방식을 Demand Page라 한다. 즉, 프로그램이 실행될 때 프로그램의 모든 Page를 .. 더보기