[Database] MySQL

­Valentine·2022년 1월 6일
0

CS

목록 보기
12/23

또 한번에 몰아서 쓰게 되지만 DB 공부 마지막 날에는 MySQL에 대해서 알아보았습니다.

  • 장단점 : MySQL은 Oracle에서 제공하는 오픈소스 DBMS로 고속 트렌잭션과 데드락 자동 감지 등을 지원하고 적은 용량을 차지합니다. 다만 대용량 데이터나 게임 데이터에는 적합하지 않은 단점을 가지고 있습니다.

  • MySQL 서버 : MySQL 서버는 MySQL 엔진과 스토리지 엔진으로 나뉘어집니다. MySQL엔진은 사용자의 요청을 처리하는 일을 하고 스토리지 엔진은 실질적으로 물리적 데이터에 접근하는 일을 합니다.

  • MySQL 스레드 : 백그라운드 스레드 / 포그라운드 스레드가 있는데 각각 로그나 데이터 저장 / 클라이언트 요청 처리를 담당합니다.

  • 쿼리 실행 구조 : Parser에서 쿼리문을 파싱 → 전처리기에서 문법에 맞는지, 존재하는 테이블인지 등을 검사 → Optimizer에서 가장 적합한 실행 방법 찾기 → Handler API에서 실행

  • 복제 : MySQL을 두개의 서버에서 운영할때, 둘을 동기화 시키는 방법입니다. 읽기, 쓰기가 모두 가능한 마스터 서버와 읽기만 가능한 슬레이브 서버로 나누어지며, 마스터 서버의 내용을 슬레이브 서버에 복제해옵니다.

  • 쿼리 캐시 : 쿼리문과 그 결과를 key, value의 형태로 저장하는 기능이 있습니다. 쿼리문이 일치하고 결과도 일치한다는 확신이 있어야 사용가능해서 신중하게 사용해야 합니다.

  • InnoDB : MySQL의 스토리지 엔진 중 하나로 칼럼당 lock이 가능해서 동기화에 유리합니다.

  • MVCC : lock없이 일관된 읽기를 하기 위한 기능으로 Undo Record에 변경 이전 값을 저장하여 버전별로 접근이 가능하게 합니다.

  • RDBMS vs NoSQL : RDBMS는 데이터의 일관성을 보장하기가 쉽고 중복을 예방하기가 간단합니다. NoSQL은 데이터 Scale-up, Scale-out이 간단하고 대용량 데이터에서 속도가 빠르다는 장점이 있습니다.

  • Redis

    • NoSQL의 일종으로 key-value Model을 가지며 ram에 데이터를 저장해 속도가 빠릅니다. set, sorted set, hash, string, linked-list의 5가지 형태의 value를 가집니다.
  • Dynamo DB

    • AWS에서 제공하는 key-value기반의 full-managed 되는 NoSQL이며 SSD에 저장되어 빠르지만 ORM을 연동하기 힘든 단점이 있습니다.
profile
천체관측이 취미

0개의 댓글