gpt4 book ai didi

c# - 当读取远高于写入时将计算值存储在数据库中

转载 作者:行者123 更新时间:2023-11-30 16:17:44 25 4
gpt4 key购买 nike

我发现自己面临一个难题,其答案可能不在我的专业知识范围内。我希望有人能提供帮助。

我有一个用于获取表(和链接)数据的优化且高效的查询,其实际内容并不重要。但是,每次读取数据时,都需要对其进行处理,以 JSON 格式呈现数据。正如我们正在讨论的典型示例,其中几百行可能有几十万行关联,这需要时间。使用多线程和强大的 CPU (i7 3960X),此处理在 100% CPU 时大约需要 400 毫秒 - 800 毫秒。我知道的不多,但为什么每次都要首先处理它?<​​/p>

在这个特定示例中,尽管我读过的所有内容都表明不这样做(据我所知),但我正在考虑将计算出的 JSON 存储在 VARCHAR(MAX) 列中以便快速阅读。

为什么?好吧,每次写入(更改)都会读取 100 次或更多次数据,在我看来,鉴于这些数字,存储 JSON 以优化检索并在奇怪的情况下重新计算和更新它会更好关联已更改 - 写入更改所需的时间可能会增加 10 到 20 毫秒,但会大大提高读取时间。

非常感谢您对此提出意见。

最佳答案

是的,出于性能原因存储冗余信息是很常见的。第一步是测量开销 - 听起来您已经这样做了(尽管我也会问:您使用的是什么 json 序列化程序?您尝试过其他的吗?)

但从根本上说,是的,没关系,只要情况允许。举个例子:stackoverflow 也有类似的场景——你输入的 markdown 处理成 html 的成本相对较高。我们可以在每次读取时都这样做,但是我们的读取疯狂多于写入,所以我们在写入时处理 Markdown ,并存储html 以及 source markdown - 那么对于大多数“显示”代码来说,它只是一个简单的“数据输入,数据输出”练习。

不过,如果这成为 json 的常见问题,那将是不寻常的,因为 json 序列化有点简单,并且大多数序列化程序都执行大量元编程优化。因此我建议在走这条路之前尝试不同的序列化程序。

另请注意,呈现的 json 可能需要比 TDS 中的原始源数据更多的网络带宽 - 因此数据库服务器和应用程序服务器之间的数据传输可能会增加;另一件事要考虑。

关于c# - 当读取远高于写入时将计算值存储在数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16811555/

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