メモリコネクタ

メモリコネクタは、すべてのデータとメタデータをワーカーの RAM に保存し、Presto の再起動時に両方が破棄されます。

設定

メモリコネクタを設定するには、次の内容でカタログプロパティファイル etc/catalog/memory.properties を作成します。

connector.name=memory
memory.max-data-per-node=128MB

memory.max-data-per-node は、各ノードにこのコネクタに格納されるページのメモリ制限を定義します (デフォルト値は 128MB です)。

メモリコネクタを使用してテーブルを作成します。

CREATE TABLE memory.default.nation AS
SELECT * from tpch.tiny.nation;

メモリコネクタのテーブルにデータを挿入します。

INSERT INTO memory.default.nation
SELECT * FROM tpch.tiny.nation;

メモリコネクタから選択します。

SELECT * FROM memory.default.nation;

テーブルを削除します。

DROP TABLE memory.default.nation;

SQL サポート

メモリコネクタを使用すると、メモリ内のテーブルとスキーマのクエリと作成ができます。サポートされている SQL 操作の例を次に示します。

CREATE SCHEMA

default1 という名前の新しいスキーマを作成します。

CREATE SCHEMA memory.default1;

CREATE TABLE

default1 スキーマに my_table という名前の新しいテーブルを作成します。

CREATE TABLE memory.default1.my_table (id integer, name varchar, age integer);

INSERT INTO

my_table テーブルにデータを挿入します。

INSERT INTO memory.default1.my_table (id, name, age) VALUES (1, 'John Doe', 30);

SELECT

my_table テーブルからデータを選択します。

SELECT * FROM memory.default1.my_table;

DROP TABLE

既存のテーブルを削除するには

DROP TABLE memory.default.nation;

注記

DROP TABLE を使用した後、メモリはすぐに解放されません。メモリコネクタへの次の書き込みアクセス後に解放されます。

メモリコネクタの制限事項

次の SQL ステートメントはサポートされていません

制限事項

  • 1つのワーカーが失敗または再起動すると、そのメモリに格納されているすべてのデータは永久に失われます。サイレントなデータ損失を防ぐために、このコネクタは、破損したテーブルへの読み取りアクセス時にエラーを生成します。

  • メモリテーブルへの書き込み中にクエリが何らかの理由で失敗した場合、テーブルは未定義の状態になります。このようなテーブルは手動で削除して再作成する必要があります。このようなテーブルからの読み取りは失敗するか、一部のデータを返す場合があります。

  • コーディネーターが失敗または再起動すると、テーブルに関するすべてのメタデータが失われます。テーブルのデータはワーカーにまだ存在しますが、そのデータにはアクセスできません。

  • 各コーディネーターは異なるメタデータを持っているため、このコネクタは複数のコーディネーターでは正しく機能しません。