Skip to content

Add rule 35: Expensive Operator, for an operator with at least 20% of a statement's time and no other finding #4527

Closed

Description

@erikdarlingdata

Part of #4511, the sync of plan analysis changes from PerformanceStudio (PS) to PerformanceMonitor (PM). Needs #4513 and #4515 first.

PS rule 35 shows a costly operator that no other rule has advice for. It fires when an operator's own time is at least 20% of the statement's elapsed time and the operator has no other warning. The statement must have run for at least 1,000 ms. In a statement of a few milliseconds, one or two operators hold most of the time, so the share means nothing. Severity is Critical at 50% or more, else Warning, and the benefit is the self-time share.

erikdarlingdata/PerformanceStudio@e05bc69 adds the rule, and erikdarlingdata/PerformanceStudio@0ba9135 (erikdarlingdata/PerformanceStudio#562) adds the 1,000 ms floor. PM has no rule 35. Size S.

Port it after the two self-time fixes. Before those fixes, the rule flags operators whose self-time is wrong, such as an exchange above a batch mode zone.

At 1899737f. dev has no later change to PerformanceMonitor.PlanAnalysis.

Activity

  1. added a commit that references this issue on Sep 28, 2026
    5509fa7
  2. erikdarlingdata commented on Sep 28, 2026

    @erikdarlingdata
    OwnerAuthor

    Claude posting for Erik Darling.

    Fixed by #4550 (5509fa7), so this issue is closing. Rule 35 (Expensive Operator) flags an operator whose own time is at least 20% of a statement that ran for at least 1 second and that carries no other warning, Critical at 50% or more, matching PerformanceStudio. Its benefit percentage takes effect once the scorer is wired in (#4546).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions