【问题标题】:Does Azure SQL Database support In Memory Optimized Tables?Azure SQL 数据库是否支持内存优化表?
【发布时间】:2023-03-30 05:41:01
【问题描述】:

我正在尝试查看 SQL Server 2014 和内存优化表以及它与 Power BI 的集成。我正在考虑将现有数据库(包含多个内存优化表)迁移到 Azure 的最佳方法是什么? Azure SQL 数据库是否支持内存优化表?

谢谢。

【问题讨论】:

  • 这个问题可能更适合 ServerFault,但是......如果您指的是“Hekaton”内存中 OLTP,那么今天 SQL Azure 数据库中不存在该功能(与安装在您的拥有自己的虚拟机,您可以做到)。
  • @David Makogon,感谢您的回答,我会考虑下一步该怎么做。
  • 我来自 SQL Azure 团队,我很想了解有关您的内存中 OLTP 方案的更多详细信息。听起来您经常使用 In-Memory OLTP。你能联系我分享更多细节吗? alainl (at) microsoft.com 谢谢。 /阿兰

标签: azure azure-sql-database sql-server-2014 in-memory


【解决方案1】:

截至 2020 年第四季度,Azure SQL 仅在几个定价层中支持内存中 OLTP(又名 MEMORY_OPTIMIZED)。 This is half-documented in this (hard to find) Azure SQL documentation page,另一半来自古老的博客文章和 Azure 门户中的反复试验。

(再次注意,这仅适用于“Azure SQL”,而不是在 VM 或托管实例服务中运行全脂 SQL Server)。

这是我制作的流程图:

  • 您使用的是 DTU 还是 vCore?
    • DTU:
      • 您使用的是 基本 层(5 个 DTU)吗?如果是,则不支持,不支持 In-Memory。
      • 您是否使用标准层(10-3000 DTU)?如果是,则不支持,不支持 In-Memory。
      • 您使用的是 Premium 层(125-4000 DTU)吗?如果是,那么是的,支持 In-Memory。
    • vCore:
      • 您使用的是通用层吗?如果是,则不支持,不支持 In-Memory。
      • 您使用的是 Hyperscale 层吗?如果是,则不支持,不支持 In-Memory。
      • 您是否在使用 业务关键 层?如果是,那么是的,支持 In-Memory。

您可以通过打开 SSMS、连接到您的数据库(您的实际数据库,而不是 master)并运行以下命令来了解您的数据库中是否启用了 MEMORY_OPTIMIZED 功能:

SELECT DatabasePropertyEx( DB_NAME(), 'IsXTPSupported' ) AS IsXTPSupported;

如果您收到 0,则您的数据库不支持 In-Memory OLTP。如果你得到1,那么它是受支持的。

如果您尝试执行CREATE TYPE dbo.Foo AS TABLE ( ... ) WITH ( MEMORY_OPTIMIZED = ON );,您将收到此错误:

消息 40536,第 16 级,状态 2,第 2 行
数据库的此服务层不支持“MEMORY_OPTIMIZED 表”。有关 Windows Azure SQL 数据库不同服务层的功能支持的更多详细信息,请参阅联机丛书。


Wrly,令我失望的是,尽管 Microsoft 一直在为内存中 OLTP 进行大肆宣传,但大多数 Azure SQL 客户无法使用它。更令人惊讶的是,In-Memory 旨在减少 IO 负担,这应该意味着 In-Memory OLTP 将降低微软自己的 Azure 运营成本。我猜他们正在等着看客户如何使用它。考虑到使用它所需的额外技术细节和对系统的透彻了解,客户最终可能会误用它——你知道,必须保护用户免受自身伤害。

【讨论】:

    【解决方案2】:

    根据this MSDN article,它在 Azure Sql 数据库中受支持,但在 Azure Sql 数据仓库中不受支持。至于 Azure Sql 数据库,它仅适用于高级 Azure SQL 数据库的预览版。基本层和标准层都不支持它(请参阅azure-specific documentation 中的更多详细信息)。

    如果您尝试使用 Visual Studio 为 Azure Sql 数据库开发,2013 和 2015 版本都会向您显示以下错误消息(您的数据库项目将无法编译):

    SQL71578: The element Table: [dbo].[*******] has property IsMemoryOptimized set to a value that is not supported in Microsoft Azure SQL Database v12.   
    

    此时,您必须考虑 Azure VM 中的 SQL Server 2014 或 2016,而不是 Azure SQL。

    【讨论】:

      猜你喜欢
      • 2019-07-30
      • 2017-10-23
      • 1970-01-01
      • 1970-01-01
      • 2010-09-06
      • 2020-08-18
      • 1970-01-01
      • 1970-01-01
      • 2013-07-31
      相关资源
      最近更新 更多