Azure Synapse Analytics 无服务器 SQL 池的性能优化指南

适用对象:Azure Synapse Analytics

本文可帮助你增强 Azure Synapse Analytics 无服务器 SQL 池的性能。

请参阅以下几个部分,了解如何实现最佳性能并防止与 Azure Synapse Analytics 无服务器 SQL 池上的资源约束相关的故障。

最佳做法和故障排除指南

以下文章中的信息和策略可帮助你从无服务器 SQL 池中获取最佳性能。 建议使用这些文章来查看用例并排查常见问题。

了解在无服务器 SQL 池上进行缩放

无服务器 SQL 池不需要手动选择正确的大小。 系统根据查询要求自动调整大小,从而管理基础结构,并为解决方案选择合适的大小。

Delta Lake 文件的性能优化指南

有关 Delta Lake 文件的性能优化的详细信息,请参阅以下资源:

CSV 文件的性能优化指导

在无服务器 SQL 池上查询 CSV 文件时,确保高性能的最重要任务是在外部表上创建统计信息。 虽然统计信息是在 Parquet 和 CSV 文件上自动创建的,并且通过使用 OPENQUERY(),但通过使用外部表读取 CSV 文件需要手动创建统计信息。

有关统计信息在查询无服务器 SQL 池中 CSV 文件的角色的详细信息,请参阅以下文章:

有关使用 Power BI 和其他报表工具的建议

使用 Power BI 和其他报表工具时,建议使用以下最佳做法:

  • 始终检查租户位置。
  • 设置缓存来改进用户体验。
  • 避免将数百万条记录返回到仪表板。
  • 使用计划的刷新来避免并行查询执行,以耗尽 SQL 无服务器池资源。
  • 使用 Spark 预先聚合常见分析查询。 这种“写入一次/读取多”方法可以避免连续运行的大量查询。
  • 对于不同数据存储之间的联接:使用筛选器可避免跨 Azure 基础结构移动的大数据卷。
  • 对字符数据类型使用 Latin1_General_100_BIN2_UTF8 排序规则。 当从存储读取工具时,此排序规则可避免将所有数据从存储传输到无服务器 SQL 池。
  • 如果要将数据强制转换或转换为 char 或运行查询时, varchar 请使用最佳大小。 如果可能,请避免使用 VARCHAR(MAX)
  • 自动推理将数据类型转换为可能不是最佳格式。 使用 WITH 子句优化数据类型。
  • Azure Synapse SQL 无服务器池资源有限制。 同时运行查询将消耗资源。 在并行进行多次刷新时,通常会看到 Power BI (PBI) 仪表板达到资源限制。 计划的刷新和负载测试有助于避免此问题。 此外,使用多个 Azure Synapse 工作区可以解决更高的并发要求。
  • 可以运行查询 sys.columns 或使用 sp_describe_first_result_set ,并在 select top 0 from <view> 创建视图后检查数据类型。 此方法比使用 SELECT * FROM...速度更快且成本更低。
  • 使用语句生成器自动为查询创建最佳列格式。
  • 使用该 OPENJSON 函数将嵌套 JSON 数据公开为列。 但是,如果你也使用该 AS JSON 命令,则列类型必须是 NVARCHAR(MAX)。 此方法不适用于性能。 最佳选择是使用 WITH 子句以列的形式公开嵌套数组。
  • Cosmos DB 事务存储分区键不在分析存储中使用。 在 Azure Synapse Link 中,现可对事务数据进行建模以优化数据引入和点读取。

额外的指导和最佳做法

类别 建议的操作或文档
数据浏览 Azure 存储
将查询结果存储在 Azure 存储中
逻辑数据仓库
OPENROWSET 和外部表 OPENROWSET 函数
外部表
存储过程
视图
数据转换
无服务器 SQL 池中可用的 T-SQL 功能 Azure Synapse 池中的 T-SQL 功能

第三方信息免责声明

本文中提到的第三方产品由 Microsoft 以外的其他公司提供。 Microsoft 不对这些产品的性能或可靠性提供任何明示或暗示性担保。