内存连接器¶
内存连接器将所有数据和元数据存储在工作节点的 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 语句
限制¶
当一个工作节点发生故障或重启时,存储在其内存中的所有数据都将永远丢失。为了防止静默数据丢失,该连接器在对这种损坏的表进行任何读取访问时都会生成错误。
当查询在写入内存表期间由于任何原因而失败时,该表将处于未定义状态。应手动删除此类表并重新创建。从这些表中读取可能会失败或可能返回部分数据。
当协调器发生故障或重启时,所有关于表的元数据都将丢失。表的数据仍然存在于工作节点上,但这些数据不可访问。
该连接器将无法与多个协调器一起正常工作,因为每个协调器都有不同的元数据。