가이드에 보면, 아래와 같이 설명되어 있습니다.
페이지에 따라서 어떤 성능상에 변화가 발생할 수 있는지에 대한 내용은 없는데요.
데이터 페이지 크기와 페이지 수가 성능에 미치는 영향이 궁금합니다.
그리고 페이지 하나당 row 하나라고 생각하면 되는 것인가요?..
매번 빠른 답변 감사드립니다.
데이터 페이지 크기(-s)
testdb의 범용(generic) 볼륨의 데이터 페이지 크기를 8192바이트로 지정하는 구문이다.
-s 옵션은 데이터베이스 페이지의 크기를 1024, 2048, 4096, 8192, 16384바이트 중 하나의 값으로 지정하는 옵션이며, 디폴트 값은 4096이다. 만약, 이러한 값이 아닌 다른 숫자를 지정할 경우에는 시스템이 올림값으로 페이지 크기를 지정한다. -s 옵션을 통해 데이터베이스 볼륨의 페이지 크기를 변경하면, 이와 연관된 데이터베이스 파라미터 data_buffer_pages, sort_buffer_pages, log_buffer_pages에도 영향을 미치므로 주의해야 한다.
페이지 수(-p)
10,000 페이지가 할당된 testdb라는 이름의 데이터베이스를 생성하는 구문이다.
-p는 데이터베이스의 응용 프로그램을 위한 데이터베이스 페이지 수를 지정하기 위한 옵션으로서, 디폴트 값은 5,000이다.
페이지 사이즈란... DB가 한번에 읽어오는 크기을 나타낸다고 볼 수 있습니다.
만약 4k로 설정했다면 DB는 한번에 4k의 페이지를 가져올 것입니다. 원하는 데이터가 4k page를 넘는다면 추가적으로 4k page를 가져오게 될 것입니다. 작업의 횟수가 많아 지고, 그만큼 I/O가 발생할 것입니다. 성능적인 면에서 영향을 줄 것입니다.
16k로 설정했다면 한번 읽어올 때 16k짜리 page를 가져올 것입니다. 16k page안에만 있다면 한번만 가져오면 될 것입니다. 작업의 횟수가 줄어드니 성능적인 면에서 긍정적인 효과가 있을 것입니다. 단 10k page를 사용하는 데이터가 있다면 4k의 설정의 경우 12k만 사용하면 되지만 16k 설정에서는 무조건 16k를 사용하게 될 것입니다. 공간 활용률이 떨어지게 됩니다. 입력하고 사용하는 데이터의 조회 데이터 량의 크기에 맞춰 페이지 사이즈를 설정해 주는 것이 좋습니다. 성능과 공간 활용률의 최적의 사이즈를 찾는 게 가장 좋습니다. 데이터량의 크기는 한 row의 데이터 크기를 환산 하시면 됩니다. DB가 검색해서 읽어오는 단위는 row단위로 가져오기 때문입니다.
페이지 수란... 위의 사이즈에 페이지를 몇개 만큼 두겠느냐는 것입니다.
16k사이즈이 page를 1개만 한다면 16k짜리 볼륨이 생성될 것입니다. 10만개라면 1.6G짜리 볼륨이 생성될 것입니다. 크기 산정하는 수라고 보시면 됩니다.