Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 26.8Mb
PDF (A4) - 26.9Mb
HTML Download (TGZ) - 7.1Mb
HTML Download (Zip) - 7.2Mb


MySQL 5.6 リファレンスマニュアル  /  ...  /  InnoDB のためのメモリーアロケータの構成

14.13.3 InnoDB のためのメモリーアロケータの構成

InnoDB が開発されたとき、オペレーティングシステムに付属のメモリーアロケータや実行時ライブラリは多くの場合、パフォーマンスとスケーラビリティーに欠けていました。その時点では、マルチコア CPU 用にチューニングされたメモリーアロケータライブラリは存在しませんでした。そのため、InnoDB は、mem サブシステム内に独自のメモリーアロケータを実装しました。このアロケータは単一の相互排他ロックによって保護されており、これがボトルネックになる可能性があります。InnoDB はまた、システムアロケータ (malloc および free) の周りに、同様に単一の相互排他ロックによって保護されているラッパーインタフェースも実装しています。

今日、マルチコアシステムがより広範囲に使用可能になるにつれ、またオペレーティングシステムが成熟するにつれ、オペレーティングシステムに付属のメモリーアロケータに対して大幅な機能強化が行われてきました。新しいメモリーアロケータは以前のものより性能が向上し、またよりスケーラブルになりました。主要な高性能メモリーアロケータには、Hoardlibumemmtmallocptmalloctbbmalloc、および TCMalloc が含まれます。ほとんどのワークロードは、特にメモリーの割り当てと解放が頻繁に行われる (マルチテーブル結合などの) 場合、内部の InnoDB 固有のメモリーアロケータではなく、より高度にチューニングされたメモリーアロケータを使用するとメリットがあります。

InnoDB が独自のメモリーアロケータまたはオペレーティングシステムのアロケータのどちらを使用するかは、MySQL オプションファイル (my.cnf または my.ini) 内のシステム構成パラメータ innodb_use_sys_malloc の値を設定することによって制御できます。ON または 1 (デフォルト) に設定されている場合、InnoDB はメモリープールを自ら管理するのではなく、ベースとなるシステムの malloc および free 関数を使用します。このパラメータは動的ではなく、システムが起動された場合にのみ有効になります。InnoDB メモリーアロケータを引き続き使用するには、innodb_use_sys_malloc0 に設定します。

InnoDB メモリーアロケータが無効になっている場合、InnoDB は、パラメータ innodb_additional_mem_pool_size の値を無視します。InnoDB メモリーアロケータは、システムメモリーアロケータにフォールバックしなくても割り当て要求を満たせるように、追加のメモリープールを使用します。InnoDB メモリーアロケータが無効になっている場合、このような割り当て要求はすべて、システムメモリーアロケータによって満たされます。

動的リンクを使用する Unix ライクなシステムでは、メモリーアロケータの置き換えは、環境変数 LD_PRELOAD または LD_LIBRARY_PATH がそのアロケータを実装している動的ライブラリを指すようにするだけの簡単な操作で済むことがあります。ほかのシステムでは、ある程度の再リンクが必要になる可能性があります。選択したメモリーアロケータライブラリのドキュメントを参照してください。

システムメモリーアロケータが使用されている (innodb_use_sys_mallocON である) 場合、InnoDB はすべてのメモリー使用を追跡することができないため、SHOW ENGINE INNODB STATUS コマンドの出力内のセクションBUFFER POOL AND MEMORYTotal memory allocatedにはバッファープールの統計のみが含まれます。mem サブシステムまたは ut_malloc を使用して割り当てられたメモリーはすべて除外されます。

注記

innodb_use_sys_mallocinnodb_additional_mem_pool_size は MySQL 5.6.3 では非推奨であり、将来のリリースで削除される予定です。

InnoDB のメモリー使用のパフォーマンスへの影響の詳細は、セクション8.9「バッファリングとキャッシュ」を参照してください。


User Comments
User comments in this section are, as the name implies, provided by MySQL users. The MySQL documentation team is not responsible for, nor do they endorse, any of the information provided here.
Sign Up Login You must be logged in to post a comment.