Azure SQL 数据库与表存储的 session 状态

标签 azure azure-sql-database azure-table-storage

我在此处以及其他帖子和论坛上读到,在 Azure 中保存 session 状态的最佳位置是 AppFabric 缓存,但我发现这非常昂贵,并且想尝试使用表存储或 SQL 数据库。

我读到 SQL 数据库会更快,但我不明白为什么会这样。当然,SQL 数据库会将热数据缓存在内存中,但我希望表存储也能做到这一点(是吗?)。否则我不明白为什么 SQL 数据库在检索行时会比表存储更快,最终两者都只是根据键从本地磁盘检索数据。我什至期望,因为表存储可以很好地自动扩展(相对于需要手动分区的 SQL 数据库),所以它会更好,因为 session 状态不适合本地缓存。

有人对此有任何经验或意见吗?

谢谢 查尔斯

最佳答案

您提到了 AppFabric Cache,这是一项已退役的服务。关于 SQL 与 Table:这个问题并没有真正正确的答案。如果您想要启动一个 SQL 数据库实例(基本层数据库每月运行费用约为 2.50 美元),您将有 2GB 的空间可供使用。使用表存储,您将为相同的存储支付大约 0.15 美元。然后是 Redis 缓存、您自己的缓存(例如 memcached)、Azure 托管缓存服务等。在性能方面,您需要进行一些基准测试来了解每个缓存的性能。其中任何一个都可以与虚拟机、云服务(Web/ worker 角色)和网站一起使用,因为它们都具有定义良好的 API,并且如果使用 ASP.NET MVC,还可以提供良好的提供商支持。每个都有不同的容量限制和不同的定价。

表存储的一个特点是:每个实体(行)限制为 1MB,因此如果您尝试为每个缓存条目缓存 > 1MB,则需要考虑其他选项。

@Gaurav 提到了角色内缓存。这是在 Web/辅助角色实例中使用额外内存的好方法。但是:它仅限于 Web/Worker 云服务;它对网站或虚拟机没有帮助。对于这些,您确实需要某种类型的独立缓存提供程序。

关于Azure SQL 数据库与表存储的 session 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23911003/

相关文章:

sql-server - 如何从恢复的数据库中替换数据库的表

c# - 将所有行复制到 Azure 表存储中的另一个表

azure - SSMS 2014 无法将数据库部署到 SQL Azure

azure - 获取 Log Analytics 主键

c# - 将 AcquireTokenAsync 与 UserCredential 结合使用时未知的用户类型

azure - ASP.NET Core 应用程序在发布到 Azure 后无法运行

azure - 如何删除源数据集 (JSON) 中的重复项并将数据加载到 azure 数据工厂中的 azure SQL DB

sql-server - SQL Azure 和 Azure 表存储如何比较?

mongodb - Azure 表与 Azure 上的 MongoDB

.net - 分片数据库的 ID 生成(Azure 联合数据库)