この記事では、Innodb のデータ ページ サイズを変更して MySQL を最適化する方法を主に紹介します。Innodb は MySQL の次に人気のあるデータ エンジンです。は 16K であり、システム内でこれを変更する方法はありません。将来的には、MySQL も Oracle のように複数のデータ ページ サイズをサポートできるようになることを願っています。
しかし、実際のアプリケーションでは、16K は少し大きすぎる場合があります。特に、Oracle または SQL SERVER が非常にうまく動作しているときに多くの企業が MySQL に移行し、IO の増加があまりにも明らかな場合は、データ ページの変更を検討します。 。 大なり小なり。 実際、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 32UNIV_PAGE_SIZE はデータ ページ サイズで、デフォルトは 16K です。次の注釈は、この値がべき乗に設定できることを示しています。 2の。この値は 4k、8k、16k、32K、64K に設定できますが、大規模なアプリケーションでは意味がありません。 UNIV_PAGE_SIZEを同時に変更した後、UNIV_PAGE_SIZE_SHIFTの値を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 コンパイルしてからテストし、再度テストします。頑張ってください!
以上がInnodb のデータ ページ サイズを変更して MySQL を最適化する方法の詳細な例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。