暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 99% 等待时间SQL * Net更多数据到客户端

ASKTOM 2020-01-21
356

问题描述

你好,团队,

我们正在通过网络和SQL * Net传输400万记录更多的数据到客户端是99% 的。我们尝试了多个驱动程序,如ODBC,OLEDB,Oracle驱动程序,QlikSense应用程序Oracle驱动程序,但 % 没有降低。

我们已经测试了我们的网络和65k数据包,它花了0.687毫赛克。总体而言,按照n/w团队的要求,这很好。

查询在33秒内完成,传输需要18分钟。

当我们的N/w团队和应用程序团队用尽了所有想法时,请建议一种减少SQL * Net更多数据到客户端的百分比的方法。

我敢肯定,你们可能遇到了多个案件。任何要看的指针/区域。

以下是列数据大小

NVARCHAR2(36个字符)
数字 (38,0)
NVARCHAR2(36个字符)
NVARCHAR2(1000字符)
NVARCHAR2(36个字符)
NVARCHAR2(255字符)
号码 (1,0)
VARCHAR2(255字节)
NVARCHAR2(100字符)
NVARCHAR2(255字符)
NVARCHAR2(1000字符)


提前谢谢。

专家解答

检查驱动程序的数组获取大小。这控制客户端在每个请求上获取多少行。默认值通常很低。

当将其设置为较小的值时,大部分时间用于发送和接收下一批N行的请求。

例如,在SQL * Plus中,使用获取1000行

* arraysize 1 => 超过30秒
* arraysize 1000 => 1秒以下

create table t (
  c1 int
);

insert into t 
with rws as (
  select level x from dual
  connect by level <= 1000
)
  select x from rws;
  
commit;

select count(*) from t;

set timing on
set feed only
set arraysize 1

select /*arr 1*/* from t;

1000 rows selected.

Elapsed: 00:00:33.55

set arraysize 1000

select /*arr 1000*/* from t;

1000 rows selected.

Elapsed: 00:00:00.46

文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论