Asp.net Core 2.2将整个数据库表存储在内存EF Core中

时间:2019-05-07 02:45:24

标签: sql-server azure asp.net-core memorycache ef-core-2.2

我有一个asp.net core 2.2应用程序托管为azure应用程序服务。这偶尔会收到大量的突发流量。许多资源都用于验证邮政编码。对邮政编码表的查询均为选择。没有更新或插入。这些查询是性能瓶颈。桌子本身约为700mb。我一直在寻找一种在启动时将此特定表存储在内存中的方法,可能将其作为单独的db上下文。是否可以在启动时用连接到SQL DB的主上下文中的数据填充此辅助db上下文?这是一个坏主意吗?

1 个答案:

答案 0 :(得分:1)

将它们放入内存不是一个好主意。您可能已经在天蓝色使用共享资源,因此这将影响性能。不知道您的限制,但我可以建议以下内容。

向上扩展

,如果您可以尝试扩大数据库实例。肯定会有所帮助。

查询优化

如果尚未进行查询优化,请进行。寻找最佳实践。

只读副本

如果您的表是跨国数据库的一部分,则可以创建只读副本。只读副本已针对读取查询进行了优化。

缓存

您可以考虑像Redis这样的分布式缓存。取决于您的桌子如果要查找数据,则使用备用缓存模式按需建立数据。

NoSQL /数据仓库

RDBMS的性能受许多因素影响。在跨国数据库中访问如此庞大的数据将仍然是一个挑战。如果您的业务案例允许,则可以使用NoSQL数据存储或数据仓库解决方案。