sql-server - 链接维度性能问题
问题描述
我正在使用 2 星模式数据仓库,每个数据仓库都包含一个事实表,维度表位于单独的数据库中(两个数据仓库都使用一个数据库)。
我为每个数据仓库创建了一个多维分析项目:
- 在第一个项目中,我定义了维度并部署了分析数据库,并且我能够在 Management Studio 中毫无问题地浏览多维数据集。
- 在第二个项目中,我定义了链接维度并使用了第一个分析数据库中部署的维度。
尝试浏览第二个多维数据集时一切正常,但是当我尝试浏览维度或在浏览多维数据集时添加过滤器时,管理工作室没有响应。几个小时后,它返回以下错误消息:
检索子节点时发生错误:行中的 Messages 元素(命名空间 urn:schemas-microsoft-com: xml-analysis: exception)不能出现在 Envelope/Body/ExecuteResponse/return/SubCube 下)
在搜索这个问题时,我发现一些文章提到,当分析数据库位于不同的服务器上时,不建议使用链接维度。但就我而言,数据仓库和分析数据库位于同一台服务器上。
我也尝试使用 MDX 查询运行相同的过滤器逻辑FILTER()
,但没有运气。MDX 查询语法类似于:
SELECT ([Dimension2].[---].[---], [MeasureGroup].[Measure]) ON COLUMNS,
FILTER([Dimension1].[---].[---],[Dimension1].[---].[---].CurrentMember.Name = "FilterValue") ON ROWS
FROM [AnalysisCube]
请注意:维度包含超过 4 GB 并CompatibilityLevel
设置为1100
.
有什么建议么?
解决方案
基于以下 Microsoft 参考:
SSAS 允许您将链接维度添加到其他多维数据库,以便您只需构建和维护一个维度。但是,在 SSAS 开发中使用链接维度并不是最佳实践,因为它会产生性能问题。
考虑构建一次并重用您的开发工作的另一种方法是将 .dim 文件保存在源代码管理中。然后,您可以要求新的多维数据库项目从源代码管理添加 .dim 文件,而不是直接构建新维度。这样,您可以在一个中心位置维护设计并从可重用性中受益,而不会引入潜在的性能问题。
从上面的信息来看,从性能角度来看,似乎不建议使用链接维度。
推荐阅读
- llvm - 我在哪里可以找到 QEMU (TCG) 的/LLVM IR 操作语义?
- tailwind-css - 我怎样才能让这个盒子有相同的宽度?
- jpa - JPA生成策略表和序列的区别
- c++ - 创建子类的多个实例,只有一个超类的实例
- flutter - 如何对按钮进行编程以在点击和保持时连续增加或减少计数器?
- flutter - Flutter ListView itembuilder 不会显示任何内容。为什么?
- swiftui - iOS SwiftUI 在与代码交互时如何调出“嵌入 VStack”之类的额外操作?
- maven - 防止部署 Maven 模块
- python - 在 tensorflow 和 keras 上运行我的 Rnn 模型时出现 InvalidArgumentError
- angular - md-icon' 在使用 Angular Material 8.2.3 时不是已知元素错误,即使已导入 --