我们有一个Microstrategy / Oracle设置,其中有一个包含50亿行(即50,000,000,000+行)的事实表。
系统性能非常不稳定;有时它运行正常,但在其他时候它运行很慢,即简单的报告需要20分钟才能运行!
最奇怪的部分:如果我们在报告中添加更多约束(即更多where子句),最终会返回LESS数据,报告实际上会进一步减慢。
我们能够从Microstrategy中获取SQL,我们发现SQL本身运行速度也很慢。但是,由于SQL是由Microstrategy生成的,因此我们无法控制SQL。
关于我们应该在哪里看的任何想法?
答案 0 :(得分:2)
查看SQL并查看是否可以添加更多有用的索引。检查查询是否正在使用您认为应该是的索引。
答案 1 :(得分:1)
检查过滤的每个列是否都有索引。 请记住更新所涉及的所有表的统计信息:如此大的表非常重要。 查看查询计划并检查大表上没有表扫描(您可以在小型查找表上接受它们)
答案 2 :(得分:0)
EnableDescribeParam=1
答案 3 :(得分:-1)
如果您的环境与我的环境相似,那么我将提供的内容可能有助于您的请求,如果不是它可能会帮助他人。我们也有一个这样的表,经过几周的尝试添加这个索引或该索引后,最终解决方案是在表和索引级别上并行设置。
报告运行时间25分钟 alter table TABLE_NAME parallel(degree 4 instances 4); alter index INDEX_NAME parallel(degree 4 instances 4);
报告运行时间6秒。
表上有并行设置的标准,例如必须大于1G,但是使用并行线程来获得最佳时间。