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


MySQL 5.6 リファレンスマニュアル  /  ...  /  統合型の memcached デーモンのための既存の memcached アプリケーションの改変

14.18.5.2 統合型の memcached デーモンのための既存の memcached アプリケーションの改変

MySQL 統合を使用するために既存の memcached アプリケーションを改変するときは、MySQL および InnoDB テーブルの次の側面について検討してください。

  • 数バイトよりも長いキー値を持つ場合、InnoDB テーブルの主キーに対して自動インクリメントする数値カラムを使用し、memcached のキー値を保持するカラムに一意のセカンダリインデックスを作成する方が効率的な場合もあります。これは、主キー値が (自動インクリメント値を使用したときのように) ソートされた順に追加される場合、大規模な挿入で InnoDB のパフォーマンスが最大になり、主キー値が各セカンダリインデックスに複製され、主キーが長い文字列値の場合に不要なスペースを占有する可能性があるためです。

  • いくつかの異なる種類の情報を memcached に格納するとき、データの種類ごとに別個の InnoDB テーブルをセットアップすることがあります。innodb_memcache.containers テーブル内に追加のテーブル識別子を定義し、@@table_id.key の表記を使用して、項目を異なるテーブルに格納したり取得したりします。項目を物理的に分割することで、各テーブルの特性を調整すると、最適なスペース使用率、パフォーマンス、および信頼性を得ることができます。たとえば、ブログ投稿を保持するテーブルに対して圧縮を有効にし、サムネイル画像を保持するテーブルを有効にしない場合があります。非常に重要なデータが保持されているテーブルは、別のテーブルよりも頻繁にバックアップする場合もあります。SQL を介してレポートを生成するために頻繁に使用されるテーブルで、追加のセカンダリインデックスを作成する場合もあります。

  • できれば、memcached インタフェースで使用する安定したテーブル定義セットをセットアップし、永続的に保存します。containers テーブルへの変更は、テーブルに対してクエリーが次回実行されたときに有効になります。そのテーブル内のエントリは起動時に処理され、認識されていないテーブル ID が @@ 表記によってリクエストされるたびに参照されます。そのため、新しいエントリは、関連付けられたテーブル ID を使用しようとするとただちに表示されますが、既存のエントリではエントリが有効になる前にサーバーの再起動が必要です。

  • デフォルトのキャッシュポリシー innodb_only を使用するとき、add()set()incr() などの呼び出しは成功しますが、while expecting 'STORED', got unexpected response 'NOT_STORED などのデバッグメッセージが発生します。これは、innodb_only 構成では、新しい値と更新された値が、メモリーキャッシュに保存されることなく InnoDB テーブルに直接送信されるためです。


User Comments
Sign Up Login You must be logged in to post a comment.