Documentation Home
MySQL 8.0 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 36.1Mb
PDF (A4) - 36.2Mb


MySQL 8.0 リファレンスマニュアル  /  ...  /  InnoDB memcached の複数の get および Range クエリーのサポート

このページは機械翻訳したものです。

15.20.4 InnoDB memcached の複数の get および Range クエリーのサポート

daemon_memcached プラグインは、複数の get 操作 (単一の memcached クエリーで複数のキーと値のペアをフェッチ) および範囲クエリーをサポートしています。

複数の get 操作

単一の memcached クエリーで複数のキーと値のペアをフェッチする機能により、クライアントとサーバー間の通信トラフィックが削減され、読取りパフォーマンスが向上します。 InnoDB の場合、トランザクションおよびオープンテーブル操作が少なくなります。

次の例は、複数データセットのサポートを示しています。 この例では、新しいテーブルとカラムのマッピングの作成 で説明されている test.city テーブルを使用します。

Press CTRL+C to copy
mysql> USE test; mysql> SELECT * FROM test.city; +---------+-----------+-------------+---------+-------+------+--------+ | city_id | name | state | country | flags | cas | expiry | +---------+-----------+-------------+---------+-------+------+--------+ | B | BANGALORE | BANGALORE | IN | 0 | 1 | 0 | | C | CHENNAI | TAMIL NADU | IN | 0 | 0 | 0 | | D | DELHI | DELHI | IN | 0 | 0 | 0 | | H | HYDERABAD | TELANGANA | IN | 0 | 0 | 0 | | M | MUMBAI | MAHARASHTRA | IN | 0 | 0 | 0 | +---------+-----------+-------------+---------+-------+------+--------+

get コマンドを実行して、city テーブルからすべての値を取得します。 結果はキーと値のペアの順序で返されます。

Press CTRL+C to copy
telnet 127.0.0.1 11211 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. get B C D H M VALUE B 0 22 BANGALORE|BANGALORE|IN VALUE C 0 21 CHENNAI|TAMIL NADU|IN VALUE D 0 14 DELHI|DELHI|IN VALUE H 0 22 HYDERABAD|TELANGANA|IN VALUE M 0 21 MUMBAI|MAHARASHTRA|IN END

単一の get コマンドで複数の値を取得する場合、(@@containers.name テーブル記法を使用して) テーブルを切り替えて最初のキーの値を取得できますが、後続のキーのテーブルを切り替えることはできません。 たとえば、この例のテーブルスイッチは有効です:

Press CTRL+C to copy
get @@aaa.AA BB VALUE @@aaa.AA 8 12 HELLO, HELLO VALUE BB 10 16 GOODBYE, GOODBYE END

同じ get コマンドでテーブルの切替えを再試行して別のテーブルからキー値を取得することはサポートされていません。

複数の get 操作で取得できるキーの数に制限はありませんが、結果を格納するための 128MB のメモリー制限があります。

範囲クエリー

範囲クエリーの場合、daemon_memcached プラグインでは次の比較演算子がサポートされます: <, >, <=, >=。 演算子の前に@記号を付ける必要があります。 範囲クエリーで複数の一致するキーと値のペアが見つかった場合、結果はキーと値のペアの順序で返されます。

次の例は、範囲クエリーのサポートを示しています。 この例では、新しいテーブルとカラムのマッピングの作成 で説明されている test.city テーブルを使用します。

Press CTRL+C to copy
mysql> SELECT * FROM test.city; +---------+-----------+-------------+---------+-------+------+--------+ | city_id | name | state | country | flags | cas | expiry | +---------+-----------+-------------+---------+-------+------+--------+ | B | BANGALORE | BANGALORE | IN | 0 | 1 | 0 | | C | CHENNAI | TAMIL NADU | IN | 0 | 0 | 0 | | D | DELHI | DELHI | IN | 0 | 0 | 0 | | H | HYDERABAD | TELANGANA | IN | 0 | 0 | 0 | | M | MUMBAI | MAHARASHTRA | IN | 0 | 0 | 0 | +---------+-----------+-------------+---------+-------+------+--------+

telnet セッションを開きます:

Press CTRL+C to copy
telnet 127.0.0.1 11211 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'.

B より大きいすべての値を取得するには、get @>B を入力します:

Press CTRL+C to copy
get @>B VALUE C 0 21 CHENNAI|TAMIL NADU|IN VALUE D 0 14 DELHI|DELHI|IN VALUE H 0 22 HYDERABAD|TELANGANA|IN VALUE M 0 21 MUMBAI|MAHARASHTRA|IN END

M より小さいすべての値を取得するには、get @<M を入力します:

Press CTRL+C to copy
get @<M VALUE B 0 22 BANGALORE|BANGALORE|IN VALUE C 0 21 CHENNAI|TAMIL NADU|IN VALUE D 0 14 DELHI|DELHI|IN VALUE H 0 22 HYDERABAD|TELANGANA|IN END

M 以下のすべての値を取得するには、get @<=M を入力します:

Press CTRL+C to copy
get @<=M VALUE B 0 22 BANGALORE|BANGALORE|IN VALUE C 0 21 CHENNAI|TAMIL NADU|IN VALUE D 0 14 DELHI|DELHI|IN VALUE H 0 22 HYDERABAD|TELANGANA|IN VALUE M 0 21 MUMBAI|MAHARASHTRA|IN

B より大きく、M より小さい値を取得するには、get @>B@<M を入力します:

Press CTRL+C to copy
get @>B@<M VALUE C 0 21 CHENNAI|TAMIL NADU|IN VALUE D 0 14 DELHI|DELHI|IN VALUE H 0 22 HYDERABAD|TELANGANA|IN END

最大 2 つの比較演算子を解析できます。1 つは次より小さい (@<) 演算子または次以下 (@<=) 演算子で、もう 1 つは次より大きい (@>) 演算子または次以上 (@>=) 演算子です。 追加の演算子はキーの一部とみなされます。 たとえば、3 つの演算子を使用して get コマンドを発行すると、3 つ目の演算子 (@>C) はキーの一部として扱われ、get コマンドは M より小さく B@>C より大きい値を検索します。

Press CTRL+C to copy
get @<M@>B@>C VALUE C 0 21 CHENNAI|TAMIL NADU|IN VALUE D 0 14 DELHI|DELHI|IN VALUE H 0 22 HYDERABAD|TELANGANA|IN