Oracle MSSQL上的长时间运行查询

Oracle MSSQL上的长时间运行查询,oracle,sybase,mssql-jdbc,Oracle,Sybase,Mssql Jdbc,在我的团队中,我们需要经常连接到Oracle、Sybase和MSSQL。。。我们使用Oracle的SQLDeveloper 3.3.2版本连接所有3个(使用第三方LIB)。这个工具经常有一个问题,选择查询永远不会结束。。。即使我们得到结果,它也会继续运行。。。正因为如此,我们收到长时间运行查询的数据库警报 例如 从产品中选择* 如果产品有一百万条记录,那么SQLDeveloper将显示顶级记录,但在后台查询将继续运行 如何解决这个问题? 或 有更好的产品能满足我们的需要吗 您的查询-select

在我的团队中,我们需要经常连接到Oracle、Sybase和MSSQL。。。我们使用Oracle的SQLDeveloper 3.3.2版本连接所有3个(使用第三方LIB)。这个工具经常有一个问题,选择查询永远不会结束。。。即使我们得到结果,它也会继续运行。。。正因为如此,我们收到长时间运行查询的数据库警报

例如

从产品中选择*

如果产品有一百万条记录,那么SQLDeveloper将显示顶级记录,但在后台查询将继续运行

如何解决这个问题? 或
有更好的产品能满足我们的需要吗

您的查询-
select*from products
-要求数据库引擎向您的客户端应用程序发送数百万条记录(本例中为SQLDeveloper)

虽然SQLDeveloper(以及许多其他类似设计的GUI)将向您显示前30行(或50行、或100行等),但就数据库引擎而言,您仍然要求查看数百万行,因此您的查询将继续在数据库引擎中“运行”

例如,在Sybase ASE中,查询将显示“发送睡眠”状态,这意味着数据库引擎正在等待客户端应用程序请求下一批记录发送连接

要“解决”此问题,您有几个选项:

  • 使用SQLDeveloper:滚动浏览(即,在监视器上显示) 数百万行结果集的其余部分[可能不是您想要的 这样做;可能您没有时间/愿望点击“下一步”按钮 百分之一百[千次]

  • 在收到/查看第一组查询后终止查询 记录[不推荐,因为您可能会 “忘了”终止查询,从而赢得DBA的愤怒]

  • 编写您的查询,以仅收回您真正想要/需要查看的记录(例如,添加一个WHERE子句来限制行集)

  • 查看SQLDeveloper是否有任何类型的配置选项 自动终止任何“长时间运行”的查询[我不知道这是否是正确的 可在客户端应用程序中执行]

  • 查看DBA是否可以为您的登录配置资源限制(例如, 自动终止查询(如果运行时间超过XX秒)


如何解决这个问题?停止检索数百万条记录。这不太可能是您真正需要的。有时您只是在没有where子句的情况下运行查询。。。然后该工具继续在后台查询中运行…感谢您的解释。。。我只是想知道为什么我没有面对甲骨文的问题。。。这是因为SQLDeveloper也是由Oracle提供的吗?假设
产品
表的Oracle副本也有数百万行。。。我的猜测是,要么a)SQLDeveloper配置为在一段时间后自动终止基于Oracle的查询,要么b)Oracle数据库引擎根据资源限制发出自动终止。注意:我不与Oracle合作;我确实使用Sybase ASE,并且ASE资源限制必须由DBA明确设置。在oracle中,您可以看到完全相同的情况—在数据库的管道中—获取结果(一次50或100个),并且服务器进程一直坐在那里,直到您获取其余的记录。没有“自动终止此查询”功能