>  기사  >  데이터 베이스  >  MySQL을 최적화하기 위해 Innodb의 데이터 페이지 크기를 수정하는 방법에 대한 자세한 예

MySQL을 최적화하기 위해 Innodb의 데이터 페이지 크기를 수정하는 방법에 대한 자세한 예

怪我咯
怪我咯원래의
2017-07-05 11:22:291621검색

이 글에서는 Innodb의 데이터 페이지 크기를 수정하여 MySQL을 최적화하는 방법을 주로 소개합니다. Innodb는 MySQL의 차세대 데이터 엔진으로, 필요한 친구들이 참고할 수 있습니다.

우리는 Innodb의 데이터 페이지를 알고 있습니다. 는 16K이며 시스템에서 이를 변경할 수 있는 방법은 없습니다. 앞으로는 MySQL이 Oracle처럼 여러 데이터 페이지 크기를 지원할 수 있기를 바랍니다.
그러나 실제 애플리케이션에서는 16K가 약간 너무 클 때도 있습니다. 특히 Oracle 또는 SQL SERVER가 매우 잘 실행되고 있고 IO 증가가 너무 명백할 때 많은 기업이 MySQL로 이전한 경우,
데이터 페이지 변경을 고려해 보겠습니다. . 크든 작든.
실제로 innodb의 데이터 페이지 크기도 변경할 수 있습니다. 소스 코드 계층에서 변경한 다음 MySQL을 다시 빌드하기만 하면 됩니다.
변경 방법:
(MySQL-5.1.38 소스 코드를 예로 사용)
위치는 Storage/innobase/ include/univ.i, univ.i에서 검색: UNIV_PAGE_SIZE

/*
  DATABASE VERSION CONTROL
  ========================
*/
 
/* The universal page size of the database */
#define UNIV_PAGE_SIZE     (2 * 8192) /* NOTE! Currently, this has to be a
   power of 2 */
/* The 2-logarithm of UNIV_PAGE_SIZE: */
#define UNIV_PAGE_SIZE_SHIFT 14
 
/* Maximum number of parallel threads in a parallelized operation */
#define UNIV_MAX_PARALLELISM 32

UNIV_PAGE_SIZE는 데이터 페이지 크기이며 기본값은 16K입니다. 다음 설명은 이 값을 거듭제곱으로 설정할 수 있음을 나타냅니다. 2. 이 값은 4k, 8k, 16k, 32K, 64K로 설정할 수 있으며 이는 대규모 응용 프로그램에서는 의미가 없습니다.
UNIV_PAGE_SIZE를 동시에 변경한 후 UNIV_PAGE_SIZE_SHIFT를 변경해야 합니다. 값은 UNIV_PAGE_SIZE의 2제곱이므로 데이터 페이지 설정은 다음과 같습니다.

#define UNIV_PAGE_SIZE_SHIFT 12 if UNIV_PAGE_SIZ=4K
#define UNIV_PAGE_SIZE_SHIFT 13 if UNIV_PAGE_SIZ=8K
#define UNIV_PAGE_SIZE_SHIFT 15 if UNIV_PAGE_SIZ=32K

예:
innodb의 데이터 페이지를 8K로 변경합니다. , 해당 수정 사항은 다음과 같습니다.

/*
  DATABASE VERSION CONTROL
  ========================
*/
 
/* The universal page size of the database */
#define UNIV_PAGE_SIZE     8192  /* NOTE! Currently, this has to be a
   power of 2 */
/* The 2-logarithm of UNIV_PAGE_SIZE: */
#define UNIV_PAGE_SIZE_SHIFT 13
 
/* Maximum number of parallel threads in a parallelized operation */
#define UNIV_MAX_PARALLELISM 32

Re 컴파일한 다음 테스트하고 다시 테스트합니다. 행운을 빌어요!

위 내용은 MySQL을 최적화하기 위해 Innodb의 데이터 페이지 크기를 수정하는 방법에 대한 자세한 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.