반응형

최근 면접에서 MySQL 에서도 인메모리(In-Memory) 기능을 사용할 수 있는 걸 아시나요? 라고 물어봤는데..

이거 관련해서 처음 들어본 개념이라 아이러니했다..

 

인메모리 기능을 사용하는건 NoSQL로만 알고 있었는데 RBDMS에서도 이런 기능일 제공한다고? 하면서 

 

열심히 찾아봤는데, 생각보다 글이 많이 없었다 ^_^.. 

 

열심히 찾아봤더니 실제로 있었습니다..

 

그런 김에 간략하게 정리하고자 합니다. 고고..


MEMORY 스토리지 엔진
  • 테이블 데이터를 메모리에 저장하여 매우 빠른 읽기 및 쓰기 성능을 제공합니다.
  • 이 엔진은 주로 임시 테이블이나 세션 기반 데이터를 저장하는 데 사용됩니다.
  • 하지만 서버가 재시작되거나 MySQL이 종료되면 데이터가 사라지므로 영구 데이터 저장에는 적합하지 않습니다.

특징:

  • 테이블의 데이터는 메모리에 저장됩니다.
  • 서버가 재시작되거나 MySQL이 종료되면 데이터가 사라집니다.
  • 주로 임시 테이블이나 세션 기반 데이터를 저장하는 데 사용됩니다.

장점:

  • 매우 빠른 읽기 및 쓰기 성능
  • 디스크 I/O 오버헤드 없음

단점:

  • 데이터 영속성 없음. 서버 재시작 시 데이터 손실
  • 테이블 크기가 서버의 가용 메모리에 의존
  • 데이터가 커지면 메모리 사용량이 급증할 수 있음

 

사용 방법:

MEMORY 스토리지 엔진을 사용하는 테이블을 생성하려면, 테이블 생성 시 `ENGINE=MEMORY`를 지정합니다.

CREATE TABLE my_inmemory_table (
    id INT PRIMARY KEY,
    name VARCHAR(50)
) ENGINE=MEMORY;

 

InnoDB Buffer Pool
  • MySQL의 기본 스토리지 엔진으로, 메모리 내의 버퍼 풀(Buffer Pool)을 사용하여 디스크 I/O를 줄이고 성능을 최적화합니다.
  • 버퍼 풀은 자주 액세스되는 데이터와 자주 액세스되는 데이터와 인덱스를 메모리에 캐시하여 성능을 향상시킵니다.

특징:

  • 자주 액세스되는 데이터와 인덱스를 메모리에 캐시하여 성능을 최적화
  • 데이터가 영구적으로 저장됨

장점:

  • 디스크 I/O를 줄여서 성능 향상
  • 데이터 영속성 보장
  • 큰 데이터베이스에서도 효율적

단점:

  • 초기 설정 및 튜닝이 필요
  • 메모리 크기에 따라 성능이 제한될 수 있음

사용 방법:

InnoDB는 MySQL의 기본 스토리지 엔진으로, 메모리 내의 버퍼 풀(Buffer Pool)을 사용하여 자주 액세스되는 데이터와 인덱스를 캐시합니다. 설정 파일에서 `innodb_buffer_pool_size`를 조정하여 버퍼 풀 크기를 설정할 수 있습니다.

[mysqld]
innodb_buffer_pool_size=2G  # 버퍼 풀 크기를 2GB로 설정

`my.cnf` 또는 `my.ini` 설정 파일에서 위와 같이 설정합니다.

InnoDB Buffer Pool 설정 확인 및 조정:

SHOW VARIABLES LIKE 'innodb_buffer_pool_size';

-- 버퍼 풀 크기 조정 (설정 파일을 수정해야 함)

이런게 있었다는게 처음 알아서 그런지 신선했습니다.

 

근데, MEMORY 엔진을 사용한다면 휘발성 데이터가 되어서 아마 Redis 처럼 랭킹 같은 작업을 하는 용도로 사용하기는 어려울 것 같습니다.

 

직접 프로젝트에서 사용해봐야 하지 않을까 싶긴한데 ㅎㅎ

 

대충 개념정도 이해하고 추후에 다시 한번 써보는걸로!!

 

MySQL을 쓰면서 이런 개념이 있다는 걸 처음 알았다니 ㅠㅠ.. 알고 있었다면 활용해서 사용할 방법이 많았을텐데

 

조금 아쉬운 것 같습니다. 좀 더 깊은 내용을 파봐야할 것 같지만 일단 가볍게! ㅎㅎ

반응형

+ Recent posts