首页 > 解决方案 > 将大数据从 Oracle 加载到表格模型的最佳实践

问题描述

我们创建了一些直接从 Oracle 获取数据的新 SSAS 表格模型。但经过一些测试,我们发现使用真实的客户数据(几百万行数据),处理时间接近 4 小时。我们的目标是将它们保持在大约 15 分钟以下(由于现有系统性能)。我们从 Oracle 表中获取数据,因此查询性能不是瓶颈。

是否有任何通用设计指南/最佳实践来处理这种情况?

标签: oraclessisssasdata-warehousessas-tabular

解决方案


检查您的应用程序端数组获取大小,因为您可能会遇到网络延迟。** Array fetch size 注意:根据 Oracle 文档,Fetch Buffer Size 是一个应用程序端内存设置,会影响单个 fetch 返回的行数。通常,您可以平衡单次提取(也称为数组提取大小)返回的行数和需要提取的行数。

与需要返回的行数相比,较小的数组提取大小将表现为处理每次提取所需的增加的网络和客户端处理的延迟(即每次网络往返的高成本 [SQL*Net 协议])。

如果是这种情况,在 Oracle 端,您可能会看到“来自客户端的 SQL*Net 消息”的等待时间非常长。[此等待事件由会话在等待来自客户端的消息到达时发布。通常,这意味着会话只是处于空闲状态,但是,在客户端/服务器环境中,这也可能意味着客户端进程运行缓慢或存在网络延迟延迟。此等待事件的高等待时间不会降低数据库性能。]

正如我喜欢说的:“SQL*Net 是一个健谈的协议”;因此,即使 Oracle 可以完成对查询的处理,过多的网络往返也会导致客户端的响应时间变慢。如果将数据放入应用程序所用的时间比数据库运行 SQL 所用的时间长得多,那么人们应该预料到,较小的数组获取大小可能会导致速度变慢;在这种情况下,应用程序端处理时间也可能是导致缓慢的一个因素[您可以查看应用程序特定的方法来解决/调整应用程序端处理]。

数组获取大小不是 Oracle 帐户的属性,也不是 Oracle 端会话设置。数组获取大小只能在客户端设置;客户端将使用的数组获取大小没有 DB 设置。每个客户端应用程序都有不同的机制来指定数组获取大小:


推荐阅读