Azure SQL数据库是否支持内存优化表?

Dmi*_*Los 6 azure in-memory sql-server-2014 azure-sql-database

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

谢谢.

Dai*_*Dai 7

MEMORY_OPTIMIZED截至 2020 年第四季度,Azure SQL仅在几个定价层中支持内存中 OLTP(又名)。这一半记录在这个(很难找到)Azure SQL 文档页面中,另一半是我从古老的博客文章和 Azure 门户中的反复试验中获取的。

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

这是我制作的流程图:

  • 您使用的是 DTU 还是 vCore?
    • DTU:
      • 您使用的是基本层(5 个 DTU)吗?如果是这样,则不,不支持内存中。
      • 您使用的是标准层(10-3000 DTU)吗?如果是这样,则不,不支持内存中。
      • 您使用的是高级层(125-4000 DTU)吗?如果是这样,那么是的,支持内存中
    • vCores:
      • 您使用的是通用层吗?如果是这样,则不,不支持内存中。
      • 您使用的是超大规模层吗?如果是这样,则不,不支持内存中。
      • 您使用的是关键业务层吗?如果是这样,那么是的,支持内存中

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

SELECT DatabasePropertyEx( DB_NAME(), 'IsXTPSupported' ) AS IsXTPSupported;
Run Code Online (Sandbox Code Playgroud)

如果您收到0此消息,则您的数据库不支持内存中 OLTP。如果你得到了1那么它是支持的。

如果你尝试这样做,CREATE TYPE dbo.Foo AS TABLE ( ... ) WITH ( MEMORY_OPTIMIZED = ON );你会得到这个错误:

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


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


Sta*_*'co 4

根据这篇 MSDN 文章,它在 Azure Sql 数据库中受支持,但在 Azure Sql 数据仓库中不受支持。至于 Azure Sql 数据库,它仅适用于高级 Azure SQL 数据库的预览版。基本层和标准层均不支持它(请参阅Azure 特定文档中的更多详细信息)。

如果您尝试使用 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.   
Run Code Online (Sandbox Code Playgroud)

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