gpt4 book ai didi

caching - ColdFusion 的 cfquery 静默失败

转载 作者:行者123 更新时间:2023-12-04 19:12:58 24 4
gpt4 key购买 nike

我有一个检索大量数据的查询。

<cfsetting requesttimeout="9999999" >

<cfquery name="randomething" datasource="ds" timeout="9999999" >
SELECT
col1,
col2
FROM
table
</cfquery>

<cfdump var="#randomething.recordCount#" /> <!---should be about 5 million rows --->

我可以使用 python 的 cx_Oracle 并使用 sys.getsizeof 成功检索数据在 python 列表上返回 22621060,所以大约 21 兆字节。

ColdFusion 不会在页面上返回错误,而且我在任何日志中都找不到任何内容。为什么是 cfdump没有显示行数?

附加信息

这样做的原因是因为我有大约 8000 个较小的查询要针对 randomthing 运行。询问。换句话说,当我对数据库运行这 8000 次查询时,该过程需要数小时才能完成。我怀疑这是因为我正在与其他几个数据库用户竞争,并且数据库陷入困境。

8000 个较小的查询在 col2 期间获得 col1 的计数。
SELECT 
count(col1) as count
WHERE
col2 < 20121109
AND
col2 > 20121108

根据 Adam Cameron's suggestions .
  • cflog 表明查询未完成。
  • 我尝试在代码和 CFIDE/管理员中更改查询超时,apparently CF9 no long respects the timeout attribute ,无论我尝试什么,我都无法使查询超时。

  • 我也开始玩 maxrows属性,看看我是否可以通过这种方式辨别任何信息。
  • 当 maxrows 设置为 1300000 时,一切正常
  • 当 maxrows 为 1400000 或更大时,我收到此错误
    enter image description here
  • 当 maxrows 为 2000000 时,我观察到我原来的问题

  • 更新

    所以这不是 cfquery 的限制。通过使用 QueryNew然后循环它以添加数据,我可以毫无问题地超过 200 万大关。

    我还使用 this question 中的信息创建了一个 ThinClient 数据源,我没有观察到任何行为变化。

    数据库端的消息是

    来自客户端的 SQL*Net 消息



    SQL*Net 向客户端提供更多数据

    我刚刚发现通过使用瘦客户端和 blockfactor1="100"我可以检索更多行(大约 3000000)。

    最佳答案

    有什么东西记录在数据库端吗?

    不知timeout没有受到尊重,并且 JDBC 在 DB 工作时“挂断”了它。这是一个疯狂的猜测。如果您设置了一个非常低的超时时间 - 例如:5 秒 - 会在 5 秒后出错,还是什么?

    浏览器也可能超时。说什么你在<cfquery>之前和之后写一些东西到日志中块,与 <cflog> .查看查询是否最终完成。

    我想知道一旦你将这些 22M 记录带回 CF,你打算用它们做什么。不管它是什么,在我看来,CF 是做任何事情的错误地方:CF 不是用于处理大量数据,而是用于制作网页。如果您需要处理 22M 记录,我怀疑您应该在数据库上进行。也就是说,我正在猜测你在做什么,没有任何信息可以继续,所以我认为可能有一个很好的理由去做。

    关于caching - ColdFusion 的 cfquery 静默失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13308456/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com