首页 > 系统相关 >记.Net Core Host服务使用Dapper内存溢出问题

记.Net Core Host服务使用Dapper内存溢出问题

时间:2024-09-25 12:36:40浏览次数:16  
标签:Core 缓存 Host 内存 Dapper csv Net 溢出

背景

项目要做一个数据迁移,牵扯大概60多张表,几千万数据,这些数据都被放到了csv文件中并拆分成了10w条记录一个文件。

思路是使用.Net Core Host开一个线程去读取文件夹csv根据业务导入到表就可以。

ps:第一次用Dapper做这种处理

问题

在导入过程中,因为我们的服务器内存只有8G。经常跑一会服务器就内存溢出了。

因为我们开始的设计就是一个csv导入完成,释放,第二个csv加载,应该不会有内存溢出问题。

我们一开始怀疑是不是csv数据读取到内存没有释放,也怀疑过Cli的虚拟内存占用问题。

调查

没办法,直接上工具查内存。一查结果是SQLMapper有个缓存。

原因

Dapper 使用一个内部缓存来存储 SQL 查询和相应的命令类型,以提高性能。但是,如果查询非常频繁且各不相同,这个缓存可能会占用大量内存。

为了防止内存溢出,需要手动调用 SqlMapper.PurgeQueryCache() 方法来清理缓存

结论

怎么说呢,第一次用Dapper不知道有这个东西,开始从来没怀疑过Dapper也是EF用的太多了,从来没注意过有缓存释放这种说法。

标签:Core,缓存,Host,内存,Dapper,csv,Net,溢出
From: https://www.cnblogs.com/MrChuJiu/p/18431081

相关文章