nextcloud/server

[Bug]: Missing column in database index on query for time sensitive background jobs

Open

#46,126 opened on Jun 26, 2024

View on GitHub
聽(2 comments)聽(0 reactions)聽(0 assignees)PHP聽(34,953 stars)聽(4,865 forks)batch import
1. to develop29-feedbackbuggood first issueperformance 馃殌

Description

鈿狅笍 This issue respects the following points: 鈿狅笍

Bug description

The query 4f0fc707a2e82ec699067a969cd17b05

SELECT
  *
FROM
  `oc_jobs`
WHERE
  (`reserved_at` <= ?)
  AND (`last_checked` <= ?)
  AND (`time_sensitive` = ?)
ORDER BY
  `last_checked` ASC
LIMIT
  ?

does not use a covering index. The index job_lastcheck_reserved only covers last_checked and reserved_at, not time_sensitive. The database has to scan a bunch of rows every time cron picks the next job outside the maintenance window:

image

Steps to reproduce

  1. Install Nextcloud
  2. Configure a maintenance window

Expected behavior

An index on (last_checked, reserved_at, time_sensitive)

Installation method

None

Nextcloud Server version

29

Operating system

None

PHP engine version

None

Web server

None

Database engine version

None

Is this bug present after an update or on a fresh install?

None

Are you using the Nextcloud Server Encryption module?

None

What user-backends are you using?

  • Default user-backend (database)
  • LDAP/ Active Directory
  • SSO - SAML
  • Other

Configuration report

No response

List of activated Apps

No response

Nextcloud Signing status

No response

Nextcloud Logs

No response

Additional info

cc @nickvergessen

Contributor guide

[Bug]: Missing column in database index on query for time sensitive background jobs 路 nextcloud/server#46126 | Good First Issue