开发者社区 问答 正文

MPP计算引擎  INSERT FROM SELECT语法是什么?



基本语法


MPP计算引擎模式下,INSERT FROM SELECT的基本语法与LM计算引擎模式一致,请参考“4.2.3 INSERT FROMSELECT语法”章节。

多种引擎模式下的执行


在MPP模式下,INSERT FROM SELECT支持两种执行方式:

  • SELECT部分的查询走MPP模式,数据批量返回FRONTNODE节点,以批量的方式发起实时数据INSERT,默认一批的记录数为100条:
  1. /*+engine=MPP*/INSERT INTO db_name.target_table_name (col1, col2, col3)
  2. SELECT col1, col2, col3 FROM db_name.source_table_name
  3. WHERE col4 = 'xxx';
  • 上述模式中,所有数据由FRONTNODE节点单点写入,并发度受限,为提高并发度,还有一种模式为Native MPP INSERT fromSELECT,数据写入节点直接由多个worker节点并发完成,每次batch一批的记录数还是100条, 通过指定mppNativeInsertFromSelect=true 的hint走这种模式:
  1. /*+engine=MPP, mppNativeInsertFromSelect=true*/INSERT INTO db_name.target_table_name (col1, col2, col3)
  2. SELECT col1, col2, col3 FROM db_name.source_table_name
  3. WHERE col4 = 'xxx';

展开
收起
nicenelly 2017-10-31 13:17:03 2222 分享 版权
阿里云 AI 助理回答

您提到的是关于在MPP(Massively Parallel Processing)计算引擎模式下,使用INSERT FROM SELECT语句进行数据插入的基本语法和执行方式的描述。这里主要涉及到了阿里云MaxCompute(原名ODPS)或类似大数据处理平台中的数据操作。下面我将根据您的描述,进一步解释这两种执行方式:

基本语法回顾

在MPP计算引擎模式下,INSERT FROM SELECT语句的基本用法与传统的SQL语法相似,用于从一个表(或视图、查询结果)中选择数据并插入到另一个表中。其基本格式如下:

/* engine=MPP*/
INSERT INTO db_name.target_table_name (col1, col2, col3)
SELECT col1, col2, col3 
FROM db_name.source_table_name
WHERE col4 = 'xxx';

这段代码表示从source_table_name表中选择满足条件col4 = 'xxx'的记录,然后将这些记录的col1, col2, col3列插入到target_table_name表中。

执行方式说明

1. 默认MPP模式下的批量写入

  • 描述: 在默认情况下,SELECT部分的查询会在MPP模式下执行,意味着查询会并行地在多个节点上运行以加速处理。查询结果会被批量返回至FRONTNODE节点,然后FRONTNODE以每批100条记录的方式发起实时数据插入操作。
  • 特点: 这种方式的并发度受限于FRONTNODE的处理能力,因为所有数据都是由FRONTNODE单点写入的。

2. Native MPP INSERT from SELECT模式

  • 启用方式: 通过在SQL语句前添加特定的提示(hint)mppNativeInsertFromSelect=true来启用此模式。
  • 描述: 此模式下,数据写入不再依赖于单一的FRONTNODE,而是直接由参与查询的多个worker节点并发完成。这意味着每个worker节点都会独立地将自己处理的数据批次直接写入目标表,从而显著提高了数据插入的并发度和效率。
  • 示例:
    /* engine=MPP, mppNativeInsertFromSelect=true*/
    INSERT INTO db_name.target_table_name (col1, col2, col3)
    SELECT col1, col2, col3 
    FROM db_name.source_table_name
    WHERE col4 = 'xxx';
    
  • 特点: 提高了数据插入的并行处理能力,减少了FRONTNODE的压力,适合大规模数据迁移或插入场景,能够更高效地利用MPP架构的并行处理优势。

总结

在使用阿里云MaxCompute或其他支持MPP架构的大数据处理服务时,了解并合理选择INSERT FROM SELECT的不同执行模式对于提升数据处理效率至关重要。默认模式适用于较小规模或对并发要求不高的场景,而Native MPP模式则更适合需要高并发写入的大数据处理任务。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答