10bet网址
MySQL 5.6リファレンスマニュアル
本手册下载
PDF (Ltr)- 26.8 mb
PDF (A4)- 26.8 mb
HTML下载(TGZ)- 7.2 mb
HTML下载(邮政编码)- 7.2 mb


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

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

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

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

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

動的リンクを使用するUnixラLD_PRELOADまたはLD_LIBRARY_PATHがそのアロケタを実装している動的ラ。ほかのシステムでは,ある程度の再リンクが必要になる可能性があります。選択したメモリアロケタラブラリのドキュメントを参照してください。

システムメモリアロケタが使用されている(innodb_use_sys_mallocである)場合,InnoDBはすべてのメモリ使用を追跡することができないため,显示引擎innodb状态コマンドの出力内のセクション缓冲池和内存总内存分配にはバッファプルの統計のみが含まれます。memサブシステムまたはut_mallocを使用して割り当てられたメモリはすべて除外されます。

注記

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

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