欢迎访问 OceanBase 官网获取更多信息:https://www.oceanbase.com/
INSERT INTO SELECT 语句通过 Hint 使用 append 加上 enable_parallel_dml 来走旁路导入。
使用限制
- 只支持 PDML(Parallel Data Manipulation Language,并行数据操纵语言),非 PDML 不能用旁路导入。
- 不能两个语句同时写一个表,因为导入的过程中会先加表锁。
- 不支持在触发器(Trigger)使用。
- 支持
lob类型,但是性能比较差,lob会走原来事务写入数据的路径。 - 不能在多行事务中运行。
语法
INSERT INTO /*+ append enable_parallel_dml parallel(N) */ table_name select_sentence
更多 INSERT INTO 语法的信息,请参见 INSERT(MySQL 模式) 和 INSERT(Oracle 模式)。
参数解释:
| 参数 | 描述 |
|---|---|
| append | 表示走旁路导入。 |
| enable_parallel_dml parallel(N) | 加载数据的并行度,N 默认为 4。说明 |
示例
使用旁路导入将表 tbl2 中的部分数据导入到 tbl1 中。
obclient [test]> SELECT * FROM tbl1;
Empty set
obclient [test]> SELECT * FROM tbl2;
+------+------+------+
| col1 | col2 | col3 |
+------+------+------+
| 1 | a1 | 11 |
| 2 | a2 | 22 |
| 3 | a3 | 33 |
+------+------+------+
3 rows in set
obclient [test]> INSERT INTO /*+ append enable_parallel_dml parallel(16) */ tbl1 SELECT t2.col1,t2.col3 FROM tbl2 t2;
Query OK, 3 rows affected
Records: 3 Duplicates: 0 Warnings: 0
obclient [test]> SELECT * FROM tbl1;
+------+------+
| col1 | col2 |
+------+------+
| 1 | 11 |
| 2 | 22 |
| 3 | 33 |
+------+------+
3 rows in set
在 EXPLAIN EXTENDED 语句的返回结果的 Note 中,查看是否通过旁路导入写入的数据。
obclient [test]> EXPLAIN EXTENDED INSERT INTO /*+ append enable_parallel_dml parallel(16) */ tbl1 SELECT t2.col1,t2.col3 FROM tbl2 t2;
欢迎访问 OceanBase 官网获取更多信息:https://www.oceanbase.com/
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




