HTTP란? HTTP(Hyper Text Transfer Protocol)란 하이퍼텍스트 문서를 교환하기 위해 만들어진 protocol입니다. 웹상에서 네트워크 서버끼리 통신을 할 때 어떠한 형식으로 통신을 하자고 정해놓은 "통신 형식/구조"로 보면 됩니다. TCP/IP 방식과 UDP 방식을 이용하여 통신하고 있습니다. HTTP 통신 방식 기본적으로 HTTP 통신은 response와 request로 나뉘어져 있습니다. 클라이언트가 HTTP 요청을 서버로 보내는 것을 request라고 합니다. 그 후에 서버는 요청을 받아 결과를 응답합니다. 이 것을 response라고 합니다. 흐름을 자바와 스프링 프레임워크로 작성된 코드를 통해 확인해 봅시다. // 회원 가입 api @PostMapping public ..
InnoDB는 스토리지 엔진에서 가장 핵심적인 부분이다. 디스크의 데이터 파일이나 인덱스 정보를 메모리에 캐시해 두는 공간이고 쓰기 작업을 지연시켜 일괄 작업으로 처리할 수 있게 해주는 버퍼 역할도 같이한다. 일반적인 애플리케이션에서는 INSERT, UPDATE 그리고 DELETE 처럼 데이터를 변경하는 쿼리는 데이터 파일의 이곳 저곳에 위치한 레코드를 변경하기 때문에 랜덤한 디스크 작업을 발생 시킨다. 하지만 버퍼 풀이 이를 모아서 처리하면 횟수를 줄일 수 있다. 버퍼 풀의 구조 InnoDB 스토리지 엔진은 버퍼 풀이라는 거대한 메모리 공간을 페이지 크기의 조각으로 쪼개어 InnoDB 스토리지 엔진이 데이터를 필요로 할 때 해당 데이터 페이지를 읽어서 각 조각에 저장한다. 버퍼 풀의 페이지 크기 조각을..
InnoDB의 엔진 아키텍처는 다음과 같다. 하나하나 살펴보도록하자!! 프라이머리 키에 의한 클러스터링 InnoDB의 모든 테이블은 기본적으로 프라이머리 키를 기준으로 클러스터링 되어 저장된다. 즉, 프라이머리 키 값의 순서대로 디스크에 저장된다는 뜻이며, 모든 세컨더리 인덱스는 레코드의 주소 대신 프라이머리 키의 값을 논리적인 주소로 사용한다. 프라이머리 키가 클러스터링 인덱스이기 때문에 프라이머리키를 이용한 레인지 스캔은 상당히 빨리 처리될 수 있다. 하지만 이 기능은 MyISAM에서는 지원하지 않는다. 그래서 프라이머리 키와 세컨더리 인덱스는 구조적으로 아무 차이가 없다. 외래 키 지원 외래 키에 대한 지원은 InnoDB 스토리지 엔진 레벨에서 지원하는 기능으로 MyISAM이나 MEMORY 테이블에..
1. MySQL 엔지 아키텍처 MySQL 전체구조 MySQL은 일반 상용 RDBMS와 같이 대부분의 프로그래밍 언어로부터 접근 방법을 모두 지원한다. MySQL 고유의 C API부터 시작해 JDBC나 ODBC 등응 모든 언어로 MySQL 서버에서 쿼리를 사용할 수 있게 지원한다. MySQL서버는 크게 엔진과 스토리지 엔진으로 구분할 수 있다. 그러면 한 번 살펴보자. MySQL 엔진 MySQL 엔진은 클라이언트로부터의 접속 및 쿼리 요청을 처리하는 커넥션 핸들러와 sQL 파서 및 전처리기, 퀴리의 최적화된 실행을 위한 옵티마이저가 중심을 이룬다. 또한 MySQL은 표준 SQL(ANSI SQL) 문법을 지원하기 때문에 표준 문법에 따라 작성된 쿼리는 타 DBMS와 호환되어 실행될 수 있다. 스토리지 엔진 ..
- Total
- Today
- Yesterday
- Kotlin
- DevOps
- 개발
- java
- 면접
- 개발자
- 면접 준비
- 자바
- swarm
- 취준
- 게시판
- CS
- 취업
- 인터뷰
- DB
- 프로젝트
- 백엔드
- 면접준비
- 코딩
- thread
- IT
- 코드
- Redis
- 취업준비
- docker
- 동시성
- MySQL
- Spring
- 프로그래밍
- JPA
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |