Campaign:数据库查询间歇性非常慢
本文介绍了如何使用Databricks FDA缓解长工作流查询的超时。
描述 description
客户一直使用Databricks FDA进行工作流查询,其查询间歇性地非常缓慢并失败,原因是1小时超时限制(1小时后OAuth令牌过期的结果)。 工作流日志显示消息:
ODB-240000 ODBC错误: [ Simba] [ Hardy] (115)连接失败,出现错误:返回未授权/禁止的错误响应,但没有令牌过期消息SQLState: 08S01
和
ODB-240000 ODBC错误:身份验证令牌已过期。 用户必须再次进行身份验证。 SQLState: 08001
解决方法 resolution
到期本身不受Campaign工作流设置或serverConf.xml配置文件的控制。 在此设置中,ACC使用nmsaccountName上的OAuth通过Simba ODBC驱动程序连接到Databricks。 长生命周期凭据/应用程序密钥可能有效期至2031年,但为ODBC连接颁发的访问令牌的生命周期仍然会短得多,通常为60分钟。
缓解选项:
- 数据库管理员可以查看Adobe Campaign使用的OAuth应用程序/集成,并提高访问令牌TTL,例如,通过更新Databricks OAuth令牌访问策略(如access_token_ttl_in_minutes)。 这应由客户/数据库管理员完成,并应遵循其安全策略,因为如果访问令牌寿命较长,则会增加泄露风险。
- 更改令牌策略后,允许Databricks端的传播时间,并使用新的ACC/ODBC连接重新进行测试。 现有的打开连接可能会继续使用在策略更改之前颁发的上一个令牌。
- 在操作上,拆分或优化ACC工作流查询,以使每个单独的DBX SQL语句在令牌生命周期下完成。 这是更安全、更首选的缓解措施,因为它还解决了间歇性缓慢/排队的DBX执行问题,而不是仅扩展故障窗口。
- 在数据库端,检查SQL仓库查询历史记录以了解慢速运行,并优化仓库/查询路径:排队时间、并发、缩放/最大集群、冷启动、查询计划、表统计信息/布局以及谓词/连接的数据量。
- 如果客户需要可以合法运行时间超过OAuth访问令牌生命周期的DBX SQL语句,他们应向Databricks/Simba确认ODBC驱动程序使用的OAuth模式是否支持其配置中的长时间运行/打开语句的令牌刷新。 如果不能,可能需要增加令牌TTL或使用其他支持的身份验证模式。
因此,短期可行的缓解措施是增加ACC集成的Databricks OAuth访问令牌TTL,而长期修复措施是减少DBX查询运行时/排队,从而使工作流不依赖于能够运行非常长时间的SQL调用的令牌。
recommendation-more-help
experience-cloud-kcs-help-kbarticles