为什么查询速度 Azure Analysis Services 与直接 SQL 查询相比较低
Why is query speed Azure Analysis Services versus direct SQL queries lower
出于测试目的,我部署了:
- 带有一些数据的 Azure SQL 数据库
- Azure Analysis Services 中的表格模型连接到 SQL 数据库以获取数据
该测试旨在比较针对 Azure SQL 数据库的查询速度与针对表格模型的查询速度。
测试中的表格模型由 4 个维度组成,但查询中只使用了其中的 2 个维度。我想针对表格模型的查询不能处理超过 2 个维度?
查询来自 运行 来自本地计算机上 运行 的 .NET 控制台应用程序。针对表格模型的查询使用 ADOMD.NET 客户端库并使用 DAX(我没有使用过的语言)编写,来自 SSMS 中的设计工具。针对 SQL 数据库的查询使用 ADO.NET 客户端库(包含聚合函数、7 个内部联接和一些 "where clause" 参数)。
测试包括每个系统的 10 个查询,每个查询之间的等待时间为 500 毫秒。每个查询的时间加上执行客户端库的控制台应用程序的开销是用 System.Diagnostics.Stopwatch 测量的。与 SQL SB 查询 (529,1ms) 相比,表格模型查询的平均持续时间 (957,6ms) 是其两倍。
我预计对表格模型的查询会更快,因为 Analysis Services 针对此类包含聚合和联接的分析查询进行了优化。
谁能解释为什么它没有表现得更好?或者为什么人们会使用表格模型而不是直接在关系数据库上 运行ning SQL 查询?
查询在 SQL 数据库上执行的时间应该大致相同,除非您的 hand-crafted SQL 性能特别差。 Analysis Services 将 SQL 数据库返回的数据拟合到语义模型所花费的时间是额外延迟的来源。
这里使用 Direct Query 的价值在于,您可以为用户提供对他们来说更直观的语义模型,因为预计用户不会是 DBA。除此之外,语义模型十有八九会包括计算、度量、KPI等
如果您不需要提供以业务为中心的语义模型,并且您乐于在 SQL 查询中进行所有计算和聚合,那么您可能不需要 Analysis Services。
当然,在关闭直接查询模式的情况下使用 Analysis Service 的另一个优势是您可以存储数据 in-memory 而不是在磁盘上,以提高查询性能时间。另一个主要好处是您可以将语义模型指向多个数据源,这样您的模型就可以成为业务用户的集中数据源。
最后,表格模型可以使用的维数没有限制...
The Tabular Model in the tests consists of 4 dimensions but only 2 of
those dimensions are used in the queries. I suppose queries against a
Tabular Model cannot handle more than 2 dimensions ?
出于测试目的,我部署了:
- 带有一些数据的 Azure SQL 数据库
- Azure Analysis Services 中的表格模型连接到 SQL 数据库以获取数据
该测试旨在比较针对 Azure SQL 数据库的查询速度与针对表格模型的查询速度。
测试中的表格模型由 4 个维度组成,但查询中只使用了其中的 2 个维度。我想针对表格模型的查询不能处理超过 2 个维度?
查询来自 运行 来自本地计算机上 运行 的 .NET 控制台应用程序。针对表格模型的查询使用 ADOMD.NET 客户端库并使用 DAX(我没有使用过的语言)编写,来自 SSMS 中的设计工具。针对 SQL 数据库的查询使用 ADO.NET 客户端库(包含聚合函数、7 个内部联接和一些 "where clause" 参数)。
测试包括每个系统的 10 个查询,每个查询之间的等待时间为 500 毫秒。每个查询的时间加上执行客户端库的控制台应用程序的开销是用 System.Diagnostics.Stopwatch 测量的。与 SQL SB 查询 (529,1ms) 相比,表格模型查询的平均持续时间 (957,6ms) 是其两倍。
我预计对表格模型的查询会更快,因为 Analysis Services 针对此类包含聚合和联接的分析查询进行了优化。
谁能解释为什么它没有表现得更好?或者为什么人们会使用表格模型而不是直接在关系数据库上 运行ning SQL 查询?
查询在 SQL 数据库上执行的时间应该大致相同,除非您的 hand-crafted SQL 性能特别差。 Analysis Services 将 SQL 数据库返回的数据拟合到语义模型所花费的时间是额外延迟的来源。
这里使用 Direct Query 的价值在于,您可以为用户提供对他们来说更直观的语义模型,因为预计用户不会是 DBA。除此之外,语义模型十有八九会包括计算、度量、KPI等
如果您不需要提供以业务为中心的语义模型,并且您乐于在 SQL 查询中进行所有计算和聚合,那么您可能不需要 Analysis Services。
当然,在关闭直接查询模式的情况下使用 Analysis Service 的另一个优势是您可以存储数据 in-memory 而不是在磁盘上,以提高查询性能时间。另一个主要好处是您可以将语义模型指向多个数据源,这样您的模型就可以成为业务用户的集中数据源。
最后,表格模型可以使用的维数没有限制...
The Tabular Model in the tests consists of 4 dimensions but only 2 of those dimensions are used in the queries. I suppose queries against a Tabular Model cannot handle more than 2 dimensions ?