代码之家  ›  专栏  ›  技术社区  ›  Daniil Solodukhin

Oracle DB非常慢的网络交互

  •  0
  • Daniil Solodukhin  · 技术社区  · 7 年前

    我的Oracle DB网络速度有问题。

    首先,问题的本质是什么。我的计算机上有java应用程序,远程服务器上有Oracle DB。它们之间的连接速度约为2,5MB/s。我在java应用程序中执行 一个非常简单的查询,如“select id,name from table\u name”,结果集包含约60K行(大小约为1,5 Mb),并传输到我的应用程序约80秒。因此,对于探查器来说,应用程序大部分时间都花在oracle上。网小包裹接收方法。

    为了进行比较,相同的查询在SQL Developer中对5000行执行0,5-0,7秒。外推到60K行,我们大约有6-8秒。

    为我的应用程序执行tcpdump的结果表明,数据以大约200字节大小的块进行传输。另一方面,对于SQL开发人员,tcpdump显示的包大小超过2000字节。

    Oracle官方文档建议增加SDU和TDU参数,不幸的是,我无法更改数据库的配置,所以我尝试在客户端以这样的方式确定它们:

    jdbc:oracle:thin:@(DESCRIPTION=(SDU=11280)(TDU=11280)(ADDRESS=(PROTOCOL=tcp)(HOST=<host>)(PORT=1521)(SEND_BUF_SIZE=11784)(RECV_BUF_SIZE=11784))(CONNECT_DATA=(SERVICE_NAME=<db>)))
    

    但这并没有带来任何变化。数据库或ojdbc驱动程序是否可以忽略此参数?或者我走错了路?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Daniil Solodukhin    7 年前

    事实证明,原因在于取数大小。增加其值可以将执行时间减少约100倍。