분류 전체보기67 [ MySQL 아키텍처 ] 2. InnoDB 스토리지 엔진 아키텍처 (2) InnoDB 스토리지 엔진 아키텍처 (2) 4. 잠금 없는 일관된 읽기 5. 자동 데드락 감지 6. 자동화된 장애 복구 InnoDB 스토리지 엔진 전체 구조 InnoDB는 MySQL에서 사용할 수 있는 스토리지 엔진 중 유일하게 레코드 기반의 잠금 기능을 제공하기 때문에 안정적으로 높은 동시성 처리가 가능하며, 성능 또한 우수하다. 4. 잠금 없는 일관된 읽기(Non-Locking Consistent Read) InnoDB 스토리지 엔진은 MVCC 기술을 이용해 잠금을 걸지 않고 읽기 작업을 수행한다. 잠금을 걸지 않기 때문에 InnoDB에서 읽기 작업은 다른 트랜잭션이 갖고 있는 잠금을 기다리지 않고, 읽기 작업이 가능하다. 격리 수준이 SERIALIZABLE이 아닌 READ_UNCOMMITTED나 R.. 2022. 10. 5. [ MySQL 아키텍처 ] 2. InnoDB 스토리지 엔진 아키텍처 (1) InnoDB 스토리지 엔진 아키텍처 (1) 1. 프라이머리 키에 의한 클러스터링 2. 외래 키 지원 3. MVCC InnoDB 스토리지 엔진 전체 구조 InnoDB는 MySQL에서 사용할 수 있는 스토리지 엔진 중 유일하게 레코드 기반의 잠금 기능을 제공하기 때문에 안정적으로 높은 동시성 처리가 가능하며, 성능 또한 우수하다. 1. 프라이머리 키에 의한 클러스터링 모든 InnoDB 테이블은 기본적으로 프라이머리 키(Primary key)를 기준으로 클러스터링되어 저장된다. 즉, 프라이머리 키 값의 순서대로 디스크에 저장되며, 모든 세컨더리 인덱스는 레코드의 주소 대신 프라이머리 키 값을 논리적 주소로 사용한다. 쿼리 실행계획에서 프라이머리 키는 기본적으로 다른 보조 인덱스에 비해 비중이 높게 설정된다. .. 2022. 10. 5. [ MySQL 아키텍처 ] 1. MySQL 엔진 아키텍처 (3) MySQL 엔진 아키텍처 (3) 7. 쿼리 캐시 8. 트랜잭션 지원 메타데이터(데이터사전) 7. 쿼리 캐시(Query Cache) MySQL 서버에서 쿼리 캐시는 빠른 응답을 필요로 하는 웹 기반 응용 프로그램에서 매우 중요한 역할을 한다. 쿼리캐시는 SQL 실행결과를 메모리에 캐시하고, 동일 SQL 쿼리가 실행되면 테이블을 읽지 않고 즉시 결과를 반환하기 때문에 빠른 성능을 가졌다. 하지만, 쿼리 캐시는 테이블의 데이터가 변경되면 캐시에 저장된 결과 중에서 변경된 테이블과 관련된 것들은 모두 삭제해야 되기 때문에 심각한 동시 처리 성능 저하를 유발했다. 또한, MySQL 서버가 발전하는 과정에서도 쿼리 캐시는 계속된 동시 처리 성능 저하와 많은 버그의 원인이 되기도 했다. MySQL 8.0에서 쿼리 캐.. 2022. 10. 5. [ MySQL 아키텍처 ] 1. MySQL 엔진 아키텍처 (2) MySQL 엔진 아키텍처 (2) 4. 플러그인 스토리지 엔진 모델 5. 컴포넌트 6. 쿼리 실행 구조 4. 플러그인 스토리지 엔진 모델 MySQL Server Plugin MySQL의 독특한 구조 중 대표적인 것이 플러그인 모델이다. 플러그인해서 사용할 수 있는 것이 스토리지 엔진만 있는 것은 아니다. 전문 검색 엔진을 위한 검색어 파서(인덱싱할 키워드를 분리해내는 작업)도 플러그인 형태로 개발해서 사용할 수 있으며, 사용자의 인증을 위한 Native Authentication과 Caching SHA-2 Authentication 등도 모두 플러그인으로 구현되어 제공된다. MySQL은 이미 기본적으로 많은 스토리지 엔진을 갖고 있다. 하지만, 많은 사용자의 요구 조건을 만족시키기 위해 기본적으로 제공되는.. 2022. 10. 4. [ MySQL 아키텍처 ] 1. MySQL 엔진 아키텍처 (1) MySQL 엔진 아키텍처 (1) 1. MySQL 전체 구조 2. MySQL 스레딩 구조 3. 메모리 할당 및 사용 구조 1. MySQL 전체 구조 MySQL은 일반적인 상용 RDBMS와 프로그래밍 언어 대부분으로부터 MySQL 서버(MySQL엔진 + 스토리지엔진)에 접근할 수 있는 기능을 지원한다. MySQL Server는 MySQL엔진과 Storage엔진으로 구성되어 있다. 또한 스토리지 엔진은 핸들로 API를 만족하면 누구든지 스토리지 엔진을 구현하여 MySQL서버에 추가하여 사용할 수 있다. MySQL Architecture를 공부하는 목적은 MySQL 쿼리(Query)를 작성하고 튜닝할 때 필요하다. MySQL는 다른 DBMS에 비하여 구조가 상당히 독특한 편이다. 사용자 입장에서는 차이를 느끼기.. 2022. 10. 4. 이전 1 ··· 10 11 12 13 14 다음