gpt4 book ai didi

delphi - AdoQuery 如何处理 blob?

转载 作者:行者123 更新时间:2023-12-01 22:22:06 25 4
gpt4 key购买 nike

我正在测试一些数据库组件,例如 SDAC 等,我发现了一些有趣的东西:

当我使用 TADOQuery 执行查询并且该查询有很多 blob 字段并且我获取所有行 (fetchall) 时,我的应用程序的内存接近 1.8 GB 一切正常。

使用其他组件,在同一数据库上执行的同一查询会引发内存不足异常,因为它超过了 1.8GB 的​​内存使用量。

我知道我不应该返回所有这些行,我应该使用分页和 blablabla。但我很好奇 ADO 如何设法获取所有行而其他组件却不能。

我认为 ADO 正在压缩内存中的 blob,但这只是一个猜测。

有谁知道为什么 ADO 中的内存使用率这么好?

最佳答案

我不能说关于SDAC,但会说关于AnyDAC TAD查询:

  • 如果从 FetchOptions 中排除 fiBlob。 Items ,那么 AnyDAC 将不会立即获取 BLOB 值。但会推迟获取,直到应用程序真正需要 BLOB 值;
  • 设置格式选项。 InlineDataSize设置为更小的值,将减少获取具有多个字符字段的大型结果集时的内存使用量;
  • 指定格式选项。 MapRules ,应用程序可以选择更紧凑的数据类型表示。

此外,还有一些其他技术可以在获取大型结果集时减少内存使用。为了正确使用它们,开发人员应该知道将返回什么类型的数据。使用某些选项的代价可能是稍微降低获取性能。

关于delphi - AdoQuery 如何处理 blob?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8823284/

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