我支持Filenet应用程序,通常专注于性能改进技术。我们经常面临与查询优化相关的问题。通常,我们从DBA获得查询,这些查询是在数据库级别激发的DBSQL。现在,从应用程序代码中,我们传递的是CE SQL,而不是DB SQL。我知道CE将CE SQL解析为底层DB SQL。我正试图弄清楚,如果我有DB SQL,我能得到相应的CE SQL吗。我可以在其中输入CESQL和相应的DBSQL的代码或脚本中编写。如果我能在这方面得到任何建议,我将不胜感激,因为我真的陷入了困境。
您需要为DB
子系统启用跟踪日志记录。这是通过ACCE中域配置的Trace Control
选项卡完成的。然后,您将能够在p8_server_trace.log
中看到数据库查询。
为了方便起见,您可能还希望为SRCH
子系统启用跟踪。然后,原始查询和生成的查询将齐头并进。
有关跟踪日志记录的详细信息,请参阅FileNet P8文档。
捕获CE SQL查询的方法是打开您感兴趣的对象类的审核,并选择Query Event
作为事件。现在,每次执行查询时,都会创建一个事件对象。此对象有一个名为QueryText
的属性,其中包含执行的CE查询。您可以使用查询中的创建时间或其他信息将其与数据库查询相匹配。
可以使用ACCE查询查询事件,或者使用API对象com.filenet.api.events.QueryEvent
以编程方式访问查询事件。
请注意,在繁忙的系统中,可能会生成大量查询事件!