본문 바로가기
Data Engineering/MySQL

[ MySQL 아키텍처 ] 1. MySQL 엔진 아키텍처 (3)

by pilgyeong 2022. 10. 5.
MySQL 엔진 아키텍처 (3)
7. 쿼리 캐시
8. 트랜잭션 지원 메타데이터(데이터사전)

 

7. 쿼리 캐시(Query Cache)

MySQL 서버에서 쿼리 캐시는 빠른 응답을 필요로 하는 웹 기반 응용 프로그램에서 매우 중요한 역할을 한다.

쿼리캐시는 SQL 실행결과를 메모리에 캐시하고, 동일 SQL 쿼리가 실행되면 테이블을 읽지 않고 즉시 결과를 반환하기 때문에 빠른 성능을 가졌다.

하지만, 쿼리 캐시는 테이블의 데이터가 변경되면 캐시에 저장된 결과 중에서 변경된 테이블과 관련된 것들은 모두 삭제해야 되기 때문에 심각한 동시 처리 성능 저하를 유발했다.

또한, MySQL 서버가 발전하는 과정에서도 쿼리 캐시는 계속된 동시 처리 성능 저하와 많은 버그의 원인이 되기도 했다.

MySQL 8.0에서 쿼리 캐시는 MySQL 서버의 기능에서 완전히 제거되고, 관련 시스템 변수도 모두 제거됐다.

 

8. 트랜잭션 지원 메타데이터

DB서버에서 테이블 구조 등 정보를 데이터 사전 또는 메타데이터라고 한다. MySQL 8.0버전부터는 테이블 구조나 스토어드 프로그램의 코드 관련 정보 모두 InnoDB의 테이블에 저장하도록 개선되었다.

MySQL 서버가 작동하는 데 필요한 기본 테이블들을 통틀어서 시스템 테이블이라고 하며, 사용자 인증과 권한 관련 테이블이 그 예시이다.

MySQL 8.0버전부터는 이런 시스템 테이블 모두 InnoDB 스토리지 엔진을 사용하도록 개선했으며, 시스템 테이블과 데이터사전(메타데이터) 정보를 모두 모아 mysql DB에 저장하고 있다.

mysql DB를 통째로 mysql.ibd라는 이름의 테이블 공간에 저장된다. 그래서 MySQL 서버의 데이터 사전에 존재하는 mysql.ibd라는 파일은 다른 *.ibd파일과 함께 특별히 주의해야된다.

 

출처: my mac

 

데이터 사전과 시스템 테이블이 모두 트랜잭션 기반의 InnoDB 스토리지 엔진에 저장되도록 개선되면서 이제 스키마 변경 작업 중간에 MySQL 서버가 비정상적으로 종료되더라도 스키마 변경이 완전한 성공 또는 완전한 실패로 정리된다.

즉, 기존 파일 기반 메타데이터를 사용할 때와 같이 작업 진행 중인 상태로 남으면서 문제를 유발하지 않게 개선된 것이다.

반면, MyISAM이나 CSV 등과 같이 스토리지 엔진의 메타정보는 여전히 저장할 공간이 필요하다. InnoDB 스토리지 엔진 이외의 스토리지 엔진을 사용하는 테이블들을 위해 SDI 파일을 사용한다.

 


출처: ⌜Real MySQL 8.0 (개발자와 DBA를 위한 MySQL 실전 가이드)⌟, 백은빈, 이성욱 지음, 위키북스, 2021.09.08 출간

http://www.kyobobook.co.kr/product/detailViewKor.laf?mallGb=KOR&ejkGb=KOR&barcode=9791158392703

 

Real MySQL 8.0 (1권) - 교보문고

개발자와 DBA를 위한 MySQL 실전 가이드 | 《Real MySQL 8.0》은 《Real MySQL》을 정제해서 꼭 필요한 내용으로 압축하고, MySQL 8.0의 GTID와 InnoDB 클러스터 기능들과 소프트웨어 업계 트렌드를 반영한 GIS

www.kyobobook.co.kr