内存连接器

内存连接器将所有数据和元数据存储在工作节点的 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 语句

限制

  • 当一个工作节点发生故障或重启时,存储在其内存中的所有数据都将永远丢失。为了防止静默数据丢失,该连接器在对这种损坏的表进行任何读取访问时都会生成错误。

  • 当查询在写入内存表期间由于任何原因而失败时,该表将处于未定义状态。应手动删除此类表并重新创建。从这些表中读取可能会失败或可能返回部分数据。

  • 当协调器发生故障或重启时,所有关于表的元数据都将丢失。表的数据仍然存在于工作节点上,但这些数据不可访问。

  • 该连接器将无法与多个协调器一起正常工作,因为每个协调器都有不同的元数据。