[MySQL] DBMS 압축
·
데이터베이스
압축은 왜 존재하는가?디스크의 데이터 파일이 클수록 더 많은 페이지를 InnoDB 버퍼풀로 읽어야 할 수 있다. 백업시간도 오래걸리며, 복구시간도 그만큼 오래 걸린다. 이런 문제점을 해결하기 위해 데이터 압축 기능을 제공한다.  페이지 압축과 테이블 압축 기능을 제공한다. 페이지 압축작동방식MySQL 서버가 디스크에 저장하는 시점에 데이터 페이지가 압축되어 저장되고, 반대로 읽어올 때 압축이 해제 된다.  실제 디스크 공간은 7KB만 차지하지만 운영체제에서 읽을 때는 합쳐서 16KB를 읽는다. 페이지 압축의 문제이런 펀치 홀 기능은 운영체제뿐만 아니라 하드웨어 자체에서도 해당 기능을 지원해야 사용 가능하다. 이런 이유로 실제 페이지 압축은 많이 사용되지 않는다. 테이블 압축운영체제나 하드웨어에 대한 제약..
MySQL InnoDB 트랜잭션과 락, 격리 수준
·
데이터베이스
잠금스토리지 엔진 레벨과 MYSQL 엔진 레벨 둘로 나눌 수 있다.MYSQL 엔진 레벨은 모든 스토리지 엔진에 영향을 미치지만 스토리지 엔진 레벨은 상호 스토리지 간 영향을 미치지 않는다. WHY?락은 왜 존재하는가? 동시성 제어를 위해 존재한다.테이블 데이터 동기화를 위한 테이블 락 이외에도 테이블 구조를 잠그는 메타데이터 락, 필요에 맞게 사용하는 네임드 락 기능을 제공한다.  글로벌 락가장 범위가 큰 잠금이며, 한 세션에서 글로벌 락을 획득하면 다른 세션에서 SELECT를 제외한 대부분의 DDL문장이나 DML 문장을 실행하는 경우 글로벌 락이 해제될 때까지 해당 문장이 대기 상태로 남는다.그러나, 모든 변경 작업을 멈추기 때문에 더 가벼운 락의 필요성이 생겼다. DML vs DDL 비교항목     ..
InnoDB 스토리지 엔진 아키텍처, MYSQL 로그파일
·
데이터베이스
2024.12.06 - [데이터베이스] - RealMySQL 4장 아키텍쳐 : MySQL 엔진에 대해 알아보자 RealMySQL 4장 아키텍쳐 : MySQL 엔진에 대해 알아보자커넥션 핸들러MySQL 커넥션 핸들러는 애플리케이션이 MySQL 데이터베이스와 통신할 수 있도록 돕는 역할을 합니다. JDBC는 그 중간에서 데이터베이스와 애플리케이션 간의 연결을 관리하는 대표적maxwithjude.tistory.com 전 글의 언두 로그에 이어 리두 로그라는 것이 있다.언두 로그는 트랜잭션이 실패하거나 롤백될 경우 변경된 데이터를 이전 상태로 복구하기 위해 사용한다. 그럼 리두 로그는 어디에 쓰는 걸까? 리두 로그리두 로그는 전원 끊김 등 시스템 장애가 생겼을 때 장애 복구 및 영속성 보장을 위해 사용된다.  ..
RealMySQL 4장 아키텍쳐 : MySQL 엔진에 대해 알아보자
·
데이터베이스
커넥션 핸들러MySQL 커넥션 핸들러는 애플리케이션이 MySQL 데이터베이스와 통신할 수 있도록 돕는 역할을 합니다. JDBC는 그 중간에서 데이터베이스와 애플리케이션 간의 연결을 관리하는 대표적인 API 중 하나입니다.동작 과정 JDBC는 애플리케이션(spring)에서 데이터베이스로 SQL 쿼리를 전달합니다.MySQL JDBC 드라이버가 쿼리를 MySQL 커넥션 핸들러로 전달합니다.MySQL 커넥션 핸들러가 요청을 처리하고, 결과를 JDBC를 통해 애플리케이션으로 반환합니다. 💡그 외 SQL파서, 전처리기, 쿼리의 최적화된 실행을 위한 옵티마이저로 MySQL엔진은 이루어져있다. 쿼리 파서 사용자 요청으로 들어온 쿼리문을 MYSQL이 인식할 수 있는 최소 단위(토큰)로 분리해 트리 형태의 구조로 만들어..