ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • MySQL Page 알아보기
    Database 2023. 10. 30. 10:05
    728x90
    반응형

    - 목차

     

    함께 읽으면 좋은 글

    https://westlife0615.tistory.com/8

    MySQL Undo Log (Undo Tablespace) 알아보기

    - 목차 소개. MySQL 은 Undo Log 라는 데이터 저장 영역이 있습니다. Undo 란 revert, rollback 과 같이 직전에 수행한 동작을 되돌리는 행위입니다. MySQL 같은 데이터데이스 영역에서의 Undo 란 Write Query (DML Q

    westlife0615.tistory.com

    https://westlife0615.tistory.com/17

    MySQL Buffer Pool 알아보기

    - 목차 함께 보면 좋은 글 https://westlife0615.tistory.com/5 MySQL Redo Log 알아보기 - 목차 소개. MySQL 의 Redo Log 는 Write Query 에 해당하는 데이터의 변경을 저장합니다. Insert, Update, Delete 요청의 타겟이 되는

    westlife0615.tistory.com

    소개.

    MySQL 의 데이터들은 다음과 같은 종류들이 있습니다.
     
    1. Table 의 Row
    2. Index
    3. Undo Log
    등이 존재합니다.
     
    Row 들은 MySQL 에서 관리하는 실질적인 데이터이구요.
    Index 는 Row 의 효율적인 조회를 위해서 사용됩니다.
    Undo Log 는 Transaction 처리를 위해서 사용되는 데이터이구요.
    이러한 데이터들은 On-disk 영역의 저장소에서 파일로 관리됩니다.
    이를 Tablespace 라고 부르는데요.
    Row, Index, Undo Log 들은 각각의 Tablespace 에 저장되게 됩니다.
     
    Page 란 이러한 데이터들의 묶음입니다.
    Page 는 Block of Data 라고 표현되죠.
    Page 는 Tablespace 라는 큰 규모의 파일 내부에서 논리적인 데이터 묶음이며,
    MySQL 에서 Disk I/O 시에 한번에 요청하는 데이터 단위이기도 합니다.
    즉, 하나의 Row 를 찾더라도 이 Row 가 속하는 Data Page 하나를 통으로 메모리에 로드하게 되죠.
     
    이번 글에서는 MySQL 에서 다루는 데이터 묶음의 단위인 Page 에 대해서 알아보도록 하겠습니다.
     

    Page 종류.

    Page 의 종류로는 Data Page, Index Page, Undo Log Page 가 있습니다.
    이는 MySQL 에서 중요시하는 데이터 타입인 Row of Table, Index, Undo Log 의 묶음 단위를 뜻합니다.
     

    Data Page.

    Data Page 는 실질적인 테이블 데이터들이 저장합니다.
    아래와 같은 테이블이 존재하는 경우, row{id : 1, name : 'Andy'}, row{id : 2, name : 'Bob'} 과 같은 Row 들이 저장되는 영역입니다.

    create table test_user_table(
        id int not null auto_increment primary key,
        name varchar(24)
    )

     

    Index Page.

    Index Page 는 테이블의 Index 정보를 저장합니다.
    아래와 같은 테이블은 2 개의 Index 를 가집니다.
    id 칼럼을 사용하는 Primary Index 와
    city 칼럼을 사용하는 Secondary Index 가 있죠.

    create table test_user_table(
        id int not null auto_increment primary key,
        name varchar(24),
        city varchar(24),
        key city_index(city)
    )

     
    Index Page 는 Index 값과 이에 상응하는 Data Page 의 주소를 함께 가집니다.

    Primary Index Page 의 경우에는 Index 에 대응되는 하나의 Data Page 주소를 가지고,
    Secondary Index Page 의 경우에는 Index 범위에 대응되는 여러 Data Page 주소를 가집니다.
     
    예를 들어,
    row{id : 1, name : 'Andy', city : 'Seoul'}, row{id : 2, name : 'Bob', city: 'Busan'} 이 1번 Page 에 저장되어 있다면,
    Primary Index Page
    index{id : 1, page : 1}, index {id : 2, page 1} 와 같은 형식으로 1번 Page 를 가리킵니다.
     
    Secondary Index Page
    index{id : 'Seoul', page : 1}, index {id : 'Busan', page 1} 와 같은 형식으로 1번 Page 를 가리킵니다.
     

    Undo Log Page.

    Undo Log Page 는 Undo Log Entry 들을 기록합니다.
    Undo Log 는 Transaction Isolation 을 구현하기 위해서 각 Transaction 별로 원본 데이터를 저장하게 됩니다.
    특히 REPEATABLE READ Isolation Level 에서 REPEATABLE READ 를 구현하기 위해서 사용됩니다.
     
    Undo Log 에 대한 상세한 설명은 아래 링크를 참조해주세요.
    https://westlife0615.tistory.com/8

    MySQL Undo Log (Undo Tablespace) 알아보기

    - 목차 소개. MySQL 은 Undo Log 라는 데이터 저장 영역이 있습니다. Undo 란 revert, rollback 과 같이 직전에 수행한 동작을 되돌리는 행위입니다. MySQL 같은 데이터데이스 영역에서의 Undo 란 Write Query (DML Q

    westlife0615.tistory.com

     
    Transaction 시에 Rollback 상황을 대비하여 원본 데이터들이 Undo Log Page 에 기록됩니다.
    MySQL 의 Transaction Management System 은 Transaction Id 와 Transaction 과 관련된 Undo Log Page 들을 기록하고 있으며,
    Rollback 시에 해당 정보들을 활용하여 원본 데이터를 복구합니다.
     
     

    Page 구성.

    Page 는 데이터들의 묶음입니다.
    이는 논리적인 데이터 단위인데요.
    실질적인 그리고 물리적인 단위는 파일로써 관리됩니다.
    Row of Table 와 Index 의 경우에는 Tablespace 라는 저장 영역이 있구요.
    Undo Log 또한 Undo Tablespace 라는 저장 영역이 존재합니다.
    이들은 실질적인 File 이며, 물리적인 단위를 의미합니다.
     
    Page 들은 각 물리적인 영역 내부에서 논리적인 단위로 사용되구요.
    B-Tree 형태로 또는 Circular Buffer 형태로써 Page 들은 연결되어 있습니다.
     
     

    Page Header.

    Page 의 최상단에는 Header 영역이 존재합니다.
    Header 에는 파일의 타입 (Data Page, Index Page, Undo Log Page) 정보가 저장됩니다.
     
    - PAGE_TYPE_CLUSTERED (Data Page)
    - PAGE_TYPE_BTR_INDEX (Index Page)
    - PAGE_TYPE_UNDO (Undo Page)
     
    와 같이 고유한 식별값이 존재하구요.
    이들은 B-Tree 형태로 또는 Circular Buffer 자료구조의 형태를 유지하여 Referencing 하는 구조를 띕니다.
     

    Page Body.

    Page Body 영역에는 실질적인 데이터들이 저장됩니다.
     
    Data Page 의 경우에는 Row of Table 정보들이 저장됩니다.
    Index Page 의 경우에는 Index 의 값과 이에 상응하는 Row of Table 의 Page 주소가 저장됩니다.
    Undo Log Page 의 경우에는 Transaction 시에 변경되는 데이터들의 원본 데이터가 저장됩니다.
     
     

    Page Size.

    아래 설정값을 통해서 Page 의 기본 크기를 확인할 수 있습니다.
    기본값으로 16KB 이 설정되어 있습니다.
    즉, Memory <-> Disk 의 IO 시에 전송되는 최소 데이터의 크기가 16KB 가 됩니다.

    SHOW VARIABLES LIKE 'innodb_page_size';
    +------------------+-------+
    | Variable_name    | Value |
    +------------------+-------+
    | innodb_page_size | 16384 |
    +------------------+-------+
    1 row in set (0.03 sec)

    반응형

    'Database' 카테고리의 다른 글

    Database Driver 알아보기  (0) 2023.11.04
    MySQL Index 알아보기  (0) 2023.10.30
    MySQL Buffer Pool 알아보기  (0) 2023.10.30
    MySQL Undo Log (Undo Tablespace) 알아보기  (2) 2023.10.30
    MySQL Redo Log 알아보기  (2) 2023.10.30
Designed by Tistory.