我们正在将数据库迁移到Sybase 15。在Sybase 12.5中运行良好的存储过程在Sybase 15中表现不佳。但是,当我们添加“set merge_join off”时,Syabse 15执行得更快。有没有办法像在sybase 15中那样使用Sybase 12.5存储的proc,或者只做最小的改动?除了重写整个存储的proc之外,我们还有其他方法吗?
发布于 2011-11-11 17:12:11
我认为这取决于你有多少时间和精力来研究Sybase 15并使用它的新优化器。
如果这是一个小的应用程序,你只是想让它工作,而不需要了解一些或所有的新优化器,索引统计,数据变化,登录触发器,那么使用兼容模式,或者更好的模式,限制优化器为allrows_oltp,避免dss和mix (将分别使用散列连接和合并连接)。
如果这是一个大系统,而且你有时间,我认为你应该了解上面的内容,如果不是dss,至少也允许混合,并确保你
拥有最新的索引统计信息(更重要的是拥有索引的第二个和后续版本的统计信息,以优化合并和散列连接的正确操作。)了解DATACHANGE (查找需要更新统计信息的表)。登录触发器(可以用来配置一些会话/用户,降低或提高优化级别-参见sypron网站上Rob Verschoor的文章。)确保您有访问sp_showplan的权限(使用工具,或获取sa_role,或使用Rob Verschoor的CIS技术进行授权)。
新的优化器很好,但我认为可以说它们需要时间和精力来理解和工作。如果你没有时间和精力,并且不需要额外的性能,那就坚持使用allrows_oltp,甚至兼容模式(我没有后者的经验,但不知何故在我看来这似乎是错误的)。
发布于 2011-05-09 23:36:25
sybase 15中有兼容模式。
http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc00967.1550/html/MigrationGuide/CBHJACAF.htm
发布于 2013-04-11 20:34:38
我要说的是,试着找出问题的根本原因,我们的一个procs也有问题,计时从27分钟上升到40分钟。当诊断并修复proc时,只需6次失误即可完成(这需要27分钟)。ASE15优化器和查询处理比12.5要好得多。
如果您没有时间,只需为此进程设置会话级别的兼容模式即可。
"set compatibility_mode on“
但一定要比较一下结果。
此外,如果您有时间,请尝试使用DBCC (302,310)和3604 (用于重定向)来了解优化器为什么要使用这样的LAVA操作符。
https://stackoverflow.com/questions/5938650
复制相似问题