gpt4 book ai didi

c# - NCache 查询性能问题

转载 作者:行者123 更新时间:2023-11-30 17:55:48 27 4
gpt4 key购买 nike

我正在评估 NCache 在正在进行的项目中作为“通读”缓存的使用情况 - 以减轻 SQL Server 的负载。
在客户端,该项目有一个轮询例程,该例程接收按上次轮询日期时间过滤(在服务器端)的项目。
轮询在单独的线程中以固定间隔发生。
客户端伪代码
1)第一次获取:

  1. 获取所有现有项目
  2. LastHandledDate设置为现在

2) 非第一次获取(轮询线程)

  1. 获取在 LastHandledDate 之后创建的现有项目
  2. 更新 LastHandledDate 到现在

在服务器端,当收到轮询查询时,执行以下伪代码:

  1. 在 NCache 中查询 CreationDate>= LastHandledDate 的所有匹配项目
  2. IF查询结果为空
    1. 在 SQL 数据库中查询所有符合 CreationDate>= LastHandledDate 的项目
    2. 如果查询不为空则用 SQL 查询结果更新 NCache
    3. 返回SQL查询结果
  3. >ELSE 返回NCache 查询结果

要查询 NCache,我使用它的 linq 提供程序,查询类似于 SQL 查询:

SELECT * FROM Messages WHERE Message.SessionId = 1234 AND Message.EntryDate >= ‘2012-10-6’

编辑:在测试期间,在客户端有一个以恒定速率添加新项目的线程

服务器端部分托管在网络服务(IIS 中的 WCF)中。
在使用 100 个客户端对上述轮询设置进行大约一个小时的负载测试后,我注意到 Web 服务执行的每秒请求数稳步下降。

运行上述设置,仅从 NCache 读取,完全没有 SQL 读取(服务器端伪代码中没有段落 2)产生相同的请求/秒下降模式。

我有几个问题:

  • NCache 的查询性能似乎取决于缓存中的对象总数。类似的解决方案(NoSQL/分布式缓存)是否属于这种情况
  • 哪种 NoSQL/分布式缓存解决方案针对查询速度进行了优化?
  • 也许在 NCache 中可以以某种方式更优化查询?
  • 也许我遗漏了什么 - 我的分布式缓存使用模式不正确 - 我如何才能在我的用例中有效地使用分布式缓存(如 NCache)?

最佳答案

尝试为您的类(class)使用查询索引

我在缓存中使用 10 万个项目(每个大约 250kb 大小)并且没有任何性能问题。

关于c# - NCache 查询性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14712779/

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