[MySQL] InnoDB (2) - 버퍼 풀과 LRU
·
Database
InnoDB 엔진의 버퍼 풀과 LRU에 대해서 공부하였다. InnoDB 버퍼 풀InnoDB 스토리지 엔진에서 가장 핵심적인 부분으로, 디스크의 데이터 파일이나 인덱스 정보를 메모리에 캐시해두는 공간이다.쓰기 작업을 지연시켜 일괄 작업으로 처리해줄 수 있게 해주는 버퍼 역할도 같이 한다. 일반적인 INSERT, UPDATE, DELETE처럼 데이터를 변경하는 쿼리는 디스크 작업을 발생시키기 때문에,버퍼 풀이 이러한 변경된 데이터를 한 번에 모아 디스크 작업의 횟수를 줄일 수 있다. 버퍼 풀의 크기 설정에 대한 내용은 MySQL 5.7부터 inno_buffer_pool_size 시스템변수를 통해 설정할 수 있으며, 동적으로 크기를 확장할 수 있다는 점을 짚고 넘어가겠다. (버퍼 풀의 크기를 동적으로 변경하고..
[MySQL] InnoDB 엔진 (1)
·
Database
MySQL의 스토리지 엔진 중 가장 많이 사용되는 InnoDB 엔진에 대해 공부해보았다. InnoDB는 MySQL에서 사용할 수 있는 스토리지 엔진 중 거의 유일하게 레코드 기반의 잠금을 제공하며,그로인해 높은 동시성 처리가 가능하고, 안정적이며 성능이 뛰어나다. 프라이머리 키에 의한 클러스터링InnoDB의 모든 테이블은 기본적으로 프라이머리 키를 기준으로 클러스터링되어 저장된다.즉 프라이머리 키 값의 순서대로 디스크에 저장된다는 뜻이며, 모든 세컨더리 인덱스는 레코드의 주소 대신 프라이머리 키의 값을 논리적인 주소로 사용한다.(위 내용은 추후 인덱스에서 자세히 다룰 예정) InnoDB와 달리 MyISAM 스토리지 엔진에서는 클러스터링 키를 지원하지 않는다. 따라서 프라이머리 키와 세컨더리 인덱스는 구조..
[MySQL] MyISAM ? InnoDB ?
·
Database
MySQL을 공부하다보니 계속 InnoDB엔진과 MyISAM 엔진이 등장하는데, 궁금해서 간단하게만 정리해보았다.  MySQL 엔진 아키텍처먼저 MySQL 서버는 MySQL 엔진과 스토리지 엔진으로 나뉜다. MySQL엔진은 요청된 SQL 문장을 분석하거나, 최적화하는 등 DBMS의 두뇌 역할을 한다고 보면 되고,스토리지 엔진은, 실제 데이터를 디스크 스토리지에 저장하거나, 디스크 스토리지로부터 읽어오는 역할을 전담한다. InnoDB 엔진이나, MyISAM 엔진은 둘 중 스토리지 엔진에 해당한다.MyISAM엔진과 InnoDB엔진을 간단히 비교하자면,트랜잭션 처리가 필요하고, 대용량의 데이터를 다루기 위해서는 InnoDB트랜잭션 처리가 필요없고, Read only 기능이 많이 필요할수록 MyISAM조회가 많..