Azure 突触中的外部表性能非常慢

Posted

技术标签:

【中文标题】Azure 突触中的外部表性能非常慢【英文标题】:External Table in Azure synapse very slow performance 【发布时间】:2021-06-10 23:46:23 【问题描述】:

我有一个 parquet 文件并创建了一个新的外部表,但与突触中的普通表相比,性能非常慢。你能告诉我如何解决这个问题吗?

【问题讨论】:

您使用的是无服务器池还是专用池? 【参考方案1】:

非常广泛的问题。所以我会给出广泛的答案:

    使用普通表。很难用外部表击败“普通表”的性能。 “普通表”是指使用CREATE TABLE 在专用 SQL 池中创建的表。如果您重复从一个或多个表中查询数据并且每个查询都不同(分组、连接、选定列),那么您无法获得“普通”表与外部表的性能。 了解并应用基本best practices:

    使用您正在做的镶木地板格式。

    选择正确的分区列并通过将分区存储到不同的文件夹或文件名来对数据进行分区。

    如果查询针对单个大文件,您将受益于将其拆分为多个小文件。

    尽量将 CSV(如果使用 csv)文件大小保持在 100 MB 到 10 GB 之间。

    使用正确的数据类型。

    手动为 CSV 文件创建统计信息

    使用 CETAS 增强查询性能和联接

    ...还有更多。

【讨论】:

我唯一要添加的是确保 parquet 文件的存储帐户与 Synapse 池位于同一 Azure 区域中。 + 无服务器最佳实践:docs.microsoft.com/en-us/azure/synapse-analytics/sql/… @svenwildermann-msft,这是答案中“了解并应用基本最佳实践:”中的链接。还是你的意思是别的? 对,您已经链接了 Synapse Serverless(按需)的最佳实践链接。如果有人想知道,这是专用的:docs.microsoft.com/en-us/azure/synapse-analytics/sql/…

以上是关于Azure 突触中的外部表性能非常慢的主要内容,如果未能解决你的问题,请参考以下文章

Azure Synapse 中的 Hive

为啥 SQL Server 2019 与 Azure SQL 数据库中的外部表语法不同? `

AZURE 突触分析 - 如何关联表?

Azure Synapse Polybase/外部表 - 我们可以在创建外部表时从文件中获取行号吗

Databricks:将数据框合并到 Azure 突触表中

Azure Synapse 外部表位置参数化