【问题标题】:Asp.net Core 2.2 Store entire DB table in memory EF CoreAsp.net Core 2.2 将整个数据库表存储在内存中 EF Core
【发布时间】:2019-05-07 02:45:23
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    将它们放在内存中并不是一个好主意。您可能已经在 azure 中使用共享资源,因此这会影响性能。不确定您的限制,但我可以提出以下建议。

    放大

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

    查询优化

    如果您还没有,请进行查询优化。寻找最佳实践。

    读取副本

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

    缓存

    你可以考虑像 Redis 这样的分布式缓存。取决于你的桌子,例如如果它正在查找数据,那么让它使用缓存模式按需构建。

    NoSQL/数据仓库

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-28
      • 1970-01-01
      • 2018-09-25
      • 2016-10-25
      • 2019-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多