メモリコネクタ¶
メモリコネクタは、すべてのデータとメタデータをワーカーの 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つのワーカーが失敗または再起動すると、そのメモリに格納されているすべてのデータは永久に失われます。サイレントなデータ損失を防ぐために、このコネクタは、破損したテーブルへの読み取りアクセス時にエラーを生成します。
メモリテーブルへの書き込み中にクエリが何らかの理由で失敗した場合、テーブルは未定義の状態になります。このようなテーブルは手動で削除して再作成する必要があります。このようなテーブルからの読み取りは失敗するか、一部のデータを返す場合があります。
コーディネーターが失敗または再起動すると、テーブルに関するすべてのメタデータが失われます。テーブルのデータはワーカーにまだ存在しますが、そのデータにはアクセスできません。
各コーディネーターは異なるメタデータを持っているため、このコネクタは複数のコーディネーターでは正しく機能しません。