最近,我在MS SQLServer数据库上将我的Documentum系统从Documentum6.5升级到Documentum6.7。对于6.5,我们使用了32位的SQLServer,并移动到64位的SQLServer为6.7。自升级以来,我面临的DQL语句性能非常差,几乎可以在6.5上立即运行。
现在在6.7上性能不佳的DQL示例:
SELECT r_object_id, object_name, title, keywords
FROM dm_folder
WHERE object_name LIKE 'MOC -10-%'
AND NOT r_object_id IN
(SELECT i_folder_id FROM dm_document WHERE ANY i_folder_id = dm_folder.r_object_id AND ANY keywords IS NOT NULLSTRING)
ORDER BY 1 DESC
通过一些研究和跟踪,我了解到Documentum6.7生成的SQL语句要慢得多,不能使用SQL查询分析器进行很大的改进。我有在D6.5上运行不到3秒的查询,但是在D6.7上需要368秒!当我获取在D6.7DQL上生成的SQL并将其转到运行D6.5系统的SQLServer中时,性能也很差。它确实告诉我,底层数据模型没有改变,因为我在D6.5SQL数据库上没有错误。获取生成的SQL并将其粘贴到D6.7 SQLServer上,可以获得与6.5查询相同的性能(甚至更好一些)。为了确保这不会让人困惑:
Documentum有一个用于D7CS的性能白皮书,当使用MS SQLServer: DM_LEFT_OUTER_JOIN_FOR_ACL=T时,该白皮书推荐给以下参数
在CS6.7文档中,我也发现了这个参数,在环境vars中设置它并重新启动服务器会带来一些改进,但结果仍然太慢。但是,在我看来,生成的SQL不能通过SQL调优工具得到很大的改进,生成的SQL中的OR语句太多了。
有没有人遇到过类似的问题?知道我忽略的修复或神奇的配置参数吗?
谢谢
雅克“普拉夫德”
发布于 2017-07-12 11:55:26
当您仍然可以访问旧的和新的Documentum系统时,您可以获得查询的SQL转换(通过Delilah for Documentum之类的工具),并且可以比较生成的SQL是否发生了很大变化。
您是否将Documentum数据库转换为Unicode?这将使数据乘以2,并对性能产生影响。
发布于 2014-06-20 17:22:40
带有SELECT i_folder_id FROM dm_document WHERE...
的子选择( ANY
)将是一个问题。您能重写它吗?这样您就不会强迫SQL Server处理这个问题了吗?
https://stackoverflow.com/questions/22489797
复制相似问题