【问题标题】:Quartz blocking on Select for updateQuartz 阻塞 Select for update
【发布时间】:2017-12-15 22:21:57
【问题描述】:

我有一个大型应用程序,其中 4 个节点使用石英来安排作业。

我经常收到来自我们数据库团队的邮件

'SELECT * FROM QRTZ_LOCKS WHERE LOCK_NAME='TRIGGER_ACCESS' FOR UPDATE'

阻塞 15-20 分钟。有时几个小时。 而且我看到我的工作也卡在等待锁定。

我们使用的是相当旧的 Quartz 1.8.3 版本。这是我正在使用的石英设置

org.quartz.scheduler.instanceName = DefaultQuartzScheduler
org.quartz.scheduler.instanceId = AUTO
org.quartz.scheduler.rmi.export = false
org.quartz.scheduler.rmi.proxy = false
org.quartz.scheduler.wrapJobExecutionInUserTransaction = false

org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 25
org.quartz.threadPool.threadPriority = 5
org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread = true

org.quartz.jobStore.misfireThreshold = 60000

org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreCMT

org.quartz.jobStore.driverDelegateClass=com.xyx.abc.common.scheduler.impl.CDAJDBCDelegate
org.quartz.jobStore.useProperties=false
org.quartz.jobStore.tablePrefix=QRTZ_
org.quartz.jobStore.isClustered=true
org.quartz.jobStore.clusterCheckinInterval = 20000

# these 3 are required by customSchedulerFactory class
org.quartz.dataSource.myDS.connectionProvider.class=com.xyz.abc.common.scheduler.impl.CustomPoolingConnectionProvider
org.quartz.jobStore.dataSource=myDS
org.quartz.jobStore.nonManagedTXDataSource=myDS

我尝试为 Quartz 启用调试日志。但并没有从中得到什么。

有没有人遇到过类似的问题?如何确保“选择更新”查询快速执行?

【问题讨论】:

  • SELECT FOR UPDATE 查询锁定 QRTZ_LOCKS 表中的行,因此如果在该表中的相同行上存在并发 SELECT FOR UPDATE 查询,那么这些并发查询将等待第一个 SELECT FOR UPDATE 查询在执行前通过提交或回滚来释放对这些行的锁定。
  • 同意@ivanzg。您的问题与 Quartz 无关,看起来您对数据库的锁定有问题。
  • 这个问题解决了吗?

标签: java oracle quartz-scheduler


【解决方案1】:

您可以忽略这些查询。

许多年前,我站在这个问题的另一边。我是数据库团队的那个人,他发现了一个长时间运行的查询并要求 Java 开发人员修复它。我不记得细节了,但我记得有一个很好的解释来解释为什么它会这样工作并且没有什么需要修复的。

当我们按GV$SQL.ELAPSED_TIME 降序排序时,查询总是显示在性能报告中。但经过仔细检查,我们发现他们没有使用任何重要资源。他们没有使用 CPU、I/O 或任何其他宝贵资源。这是ELAPSED_TIME 列具有误导性的罕见情况之一。

我学会了忽略它们并担心其他查询。

【讨论】:

    猜你喜欢
    • 2013-01-17
    • 2014-12-31
    • 2011-06-28
    • 2020-03-01
    • 1970-01-01
    • 2011-11-12
    • 1970-01-01
    • 1970-01-01
    • 2013-09-23
    相关资源
    最近更新 更多