【问题标题】:Multi Statement Request vs separted insert in TeradataTeradata 中的多语句请求与分隔插入
【发布时间】:2021-04-30 08:39:48
【问题描述】:

多语句请求是否比 teradata 中的多个单独请求更高效?

我有一个大型机作业,它提供一个实际上是多语句请求的 bteq 脚本,如下例所述:

   insert into table (col1, col2, col3) values (val1,val2,val3)
 ; insert into table (col1, col2, col3) values (val4,val5,val6)
 ; insert into table (col1, col2, col3) values (val7,val8,val9);
 

我的问题是我应该为 Multi Statement Request 保留这一项工作,还是将它分成每个 insert 的多项工作?哪种方式性能更好?

提前致谢。

【问题讨论】:

  • 一次插入三行应该比三个单独的inserts 更快。每个执行的命令都有一些开销。
  • @GordonLinoff 感谢您的评论,所以我应该保留一份工作,而不是分开的请求和工作
  • 正如 Gordon 所写,执行三个单独的插入需要三个往返 DBMS 而一个用于 MSR。对于像单行插入这样非常短的查询,MSR 会快得多。

标签: sql performance teradata jobs mainframe


【解决方案1】:

如果您使用的是 BTEQ,您可以使用 .REPEAT/PACK 命令执行批量/批量插入操作。一个例子:

.set sessions 5
.logon ...
.import vartext ',' file = \\your\file\path\somefile.csv;
.repeat * pack 100
using (val1 integer, val2 varchar(20),val3 varchar(10))
insert into table (col1, col2, col3)
values(val1, val2, val3);

使用适当的实用程序(如 fastload 或 TPT)更好,但如果没有任何方法,您可以将插入内容塞入单个请求中,您的情况会更好。

【讨论】:

    猜你喜欢
    • 2019-02-05
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-05
    相关资源
    最近更新 更多