【问题标题】:Oracle and MS SQL Query very slow over VPN通过 VPN 的 Oracle 和 MS SQL 查询非常慢
【发布时间】:2020-04-04 18:04:12
【问题描述】:

我有一个将Oracle Driver 用于 Oracle Database 12c 企业版 12.1.0.2.0 64 位的 C# 程序。 在 LAN 上,程序中的选择大约需要 2 秒。如果我通过 VPN 隧道建立连接,则相同的选择大约需要 48 秒。
如果我 ping 数据库:
局域网:0.206 毫秒
VPN:53 毫秒

为了确保我也使用 Oracle SQL Developer 19.2.1 进行了测试,结果大致相同。

我尝试在客户端将 MTU 降低到 1400,因为一些网站提到碎片是问题的原因,但这并没有改变任何东西,至少在我配置它的方式上。这可能是什么原因造成的?

【问题讨论】:

  • 您的对象有多大,选择了多少?这可能是带宽问题。另外,你用的是什么VPN?您是在内部托管自己的还是公共/商业的?
  • 我不太清楚你所说的对象是什么意思?我选择了 14 个字段,结果大约有 52K 行。我们使用 OpenVPN。我的 GUI 版本是 11.10.0.0,服务器位于内部。在日志中显示 OpenVPN 2.4.6 x86_64-w64-mingw32; OpenSSL 1.1.0h 如果我尝试选择空结果:LAN:0,001 秒,VPN:0,04 到 0,09 秒
  • 从您的问题和评论中,我们看到您的 VPN 比非 VPN 连接慢了大约 50 倍,因此您很幸运能从 2 秒缩短到 48 秒,而不是 100 秒。可以肯定,尝试获取有关网络活动的会话统计信息,它会告诉您发送和等待数据所花费的时间。
  • 处理查询和获取数据所需的 SQL*Net 往返次数加剧了网络延迟。最小化网络延迟的一种方法是确保将 C# 程序中的数组获取大小设置为较大的数字。假设它是 10,那么您需要 5、200 次网络往返才能返回 52,000 行。而如果将其设置为 5,000,则您只需要 11 次以上的网络往返。
  • @k4yaman 谢谢你的来信。我已经发布了答案。

标签: c# sql-server oracle networking vpn


【解决方案1】:

处理查询和获取数据所需的 SQL*Net 往返次数加剧了网络延迟。最小化网络延迟的一种方法是确保将 C# 程序中的数组 fetch size 设置为一个较高的数字。假设它是 10,那么您需要 5,200 次网络往返才能返回 52,000 行。而如果将其设置为 5,000,则您只需要 11 次网络往返。

对于 MS SQL 数据库,Packet size 可用于连接字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-28
    • 1970-01-01
    • 2012-06-28
    • 1970-01-01
    相关资源
    最近更新 更多