数据库内优化的相关详细信息
数据库内优化会尽可能避免将标识从数据库复制到 IBM® Campaign 服务器进行处理。此选项可以提高流程图性能。
数据库内优化将确定:
*
在数据库服务器上完成这些操作,还是在本地 IBM® Campaign 服务器上完成这些操作;以及
*
当启用数据库内优化时:
*
*
数据库内优化会影响 CPU 资源的使用:
*
*
禁用了数据库内优化时,在 IBM® Campaign 服务器上会使用更多 CPU 资源。
您可以在全局范围内应用数据库内优化并覆盖各个流程图的全局设置。最佳实践是关闭全局配置属性 (useInDbOptimization) 并在流程图级别(高级设置 > 管理 > 在流程图运行期间使用数据库内优化)设置该选项。
*
对于数据库内优化的限制
*
*
根据所需要的逻辑,仍然会在 IBM® Campaign 服务器上执行某些功能,即使已启用数据库内处理也是如此。下面提供了一些示例:
*
例如,如果“选择”流程将查询不同的数据源,那么 IBM® Campaign 会自动将这些情况的标识列表存储在应用程序服务器上。
*
例如,要计算某个派生字段,IBM® Campaign 会对派生字段公式进行求值,以了解是否可以使用 SQL 来执行任何计算部分。如果可以使用简单 SQL 语句,那么会在数据库内完成计算。否则,会在 IBM® Campaign 服务器上创建临时表以处理计算,并持久保存处理结果以在流程图中处理。
处理宏中的原始 SQL
可以遵循下列准则在数据库内处理组成原始 SQL 语句的定制宏:
*
所有原始 SQL 定制宏必须以 select 开头,并且其余文本中仅包含一个 from
*
对于仅支持插入到 <TempTable> 语法的数据库,您必须至少将一个基本表映射至与原始 SQL 定制宏处于同一受众级别的同一数据源。如果原始 SQL 定制宏所选择的字段对于临时表的字段而言太大,那么会发生运行时错误。
*
如果您在具有输入单元的“选择”流程中使用原始 SQL 查询,那么您必须使用 <TempTable> 令牌来获取受众标识的正确列表。还使用 <OutputTempTable> 令牌来防止将受众标识从数据库检索回 IBM® Campaign 服务器。
*