반응형

RealMySQL 4

[Real MySQL 8.0] 8장 - 인덱스

이번에 InnoDB 스토리지 엔진에서 인덱스 레코드를 잠금 한다는 사실을 알게 되어서, 인덱스 설계가 매우 중요하다는 사실을 알게 되었다. 8장을 통해 MySQL의 인덱스에 대해 자세히 공부해 보려고 한다. 8.1 디스크 읽기 방식 디스크 읽기에는 랜덤 I/O와 순차 I/O가 있는데, 디스크 헤더를 많이 움직여야 하는 랜덤 I/O가 부하가 더 크다. 쿼리를 튜닝하는 작업은 랜덤 I/O자체를 줄여주는 것이 목적이다. 8.2 인덱스란? 데이터 파일은 ArrayList와 같이 저장된 순서대로 별도의 정렬 없이 그대로 저장을 해둔다. 인덱스 파일은 Sorted List와 마찬가지로 저장되는 칼럼의 값을 이용해 항상 정렬된 상태를 유지한다. 프라이머리 키 : 레코드를 대표하는 컬럼의 값으로 만들어진 인덱스. 이 ..

난중일기/Back 2024.02.16

[Real MySQL 8.0] 4장 - 아키텍처

MySQL 서버의 아키텍처 구성을 알아본다. MyISAM과 InnoDB 스토리지 엔진의 차이점에 초점을 맞추어 보았다. MySQL 서버는 크게 MySQL엔진, 스토리지 엔진으로 구분된다. - MySQL 엔진 : 클라이언트로부터의 접속 및 쿼리 요청을 처리하는 커넥션 핸들러, SQL파서, 옵티마이저가 중심을 이룬다. - 스토리지 엔진 : 요청된 SQL문장으 분석하거나 최적화 하고, 실제 데이터를 디스크 스토리지에 저장하거나 데이터를 읽어오는 부분을 처리한다. MySQL엔진은 하나지만, 스토리지 엔진은 여러 개를 동시에 사용할 수 있다. 4.1 MySQL 엔진 아키텍처 핸들러 API : MySQL엔진의 쿼리 실행기에서 데이터를 쓰거나 읽어야 할 때 각 스토리지 엔진에 쓰기 또는 읽기를 요청하는데, 이러한 요..

난중일기/Back 2024.02.07

[Real MySQL 8.0] 5장 - 트랜잭션과 잠금

5장은 기존에 알고 있던 내용들이 많아서, 개념만 간단히 잡고 MySQL의 InnoDB에서의 특이사항은 어떤 부분인지를 확인해 보았다. InnoDB에서의 인덱스 레코드를 잠금하는 개념은 처음 알게 되어서, 앞으로 인덱스를 만들 때 이런 내용도 고려해야겠다는 생각이 들었다. 잠금(Lock) : 동시성을 제어하기 위한 기능 트랜잭션(Transaction) : 데이터 정합성을 보장하기 위한 기능 5.1 트랜잭션 개발 시 트랜잭션에서 고려해 볼 사항들 1. 커넥션과 동일하게 꼭 필요한 최소한의 코드에만 적용하는 것이 좋다(로직이 시작된 후에 커넥션을 맺는 것이 아니라, DBMS가 필요하지 않은 작업을 마치고, 필요한 시점의 전에 맺는 것이 좋다). 2. 메일 전송이나 FTP 파일 전송 작업 또는 네트워크를 통해..

난중일기/Back 2024.02.07

[Real MySQL 8.0] 1~3장

이전 회사에서는 MSSQL, 오라클(Tibero)만 사용하다가, MySQL을 사용하게 되어 공부를 시작하게 되었다. ORM, FRM같은 도구들이 나와서 직접적으로 쿼리를 짜거나 DBMS에 대해서 몰라도 개발은 가능하지만, 처리 방식을 이해하고 있는 개발자가 더 경쟁력 있을 것이라고 생각되어 공부를 하게 되었다. 1. 소개 MySQL 8.0은 5.5~5.7 버전까지의 안정화, 성능 개선을 거쳐 상용 DBMS가 가지고 있는 기능이 장착되었다. 다른 DBMS와 비교했을 때 MySQL의 경쟁력은 비용이다. 2. 설치와 설정 MySQL 서버는 오픈 코어 방식(핵심 나용은 엔터프라이즈 에디션과 커뮤니티 에디션이 모두 동일하고, 특정 부가 기능들만 엔터프라이즈 에디션에 포함되는 방식)이다. MySQL Percona ..

난중일기/Back 2024.01.25
반응형