【问题标题】:dapper.net releasing cached memorydapper.net 释放缓存的内存
【发布时间】:2016-07-05 08:03:27
【问题描述】:

我是 dapper 的新手(实际上即将使用它)。我想知道它是如何工作的。它缓存了一些结果,因此稍后获取它会更快。在 github 页面上,它没有说明释放内存的任何内容。我知道这个 nuget 的性能,但是内存溢出或某事没有任何危险吗?缓存的内存有时会以某种方式释放吗?

【问题讨论】:

  • "它缓存了一些结果,所以稍后获取它会更快。" - 不,它没有;它为您的查询和结果 shape 缓存元编程的结果。它从不缓存实际结果。

标签: .net caching memory orm dapper


【解决方案1】:

由于查询量大,Web 层的 CPU 经常达到 100%。每秒有数百个调用,从 LINQ 到 SQL 的 CPU 开销为每个调用构建一个动态方法给 Web 服务器带来了太多的负担。

为了解决这个问题,Dapper.Net 缓存了每个查询的信息。这种全面的缓存有助于它从查询中生成对象的速度大约是 LINQ to SQL 的两倍。目前缓存由两个 ConcurrentDictionary 对象处理,这些对象永远不会被清除。未来缓存算法可能会使用 LRU 缓存来降低内存压力。

【讨论】:

  • 那些词典的清理中可能有很大的一笔——它在我的清单上
  • 可能是,但我会推荐 dapper 而不是其他 ORM
  • EF Core 6 现在可与 dapper 相媲美。我还要注意,如果你没有用错的话,dapper 很棒。动态字符串中的一个简单错误,您就会留下泄漏的系统。 docs.microsoft.com/en-us/ef/core/what-is-new/ef-core-6.0/…
猜你喜欢
  • 1970-01-01
  • 2020-09-25
  • 2011-01-10
  • 2012-03-15
  • 2016-05-07
  • 2021-07-14
  • 1970-01-01
  • 2011-05-10
  • 1970-01-01
相关资源
最近更新 更多