Skip to content

*: add slow log control variables (tidb_slow_log_rules, tidb_slow_log_max_per_sec) and hint WRITE_SLOW_LOG (#22176)#22517

Open
ti-chi-bot wants to merge 10 commits intopingcap:release-8.5from
ti-chi-bot:cherry-pick-22176-to-release-8.5
Open

*: add slow log control variables (tidb_slow_log_rules, tidb_slow_log_max_per_sec) and hint WRITE_SLOW_LOG (#22176)#22517
ti-chi-bot wants to merge 10 commits intopingcap:release-8.5from
ti-chi-bot:cherry-pick-22176-to-release-8.5

Conversation

@ti-chi-bot
Copy link
Member

This is an automated cherry-pick of #22176

First-time contributors' checklist

What is changed, added or deleted? (Required)

Which TiDB version(s) do your changes apply to? (Required)

Tips for choosing the affected version(s):

By default, CHOOSE MASTER ONLY so your changes will be applied to the next TiDB major or minor releases. If your PR involves a product feature behavior change or a compatibility change, CHOOSE THE AFFECTED RELEASE BRANCH(ES) AND MASTER.

For details, see tips for choosing the affected versions.

  • master (the latest development version)
  • v9.0 (TiDB 9.0 versions)
  • v8.5 (TiDB 8.5 versions)
  • v8.1 (TiDB 8.1 versions)
  • v7.5 (TiDB 7.5 versions)
  • v7.1 (TiDB 7.1 versions)
  • v6.5 (TiDB 6.5 versions)
  • v6.1 (TiDB 6.1 versions)
  • v5.4 (TiDB 5.4 versions)

What is the related PR or file link(s)?

Do your changes match any of the following descriptions?

  • Delete files
  • Change aliases
  • Need modification after applied to another branch
  • Might cause conflicts after applied to another branch

@ti-chi-bot ti-chi-bot added lgtm size/L Denotes a PR that changes 100-499 lines, ignoring generated files. type/cherry-pick-for-release-8.5 This PR is cherry-picked to release-8.5 from a source PR. type/compatibility-or-feature-change This PR involves compatibility changes or feature behavior changes. v9.0-beta.3 This PR/issue applies to TiDB v9.0-beta.3. labels Mar 2, 2026
@ti-chi-bot
Copy link

ti-chi-bot bot commented Mar 2, 2026

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign oreoxmt for approval. For more information see the Code Review Process.
Please ensure that each of them provides their approval before proceeding.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request significantly enhances TiDB's slow query logging functionality by introducing new control mechanisms. It provides a SQL hint to explicitly log queries and new system variables for fine-grained, rule-based logging and rate limiting. These additions aim to improve the diagnostic capabilities for performance issues, allowing users to capture and analyze specific query behaviors more effectively while preventing log flooding.

Highlights

  • New SQL Hint for Slow Log: Introduced the WRITE_SLOW_LOG hint, allowing users to force specific SQL statements to be recorded in the slow query log, regardless of their execution time or configured thresholds. This is particularly useful for troubleshooting intermittent performance issues.
  • Flexible Slow Log Rules: Added the tidb_slow_log_rules system variable, enabling the definition of multi-dimensional trigger rules for slow query logging. This variable offers more granular control over which queries are logged, replacing the single-threshold approach of tidb_slow_log_threshold.
  • Slow Log Rate Limiting: Implemented the tidb_slow_log_max_per_sec system variable to control the maximum number of slow query log entries written per second. This helps prevent log flooding in high-workload scenarios, especially when using complex tidb_slow_log_rules.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Changelog
  • identify-slow-queries.md
    • Added a new section detailing the WRITE_SLOW_LOG hint, including its purpose, usage, and examples.
    • Expanded the "Related system variables" section to include tidb_slow_log_rules and tidb_slow_log_max_per_sec, with comprehensive descriptions, supported fields, rule matching logic, and usage examples.
    • Updated the description of tidb_slow_log_threshold to reflect its interaction with tidb_slow_log_rules.
    • Corrected terminology from "slow log" to "slow query log" consistently throughout the document.
    • Removed a redundant {{< copyable "sql" >}} tag.
  • system-variables.md
    • Documented the new tidb_slow_log_max_per_sec system variable, including its scope, persistence, default value, type, range, and purpose.
    • Documented the new tidb_slow_log_rules system variable, including its scope, persistence, default value, type, and purpose, along with a tip for its recommended use with tidb_slow_log_max_per_sec.
Activity
  • This pull request is an automated cherry-pick of an upstream change.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@lilin90 lilin90 assigned lilin90 and unassigned hfxsd Mar 2, 2026
@lilin90 lilin90 requested review from lilin90 and zimulala March 2, 2026 09:54
Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request adds documentation for new slow log control variables (tidb_slow_log_rules, tidb_slow_log_max_per_sec) and the WRITE_SLOW_LOG hint. It also improves consistency by using "slow query log" throughout the document. The changes are well-written and clear. I've provided a couple of minor suggestions to improve formatting and adhere to the style guide's preference for active voice.

* GLOBAL scope rules are evaluated only when no SESSION scope rules match:
* If a GLOBAL rule specifies a `ConnID` that matches the current session `ConnID`, that rule is applied.
* If a GLOBAL rule does not specify a `ConnID` (acting as a general global rule), that rule is applied.
* The behavior of displaying this variable via `SHOW VARIABLES`, `SELECT @@GLOBAL.tidb_slow_log_rules`, or `SELECT @@SESSION.tidb_slow_log_rules` is consistent with other system variables.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

low

To improve readability and maintain correct Markdown formatting, this list item should have the same indentation as the other items at its level. It seems to be a sub-point of 'If tidb_slow_log_rules is set'.

Suggested change
* The behavior of displaying this variable via `SHOW VARIABLES`, `SELECT @@GLOBAL.tidb_slow_log_rules`, or `SELECT @@SESSION.tidb_slow_log_rules` is consistent with other system variables.
* The behavior of displaying this variable via `SHOW VARIABLES`, `SELECT @@GLOBAL.tidb_slow_log_rules`, or `SELECT @@SESSION.tidb_slow_log_rules` is consistent with other system variables.
References
  1. The style guide requires proper list formatting. This includes consistent indentation for list items at the same level. (link)


> **Tip:**
>
> After enabling `tidb_slow_log_rules`, it is recommended to also configure [`tidb_slow_log_max_per_sec`](#tidb_slow_log_max_per_sec-new-in-v900) to limit the slow query log output rate and prevent rule-based slow query logging from being triggered too frequently.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

low

To follow the style guide's preference for active voice and direct address, this sentence can be rephrased to be more direct.

Suggested change
> After enabling `tidb_slow_log_rules`, it is recommended to also configure [`tidb_slow_log_max_per_sec`](#tidb_slow_log_max_per_sec-new-in-v900) to limit the slow query log output rate and prevent rule-based slow query logging from being triggered too frequently.
> After enabling `tidb_slow_log_rules`, also configure [`tidb_slow_log_max_per_sec`](#tidb_slow_log_max_per_sec-new-in-v900) to limit the slow query log output rate and prevent rule-based slow query logging from being triggered too frequently.
References
  1. The style guide recommends avoiding passive voice. The phrase 'it is recommended to' is passive. (link)
  2. The style guide recommends writing in the second person ('you') when addressing users to make instructions more direct. (link)

@ti-chi-bot
Copy link

ti-chi-bot bot commented Mar 2, 2026

@ti-chi-bot: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
pull-verify 57abec5 link true /test pull-verify

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

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

Labels

lgtm size/L Denotes a PR that changes 100-499 lines, ignoring generated files. type/cherry-pick-for-release-8.5 This PR is cherry-picked to release-8.5 from a source PR. type/compatibility-or-feature-change This PR involves compatibility changes or feature behavior changes. v9.0-beta.3 This PR/issue applies to TiDB v9.0-beta.3.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants