Sybase 15性能问题

时间:2009-10-11 20:22:37

标签: performance join nested sybase-ase

我在我的应用程序中使用Sybase 15,并且存在与嵌套连接相关的性能问题。我有存储过程,从2个表中选择2列,并比较这2个表之间超过10列的等式。但是,当我运行这个stor。过程,结果需要40分钟。我将“set merge-join off”语句添加到我的proc的顶部然后结果需要22秒。但如果没有那个我还需要一个解决方案。我之前使用的是sybase 12.5,并且没有任何类似的问题,我的过程需要3分钟才能得到结果。

我将服务器配置与sp_configure进行了比较,介于15和12.5之间,sybase15服务器配置(I / O和内存配置设置)比sybase12.5服务器大。

信息:sybase15位于pc的系统资源非常好。

4 个答案:

答案 0 :(得分:4)

与其他人一样,我有怜悯而不是真正的答案!我们看到一个问题,即ASE 15查询规划器大量低估了表扫描的成本,同样高估了使用聚簇索引的成本。这导致合并连接是建议的计划。禁用合并连接或设置allrows_oltp optgoal 有时会产生更好的查询计划。估计的成本仍然很低,但通过从表中取一个选项,查询计划员可能会找到一个很好的解决方案 - 尽管是通过错误的分析。

ASE 15文档说它有一套更清晰的算法,而ASE 12规划器则有一堆特殊情况。也许是一个特殊情况,说“如果你在连接中有聚簇索引列,它将比表扫描更快”,那就不是一个坏主意... :(

答案 1 :(得分:2)

我花了14个小时的时间来调试周末Sybase 15迁移引起的关键性能问题。

查询优化器一直在做(对我们来说)一些非常奇怪的决定。

举个例子,

select a, b, c from table1, table2, table3 where ...

create table #temp (col1 int, col2 int, ... etc)

insert #temp
select a, b, c from table1, table2, table3 where ...

尽管进行了大量的改造,我们还是第一次在第二次运行中进行了第一次运行,并且无法在第二次运行中做出正确的决定。我们甚至将查询分成临时表,但仍然得到了不寻常的结果。

最后我们使用SET FORCEPLAN ON进行了一些查询 - 这是在我们的DBA和Sybase上线10个小时之后。解决方案也来自应用程序开发人员,而不是来自Sybase工程师的任何建议。

所以为了节省一些时间,采取这条路线是我的建议。

答案 2 :(得分:1)

Sybase有效地重写了版本15的查询引擎,这意味着在12.x上运行超快的查询可能在较新版本上运行得慢得多,反之亦然。调试此方法的唯一方法是将12.x查询计划与15查询计划进行比较,并查看以不同方式执行的操作。

答案 3 :(得分:1)

每个关注此问题的人都应阅读此文档:

http://www.sybase.com/files/White_Papers/ASE15-Optimizer-Best-Practices-v1-051209-wp.pdf

它有一个关于从Sybase 12迁移到Sybase 15的坦率警告。

Quoteth:

  

......不要将ASE 15视为“公正”   另一个版本“。尽可能多   喜欢说你可以简单   升级并指向您的应用程序   升级后的服务器,深度和   其中一个变化的广度   数据库的基本领域,查询   执行,需要更集中精力   测试方案。本文的意思是   为您提供明确的事实   以及减少这种情况的最佳做法   努力和实际上一样多   可能的。

继续讨论新的ASE 15查询优化器,相对于OLTP查询和DSS(决策支持系统)查询。

然而好消息:2009年3月,Sybase 15.0.3引入了兼容模式。请参阅以下文档:

http://www.sybase.com/detail?id=1063556

使用此模式,您无需分析查询以确定它们是否适合OLTP或DSS配置文件。