Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
bab7b23
fix(main): enhance storage detection for HW RAID controllers (AVAGO/L…
jmrenouard Jul 29, 2026
2b1e39e
docs: regenerate release notes
jmrenouard Jul 29, 2026
eef9803
docs(mcp): add comprehensive AI MCP server integration guides in Engl…
jmrenouard Jul 29, 2026
25fd4d0
docs: regenerate release notes
jmrenouard Jul 29, 2026
cc685fb
docs(mcp): update all README language files with AI integration chapt…
jmrenouard Jul 29, 2026
d57ee62
docs: regenerate release notes
jmrenouard Jul 29, 2026
d9e0ed4
docs(rules): align release governance, conventional commit, and git t…
jmrenouard Jul 29, 2026
400fccb
docs: regenerate release notes
jmrenouard Jul 29, 2026
b8d0a19
ci(build): add rules scope to check_compliance.pl allowed conventiona…
jmrenouard Aug 7, 2026
0e6c3de
docs: regenerate release notes
jmrenouard Aug 7, 2026
bbf4a08
style: tidy mysqltuner.pl
jmrenouard Aug 7, 2026
220047d
docs: regenerate release notes
jmrenouard Aug 7, 2026
2397290
fix(ci): resolve DB_PASS from multi-db-docker-env .env file in test_h…
jmrenouard Aug 7, 2026
de58a5a
docs: regenerate release notes
jmrenouard Aug 7, 2026
cba0693
docs(docs): update all documentation and specifications for v2.9.2 sync
jmrenouard Aug 7, 2026
48778b5
docs: regenerate release notes
jmrenouard Aug 7, 2026
d8ec5df
style: tidy mysqltuner.pl
jmrenouard Aug 19, 2026
c079920
feat(main): add --skipworkload option and optimize auto-increment che…
jmrenouard Aug 19, 2026
7cb45af
docs: regenerate release notes
jmrenouard Aug 19, 2026
7a9fa6e
feat(main): sync upstream PR 985 downstream cvefile fallback and work…
jmrenouard Aug 19, 2026
8997c93
docs: regenerate release notes
jmrenouard Aug 19, 2026
3b997a8
fix(galera): harden wsrep options and status checks against uninitial…
jmrenouard Aug 19, 2026
083ce0b
docs: regenerate release notes
jmrenouard Aug 19, 2026
0a7601b
test(cve): add unit test unit_cvefile_fallback.t for downstream cvefi…
jmrenouard Aug 19, 2026
d9563ae
docs: regenerate release notes
jmrenouard Aug 19, 2026
26ee72a
docs(docs): enrich embedded POD documentation with comprehensive CLI …
jmrenouard Aug 19, 2026
754e1e3
docs: regenerate release notes
jmrenouard Aug 19, 2026
5ee3abe
docs(docs): expand README.md usage with skipworkload and agent-json e…
jmrenouard Aug 19, 2026
14df7c7
docs(docs): update French README.fr.md with skipworkload and agent-js…
jmrenouard Aug 19, 2026
2c5c689
docs(docs): update Italian README.it.md with skipworkload and agent-j…
jmrenouard Aug 19, 2026
b6465a8
docs(docs): update Russian README.ru.md with skipworkload and agent-j…
jmrenouard Aug 19, 2026
6ad3b12
docs(docs): clarify LTS source metadata in mysql and mariadb support …
jmrenouard Aug 19, 2026
d4c4071
docs(docs): document AI MCP, workload optimization, and Galera in INT…
jmrenouard Aug 19, 2026
3064e82
docs(docs): add mathematical memory formulas and buffer pool equation…
jmrenouard Aug 19, 2026
7389d1b
docs(docs): add dynamic redo log capacity and SSD tuning in Phase V I…
jmrenouard Aug 19, 2026
15e3065
docs(docs): add flow control params and split-brain safeguards in Pha…
jmrenouard Aug 19, 2026
add55bd
docs(docs): add wait event taxonomy and auto-increment headroom math …
jmrenouard Aug 19, 2026
1d3aab0
docs(docs): add authentication migration queries and SSL hardening gu…
jmrenouard Aug 19, 2026
bfd029e
docs(docs): specify Mermaid ER diagram generation in schemadir docume…
jmrenouard Aug 19, 2026
1d1e118
docs(docs): add MCP client configuration blocks to French MCP integra…
jmrenouard Aug 19, 2026
3645b3a
docs(test): enrich TESTS.md with complete QA lifecycle, linters, and …
jmrenouard Aug 19, 2026
960072e
docs(docs): update CONTRIBUTING.md with Conventional Commits, TDD, an…
jmrenouard Aug 19, 2026
2840c27
docs(docs): clarify changelog category hierarchy and compliance senti…
jmrenouard Aug 19, 2026
a94d2a4
docs(docs): clean up absolute file paths across markdown guides for p…
jmrenouard Aug 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions .agent/rules/03_execution_rules.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ category: governance
7. **ARTIFACT ROTATION:** Keep the `brain/` directory lean. Rotate old plans/walkthroughs after integration.
8. **WEB SEARCH:** Assume world knowledge is out of date. Use web search for up-to-date documentation.

9. **VERSION CONSISTENCY:** Version numbers MUST be synchronized across `CURRENT_VERSION.txt`, `Changelog`, and all occurrences within `mysqltuner.pl` (Header, internal variable, and POD documentation) before any release.
10. **CONVENTIONAL COMMITS:** All commit messages MUST follow the [Conventional Commits](https://www.conventionalcommits.org/) specification. Use `npm run commit` for interactive commit creation. Compliance is enforced via `commitlint` and Git hooks.
9. **VERSION CONSISTENCY & SYNCHRONIZATION:** Version numbers follow strict incremental semantic versioning (no irregular bumps). Version numbers MUST be synchronized across `CURRENT_VERSION.txt`, `Changelog`, `releases/v[VERSION].md`, and all occurrences within `mysqltuner.pl` (Header, internal variable `$VERSION`, and POD documentation) before any release.
10. **CONVENTIONAL COMMITS & CENTRALIZED CHANGELOG:** All commit messages MUST follow the [Conventional Commits](https://www.conventionalcommits.org/) specification (`feat:`, `fix:`, `chore:`, `docs:`, `perf:`, `test:`, `ci:`). Compliance is enforced via `@commitlint/cz-commitlint` and Git hooks (`npm run commit` / `git cz`).
11. **NO DIRECT COMMIT:** All changes MUST be committed via `npm run commit` or `git cz` to ensure metadata quality and automated changelog compatibility.
12. **VERSION SUPPORT POLICY:** Automated test example generation (via `run-tests`) MUST only target "Supported" versions of MySQL and MariaDB as defined in `mysql_support.md` and `mariadb_support.md`.

Expand Down Expand Up @@ -72,6 +72,7 @@ To ensure quality and clarity in every development cycle, all non-trivial featur
- **STRICT PROHIBITION:** No `git commit`, `git push`, or `git tag` without an explicit user order.
- **BRANCHING MANDATORY:** ALL developments, features, bug fixes, and interventions MUST be done in a dedicated Git branch separated from `master`. Committing directly to the `master` branch is strictly prohibited.
- **UNIFIED RELEASE MANAGEMENT:** The entire release process (doc sync, testing, changelog generation, tagging, and branch creation) is now orchestrated exclusively by the `/release-manager` workflow. Do not run disjointed commands (`/git-flow`, `/release-preflight`, `/doc-sync`) manually.
- **SYNCHRONIZED RELEASE TAGGING:** Every version bump MUST create an explicit `vX.Y.Z` Git tag force-pushed to origin during release orchestration, guaranteeing 100% synchronization between GitHub Releases and Git history.
- **Conventional Commits:** Use `feat:`, `fix:`, `chore:`, `docs:`, `perf:`, `refactor:`, `style:`, `test:`, `ci:`. Breaking changes must be marked with `!` after type/scope or `BREAKING CHANGE:` in footer.
- **Commit Validation:** Commits are automatically linted via `commitlint`. Non-compliant messages will be rejected by the pre-commit hook.
- **History Documentation:** Use `npm run commit` to generate structured history.
Expand Down
6 changes: 5 additions & 1 deletion .agents/AGENTS.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
# Agent Custom Rules

- Always update the release notes (`releases/v[VERSION].md`) at the same time as the `Changelog`.
- Always update technical release notes (`releases/v[VERSION].md`) simultaneously with `Changelog` updates.
- Enforce strict incremental semantic versioning across `CURRENT_VERSION.txt`, `Changelog`, `releases/v[VERSION].md`, and `mysqltuner.pl`.
- Enforce Conventional Commits (`feat:`, `fix:`, `chore:`, `docs:`, `perf:`, `test:`, `ci:`) via `@commitlint/cz-commitlint` and `npm run commit`.
- Enforce branching rules (no direct commits to `master`) and force-push synchronized `vX.Y.Z` Git release tags via `/release-manager`.
- Decompose unit tests into human-assimilable parts (for example, using structured subtests).
- Systematically add unit tests to validate every code modification.
- For each modification, add an issue with the correct tags in Major's project and assign it to jmrenouard.

2 changes: 1 addition & 1 deletion .czrc
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
"path": "cz-conventional-changelog"
"path": "@commitlint/cz-commitlint"
}
19 changes: 15 additions & 4 deletions COMMIT_AND_RELEASE.md
Original file line number Diff line number Diff line change
Expand Up @@ -107,21 +107,32 @@ make increment_major_version # Bumps major version (e.g. 2.8.41 -> 3.0.0)
```

### Step 2.3: Update the Changelog & Generate Release Notes
1. Add detailed bullet points in [Changelog](file:///Changelog) under the new version header, categorized by Conventional Commit types (`chore`, `feat`, `fix`, `test`, `ci`, etc.).
1. Add detailed bullet points in [Changelog](file:///Changelog) under the new version header, categorized following the strict priority order:
- `chore`
- `feat`
- `fix`
- `test`
- `ci`
- `docs`
- `perf`
2. Run the `/release-notes-gen` workflow (or script directly) to analyze the changelog, delta indicator metrics, and generate/update the corresponding release notes file:
```bash
python3 build/release_gen.py
```
*Behind the scenes*: This compiles the release summary, diagnostic growth statistics, commit differences, and CLI modifications into [releases/](file:///releases/) (e.g., `releases/v2.8.42.md`).
*Behind the scenes*: This compiles the release summary, diagnostic growth statistics, commit differences, and CLI modifications into [releases/](file:///releases/) (e.g., `releases/v2.9.2.md`).

### Step 2.4: Execute Release Preflight Checks
### Step 2.4: Execute Release Preflight & Compliance Checks
Run the preflight checks to guarantee zero configuration mismatch and 100% compliance:
```bash
# Automated compliance sentinel:
perl build/check_compliance.pl

# Preflight checks:
/release-preflight
```
*Behind the scenes*: This workflow:
1. Verifies version consistency across files (via [tests/version_consistency.t](file:///tests/version_consistency.t)).
2. Verifies that release notes exist in `releases/v[VERSION].md`.
2. Verifies single-file architecture, zero-dependency CPAN rules, and release note presence.
3. Checks that all commit messages follow conventional commits since the last tag.
4. Checks project documentation formatting and metadata compliance.
5. Validates `mysqltuner.pl` code formatting (`make check-tidy`).
Expand Down
26 changes: 20 additions & 6 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -178,15 +178,29 @@ license your work under the [GPLv3 License].
Copy of the license is available at [LICENSE]

<a name="code-conventions"></a>
## MySQLTuner Code Conventions

1. Check code convention using **perltidy** and **perlcritic**
2. Don't manually update the version number in `mysqltuner.pl`.

## MySQLTuner Code Conventions & Quality Standards

To maintain MySQLTuner's production stability, portability, and governance, all contributions must strictly adhere to the following rules:

1. **Single-File Architecture & Zero-Dependency CPAN Policy**:
- `mysqltuner.pl` must remain a single, self-contained executable file.
- Module splitting or external non-core CPAN dependencies are strictly prohibited.
2. **Mandatory Unit Tests (TDD)**:
- Every code modification, new indicator, or bugfix must be accompanied by dedicated unit tests in `tests/` using `Test::More`.
- Run the full suite before submitting: `prove -j4 -r tests/` or `make unit-tests`.
3. **Conventional Commits**:
- All commit messages must follow the Conventional Commits format: `<type>(<scope>): <description>`.
- Allowed types: `feat:`, `fix:`, `chore:`, `docs:`, `perf:`, `test:`, `ci:`, `refactor:`.
- Commit formatting is validated by `@commitlint/cz-commitlint` via `npm run commit` or git pre-commit hooks.
4. **Code Formatting & Cleanliness**:
- Format Perl code using `perltidy` (`make tidy` and `make check-tidy`).
- Static SQL queries must be uppercase and checked via `perl build/audit_tests.pl`.
5. **No Direct Master Commits**:
- All development occurs in dedicated feature/fix branches. Release orchestration and version bumping are exclusively handled via release workflows.

[Enhancement issue]:https://github.com/jmrenouard/MySQLTuner-perl/labels/enhancement
[GitHub issue search]:https://github.com/jmrenouard/MySQLTuner-perl/search?type=Issues
[git commit message guidelines]:http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html
[git commit message guidelines]:https://www.conventionalcommits.org/
[Open a Pull Request]:https://help.github.com/articles/using-pull-requests/
[GPLv3 License]:https://en.wikipedia.org/wiki/GNU_General_Public_License
[LICENSE]:https://github.com/jmrenouard/MySQLTuner-perl/blob/master/LICENSE
2 changes: 1 addition & 1 deletion CURRENT_VERSION.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2.9.1
2.9.2
28 changes: 25 additions & 3 deletions Changelog
Original file line number Diff line number Diff line change
@@ -1,9 +1,31 @@
# MySQLTuner Changelog

2.9.1 2026-07-27
2.9.2 2026-07-29
- chore(deps): replace abandoned cz-conventional-changelog with @commitlint/cz-commitlint (#587)
- feat(galera): add network queue, PK certification, and split-brain quorum diagnostics (#975)
- feat(main): enhance MySQL InnoDB Cluster & Group Replication diagnostics (#976)
- feat(main): add --skipworkload option to skip workload analysis & traffic profiling (#986)
- fix(galera): harden wsrep options and status checks against uninitialized values (#975)
- fix(main): enhance storage detection for HW RAID controllers (AVAGO/LSI MegaRAID) (#957)
- fix(main): fall back to /usr/share/mysqltuner for vulnerabilities.csv (#985)
- fix(versions): fix boolean evaluation of 0 EOL dates in sync_eol_dates.pl
- fix(ci): resolve DB_PASS from multi-db-docker-env .env file in test_ha.sh
- test(cve): add unit test unit_cvefile_fallback.t for downstream cvefile fallback resolution (#985)
- test(galera): add unit test unit_galera_enhanced.t for Galera diagnostics (#975)
- test(lab): add unit test test_issue_957.t for storage detection logic (#957)
- test(main): add unit tests for --skipworkload option and auto-increment optimization (#986)
- ci(build): add rules scope to check_compliance.pl allowed conventional commit scopes
- ci(lab): refine transport connection timeout pattern in output analyzer
- ci(ci): update and pin CodeQL and setup-mysql action digests
- docs(container): add comprehensive AI MCP server integration guides in English and French (#954)
- docs(docs): update all specification files with YAML frontmatter test bindings and mandatory Goal/Verification sections
- docs(docs): fix broken star history chart link (#981)
- docs(docs): enrich embedded POD documentation with comprehensive CLI reference
- docs(rules): align release governance, conventional commit, and git tagging rules (#739)
- docs(versions): synchronize v2.9.2 version strings, EOL LTS support checks, and multi-language README release links
- perf(main): optimize auto-increment exhaustion check by retrieving COLUMN_TYPE in initial join query (#986)

- chore(build): allow build scope in compliance auditor
- chore(build): rewrite dev_sync and doc_sync in Perl for consistency
2.9.1 2026-07-27
- chore(deps): update actions/checkout action to v7.0.0 (#961)
- chore(deps): update all non-major dependencies (@commitlint/cli, @commitlint/config-conventional, brace-expansion, commitizen)
- chore(deps): update devops-infra/action-commit-push digest to f27e0951b748268e6ac8d91861eeac5bc2bd36a8 (#958)
Expand Down
32 changes: 32 additions & 0 deletions INTERNALS.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,9 @@
- [MySQLTuner Sysbench Integration](#mysqltuner-sysbench-integration)
- [MySQLTuner Historical Trend Analysis](#mysqltuner-historical-trend-analysis)
- [MySQLTuner Aborted Connections Management](#mysqltuner-aborted-connections-management)
- [MySQLTuner AI Agent Remediation & MCP Server Architecture](#mysqltuner-ai-agent-remediation--mcp-server-architecture)
- [MySQLTuner Workload Profiling & Auto-Increment Optimization](#mysqltuner-workload-profiling--auto-increment-optimization)
- [MySQLTuner Enhanced Galera Cluster & Group Replication](#mysqltuner-enhanced-galera-cluster--group-replication)

## MySQLTuner steps

Expand Down Expand Up @@ -689,3 +692,32 @@ Activated with `--structstat` or `--verbose`.
- Atomic writes to prevent corruption
- Transport-specific host and container identifiers in state file path to prevent collisions
- Adjusts the aborted connections count to subtract connections caused by MySQLTuner's own password strength checks

## MySQLTuner AI Agent Remediation & MCP Server Architecture

- **Actionable JSON (`--agent-json`)**:
- Emits normalized JSON schema containing prioritized remediation recommendations.
- Every finding includes: `category`, `rule_id`, `risk_level` (`Low`, `Medium`, `High`, `Critical`), `impact_score` (`1`-`10`), `fix_statement` (`SET GLOBAL ...`), and `rollback_statement`.
- Machine-readable structure designed for deterministic AI agent execution without unstructured text parsing.
- **Model Context Protocol (MCP) Daemon**:
- Lightweight Python wrapper (`build/mcp_server.py`) exposing MySQLTuner as a standardized JSON-RPC 2.0 stdio / SSE tool.
- Exposes tools: `run_audit`, `get_latest_audit`, `apply_recommendation`, `rollback_recommendation`.

## MySQLTuner Workload Profiling & Auto-Increment Optimization

- **High-Performance Table Churn & Auto-Increment Scanning**:
- Optimized SQL query combining `information_schema.TABLES` and `information_schema.COLUMNS` to evaluate AUTO_INCREMENT usage percentages in a single batch pass.
- Detects exhausted keys near the max integer limit for `TINYINT`, `SMALLINT`, `MEDIUMINT`, `INT`, and `BIGINT`.
- **Fast-Track Workload Bypass (`--skipworkload`)**:
- For massive enterprise deployments (>10,000 tables), `--skipworkload` bypasses heavy information_schema joins to complete connection, memory, buffer pool, and replication diagnostics in sub-second execution times.

## MySQLTuner Enhanced Galera Cluster & Group Replication

- **Galera Multi-Master Diagnostics**:
- Evaluates `wsrep_flow_control_paused` to identify cluster-wide replication pauses and lag.
- Inspects `wsrep_provider_options` (`gcs.fc_limit`, `gcs.fc_factor`) to detect misconfigured replication flow thresholds.
- Warns on non-primary key tables (`wsrep_certify_non_pk = OFF`) and even cluster node counts risking split-brain scenarios.
- **MySQL Group Replication & InnoDB Cluster**:
- Analyzes `performance_schema.replication_group_members` for node states (`ONLINE`, `RECOVERING`, `UNREACHABLE`).
- Audits single-primary vs multi-primary configurations and transaction certification queues.

28 changes: 18 additions & 10 deletions MEMORY_DB.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# MySQLTuner-perl Version Memory

## Current Version: 2.9.0
## Current Version: 2.9.2

## Project Evolution & Systemic Findings

Expand All @@ -18,6 +18,14 @@ Migrated several external commands to native Core Perl to reduce fork overhead a
- `uptime` -> `/proc/uptime` parsing or `$^T` calculation

### Recent Audits
- **v2.9.2**:
- Comprehensive Model Context Protocol (MCP) AI Server integration guides in English and French.
- Hardware RAID controller storage detection for AVAGO/LSI MegaRAID (`storcli` / `perccli` / `megacli`).
- Unified E2E High Availability laboratory test suite across Galera, InnoDB Cluster, and Replication topologies.
- Synchronized EOL API date auditing script (`build/sync_eol_dates.pl`) and active LTS version validation.
- **v2.9.1**:
- Automated release orchestrator (`/release-manager`) for single-command version bumps, release notes, and tags.
- Enhanced Docker log ingestion and systemd container diagnostics.
- **v2.8.44**:
- Developed automated specification consistency auditor (`build/audit_specifications.pl`) and Spec-to-Test Mapping Matrix.
- Developed LTS API auto-bumping utility (`build/lts_autobump.pl`) and GitHub Actions integration.
Expand Down Expand Up @@ -53,28 +61,28 @@ Migrated several external commands to native Core Perl to reduce fork overhead a

The following files track and contain the MySQLTuner version string. Below are the mechanisms to modify or regenerate each:

1. **[mysqltuner.pl](file:///home/jmren/GIT_REPOS/MySQLTuner-perl/mysqltuner.pl)** (Main script & POD documentation):
1. **[mysqltuner.pl](file:///mysqltuner.pl)** (Main script & POD documentation):
- **Locations**: File header (`# mysqltuner.pl - Version X.Y.Z`), internal variable (`our $tunerversion = "X.Y.Z";`), and POD documentation.
- **Update Command**: Makefile targets `make release VERSION=X.Y.Z` or `make increment_sub_version` automatically replace old versions using `sed`.

2. **[CURRENT_VERSION.txt](file:///home/jmren/GIT_REPOS/MySQLTuner-perl/CURRENT_VERSION.txt)** (Minimal version manifest):
- **Update Command**: Run `make generate_version_file` to extract the version from the [mysqltuner.pl](file:///home/jmren/GIT_REPOS/MySQLTuner-perl/mysqltuner.pl) header.
2. **[CURRENT_VERSION.txt](file:///CURRENT_VERSION.txt)** (Minimal version manifest):
- **Update Command**: Run `make generate_version_file` to extract the version from the [mysqltuner.pl](file:///mysqltuner.pl) header.

3. **[USAGE.md](file:///home/jmren/GIT_REPOS/MySQLTuner-perl/USAGE.md)** (Markdown CLI manual):
3. **[USAGE.md](file:///USAGE.md)** (Markdown CLI manual):
- **Update Command**: Run `rm -f USAGE.md && pod2markdown mysqltuner.pl > USAGE.md` or `make generate_usage`.

4. **[README.md](file:///home/jmren/GIT_REPOS/MySQLTuner-perl/README.md)** (Version badge and links):
4. **[README.md](file:///README.md)** (Version badge and links):
- **Update Command**: Handled automatically during `make release VERSION=X.Y.Z` using `sed` substitution.

5. **[SECURITY.md](file:///home/jmren/GIT_REPOS/MySQLTuner-perl/SECURITY.md)** (Supported versions table):
5. **[SECURITY.md](file:///SECURITY.md)** (Supported versions table):
- **Update Command**: Updated manually or via sed-based version bumps.

6. **[MEMORY_DB.md](file:///home/jmren/GIT_REPOS/MySQLTuner-perl/MEMORY_DB.md)** (Project version memory):
6. **[MEMORY_DB.md](file:///MEMORY_DB.md)** (Project version memory):
- **Update Command**: Updated automatically during `make release VERSION=X.Y.Z` using `sed` substitution.

7. **[Changelog](file:///home/jmren/GIT_REPOS/MySQLTuner-perl/Changelog)** (History log):
7. **[Changelog](file:///Changelog)** (History log):
- **Update Command**: Updated automatically during `make release VERSION=X.Y.Z` using `sed` substitution.

8. **[releases/v[VERSION].md](file:///home/jmren/GIT_REPOS/MySQLTuner-perl/releases/)** (Release notes):
8. **[releases/v[VERSION].md](file:///releases/)** (Release notes):
- **Update Command**: Generated via `python3 build/release_gen.py`.

7 changes: 7 additions & 0 deletions POTENTIAL_ISSUES.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,13 @@ None
- **Severity**: 🟑 MEDIUM β€” Style standard compliance failure
- **Status**: [x] **FIXED** β€” Formatted `mysqltuner.pl` using `perltidy` and `dos2unix`. Verified that `make check-tidy` passes cleanly.

#### PI-021: Extreme slowness in check_workload_traffic on large databases (Issue #986)
- **Source**: `mysqltuner.pl` lines 1997-2051 (`check_workload_traffic`)
- **Impact**: Takes hours to complete on servers with thousands of tables/databases.
- **Root Cause**: Executing an N+1 query inside the loop to fetch `COLUMN_TYPE` on `information_schema.columns` for every single auto-increment column, plus lack of a bypass option.
- **Severity**: 🟠 HIGH β€” Major operational performance bottleneck
- **Status**: [x] **FIXED** β€” Implemented `--skipworkload` option and optimized query to retrieve `COLUMN_TYPE` directly in the main join query, eliminating the query loop. Verified via unit tests.

### 🟒 Low Issues

None
Expand Down
Loading