본문 바로가기

buffer pool3

데이터베이스 sequential, scattered [ 목적 ] 오라클 공부하다가 데이터를 읽는 과정을 몰랐는데, 여러 방법이 있다는 것을 알게 되어서 기록하고자 정리한다. [ db file sequential read ] 단일 블록 스토리지 i/o를 수행할 때 발생. 주로 인덱스를 거쳐 테이블에 랜덤 엑세스 할 경우 발생하고 많은 Wait time을 소모함. 대량 발생 시 주로 oltp 시스템에서 성능 저하를 일으킴. 랜덤 i/o 엑세스 된 블록이 버퍼 캐시에는 Sequential하게 저장됨. -- 최적화 방안. 버퍼 캐시 늘리기. 왜냐면 MRU 부분에 페이지가 들어가므로 오래 남길 수 있음. 인덱스를 다시 빌딩하는건 도움이 되지 않는 부분이 대부분, OLTP에서는 자연스러운 Wait event임. 성능이 뛰어난 ssd를 고려해야함. 랜덤 i/o를 많이.. 2023. 6. 8.
Buffer Pool과 redo의 관계 1. Buffer Pool 먼저 MySQL Buffer Pool 에 대해 알고 있어야한다. Buffer Pool은 Innodb 스토리지 엔진에서 가장 핵심적인 부분을 담당하고 있다. 디스크의 데이터 파일이나 인덱스의 정보를 메모리에 캐싱한다. 또, 쓰기 작업을 지연시켜 일괄 배치 작업으로 처리하여 디스크에 접근하는 i/o를 최적화할 수 있다. 2. Log Buffer Innodb의 버퍼 풀은 서버의 메모리가 허용하는 만큼 크게 설정하면 많은 양의 데이터를 캐싱할 수 있기 때문에 디스크 접근에 대한 i/o가 발생하지 않아 성능이 좋아진다. 모든 데이터 파일이 Buffer Pool에 적재될 정도의 크기라면 Buffer Pool 크기를 더 늘려도 성능에 도움이 되지 않지만, 그렇지 않은 경우 성능 향상에 도움.. 2023. 1. 13.
MySQL Buffer Pool 1. MySQL Buffer Pool 이란?? Innodb 스토리지 엔진에서 가장 핵심적인 부분을 담당하고 있다. 디스크의 데이터 파일이나 인덱스의 정보를 메모리에 캐싱한다. 또, 쓰기 작업을 지연시켜 일괄 배치 작업으로 처리하여 디스크에 접근하는 i/o를 최적화할 수 있다. 2. Buffer Pool 크기 할당 운영체제와 각 MySQL 엔진에서 사용할 메모리도 고려하면서 설정을 해야된다. MySQL 엔진에서 크게 메모리가 사용되는 부분은 없지만, 레코드 버퍼가 상당한 메모리를 사용하기도 한다고 한다. 레코드 버퍼는 각 클라이언트 세션에서 테이블의 레코드를 읽고 쓸 때 버퍼로 사용하는 공간을 의미하고, 커넥션이 많고 사용하는 테이블도 많다면 레코드 버퍼 용도로 사용되는 메모리 공간이 필요할 수 있다. M.. 2023. 1. 13.