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


18.3.2.12 MySQL Cluster の送信バッファーパラメータの構成

以前の NDB カーネルでは、クラスタ内の各ノードに対してサイズが 2M バイトに固定された送信バッファーが採用され、このバッファーはノードの起動時に割り当てられていました。このバッファーのサイズは、クラスタの起動後に変更できなかったため、事前にトランスポータソケットに対する最大負荷に対応できる十分な大きさにする必要がありました。しかし、多くの場合ほとんどのメモリーが使用されないため、これは非効率的なメモリーの使用方法であり、その結果多数の API ノードに対応して拡張したときに、大量のリソースが浪費される可能性がありました。

この問題は、最終的には (MySQL Cluster NDB 7.0 で) すべてのトランスポータが共有するプールからメモリーを動的に割り当てる統合された送信バッファーを採用することで解決されました。これにより、送信バッファーのサイズを必要に応じて調整できます。統合された送信バッファーの構成は、次のパラメータを設定すると実現できます。

  • TotalSendBufferMemory  このパラメータは、すべてのタイプの MySQL Cluster ノードに対して設定できます。つまり、config.ini ファイルの [ndbd][mgm]、および [api] (または [mysql]) セクションに設定できます。これは、各ノードによって割り当てられ、すべての構成済みトランスポータ間での使用に設定されるメモリーの合計量 (バイト単位) を表します。設定する場合、その最小は 256K バイト、最大は 4294967039 です。

    既存の構成との下位互換性を確保するため、このパラメータのデフォルト値は、すべての構成済みトランスポータの最大送信バッファーサイズの合計にトランスポータあたり 32K バイト (1 ページ) を加えた値になっています。最大は、次の表に示すように、トランスポータのタイプによって異なります。

    トランスポータ 最大送信バッファーサイズ (バイト)
    TCP SendBufferMemory (デフォルト = 2M)
    SCI SendLimit (デフォルト = 8K) + 16K
    SHM 20K

    これにより、既存の構成が MySQL Cluster NDB 6.3 以前とほぼ同じように機能し、各トランスポータで同じ量のメモリーと送信バッファースペースを使用できます。ただし、特定のトランスポータで使用されていないメモリーは、ほかのトランスポータでも使用できません。

  • OverloadLimit  このパラメータは、config.ini ファイルの [tcp] セクションで使用され、接続が過負荷状態であるとみなされる前に送信バッファーに存在する未送信データの量 (バイト単位) を表します。このような過負荷状態が発生すると、過負荷の接続に影響を与えるトランザクションが失敗し、過負荷のステータスが終了するまで次のエラーが発生します: NDB API エラー 1218 (Send Buffers overloaded in NDB kernel)。デフォルト値は 0 です。その場合、特定の接続に対する実質的な過負荷の制限は SendBufferMemory * 0.8 として計算されます。このパラメータの最大値は 4G です。

  • SendBufferMemory  この値は、単一のトランスポータが TotalSendBufferMemory で指定されたプール全体から使用できるメモリー量に対する厳密な制限を表します。ただし、すべての構成済みトランスポータの SendBufferMemory の合計は、特定のノードに対して設定された TotalSendBufferMemory より大きくなることがあります。多数のノードが使用されているときは、すべてのトランスポータがメモリーの最大量を同時に必要としないかぎり、このような方法でメモリーが節約されます。