From 0ef49169a9416675458ace877b936ab2f8df007e Mon Sep 17 00:00:00 2001 From: santostelmo Date: Wed, 18 Feb 2026 08:55:10 +0100 Subject: [PATCH 1/6] [18.0][ADD] database_autovacuum_tuning --- database_autovacuum_tuning/README.rst | 118 +++++ database_autovacuum_tuning/__init__.py | 1 + database_autovacuum_tuning/__manifest__.py | 24 + .../data/config_parameter.xml | 18 + database_autovacuum_tuning/data/ir_cron.xml | 13 + database_autovacuum_tuning/models/__init__.py | 2 + .../models/database_autovacuum_tuning.py | 85 ++++ .../models/res_config_settings.py | 14 + database_autovacuum_tuning/pyproject.toml | 3 + .../readme/CONTRIBUTORS.md | 2 + .../readme/DESCRIPTION.md | 12 + database_autovacuum_tuning/readme/USAGE.md | 20 + .../security/ir.model.access.csv | 2 + .../static/description/index.html | 466 ++++++++++++++++++ database_autovacuum_tuning/tests/__init__.py | 1 + .../tests/test_database_autovacuum_tunning.py | 36 ++ .../database_autovacuum_tuning_views.xml | 49 ++ .../views/res_config_settings_views.xml | 24 + 18 files changed, 890 insertions(+) create mode 100644 database_autovacuum_tuning/README.rst create mode 100644 database_autovacuum_tuning/__init__.py create mode 100644 database_autovacuum_tuning/__manifest__.py create mode 100644 database_autovacuum_tuning/data/config_parameter.xml create mode 100644 database_autovacuum_tuning/data/ir_cron.xml create mode 100644 database_autovacuum_tuning/models/__init__.py create mode 100644 database_autovacuum_tuning/models/database_autovacuum_tuning.py create mode 100644 database_autovacuum_tuning/models/res_config_settings.py create mode 100644 database_autovacuum_tuning/pyproject.toml create mode 100644 database_autovacuum_tuning/readme/CONTRIBUTORS.md create mode 100644 database_autovacuum_tuning/readme/DESCRIPTION.md create mode 100644 database_autovacuum_tuning/readme/USAGE.md create mode 100644 database_autovacuum_tuning/security/ir.model.access.csv create mode 100644 database_autovacuum_tuning/static/description/index.html create mode 100644 database_autovacuum_tuning/tests/__init__.py create mode 100644 database_autovacuum_tuning/tests/test_database_autovacuum_tunning.py create mode 100644 database_autovacuum_tuning/views/database_autovacuum_tuning_views.xml create mode 100644 database_autovacuum_tuning/views/res_config_settings_views.xml diff --git a/database_autovacuum_tuning/README.rst b/database_autovacuum_tuning/README.rst new file mode 100644 index 00000000000..5dcbc419bbf --- /dev/null +++ b/database_autovacuum_tuning/README.rst @@ -0,0 +1,118 @@ +========================== +Database Autovacuum Tuning +========================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:162a7723c383e0b6239b46e50d6884767430de1a22f1c42a6c90d80e25b1b4fd + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-LGPL--3-blue.png + :target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html + :alt: License: LGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--tools-lightgray.png?logo=github + :target: https://github.com/OCA/server-tools/tree/18.0/database_autovacuum_tuning + :alt: OCA/server-tools +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/server-tools-18-0/server-tools-18-0-database_autovacuum_tuning + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/server-tools&target_branch=18.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +Database Autovacuum Tuning helps administrators keep PostgreSQL healthy +by exposing recommended autovacuum settings in Odoo. It provides +guidance and documentation for sizing thresholds and scale factors so +large, busy databases avoid table bloat and excessive vacuum lag. Use it +to standardize autovacuum configuration across environments and speed up +maintenance operations without manual tuning. + +This module is mostly useful for PostgreSQL <= 17. PostgreSQL 18.0 +introduces the ``autovacuum_vacuum_max_threshold`` parameter, which +already provides the capability this module targets. + +The ``pgstattuple`` extension must be installed on the database. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +1. Install the module on the database you want to tune. + +2. Go to Settings > Technical > Database Structure > Database Autovacuum + Tuning and review the recommended thresholds and scale factors. + +3. If needed, override the defaults using the following system + parameters: + + - ``database_autovacuum_tuning.autovacuum_vacuum_max_threshold`` + - ``database_autovacuum_tuning.autovacuum_vacuum_analyze_max_threshold`` + +4. The configuration parameters are applied to tables by the daily cron + job. When the number of dead tuples in a table exceeds the vacuum + threshold, it applies the following configuration: + + .. code:: sql + + ALTER TABLE {schemaname}.{tablename} SET ( + autovacuum_vacuum_scale_factor = 0, + autovacuum_vacuum_threshold = %s, + autovacuum_analyze_scale_factor = 0, + autovacuum_analyze_threshold = %s + ) + +5. Monitor vacuum activity and table bloat, then adjust the settings if + your workload changes. + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +------- + +* Camptocamp + +Contributors +------------ + +- Telmo Santos +- Alexandre Fayolle + +Maintainers +----------- + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +This module is part of the `OCA/server-tools `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/database_autovacuum_tuning/__init__.py b/database_autovacuum_tuning/__init__.py new file mode 100644 index 00000000000..0650744f6bc --- /dev/null +++ b/database_autovacuum_tuning/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/database_autovacuum_tuning/__manifest__.py b/database_autovacuum_tuning/__manifest__.py new file mode 100644 index 00000000000..7b1508ca6d4 --- /dev/null +++ b/database_autovacuum_tuning/__manifest__.py @@ -0,0 +1,24 @@ +# Copyright 2026 Camptocamp (https://www.camptocamp.com). +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html) + +{ + "name": "Database Autovacuum Tuning", + "summary": "Scheduled checks for Odoo autovacuum thresholds and scale factors", + "version": "18.0.1.0.1", + "author": "Camptocamp, Odoo Community Association (OCA)", + "website": "https://github.com/OCA/server-tools", + "category": "Tools", + "depends": [ + "base_setup", + ], + "data": [ + "data/config_parameter.xml", + "data/ir_cron.xml", + "security/ir.model.access.csv", + "views/res_config_settings_views.xml", + "views/database_autovacuum_tuning_views.xml", + ], + "development_status": "Alpha", + "license": "LGPL-3", + "installable": True, +} diff --git a/database_autovacuum_tuning/data/config_parameter.xml b/database_autovacuum_tuning/data/config_parameter.xml new file mode 100644 index 00000000000..057ab3e8bb6 --- /dev/null +++ b/database_autovacuum_tuning/data/config_parameter.xml @@ -0,0 +1,18 @@ + + + + database_autovacuum_tuning.autovacuum_vacuum_max_threshold + 100000 + + + database_autovacuum_tuning.autovacuum_vacuum_analyze_max_threshold + 50000 + + diff --git a/database_autovacuum_tuning/data/ir_cron.xml b/database_autovacuum_tuning/data/ir_cron.xml new file mode 100644 index 00000000000..7929b42f093 --- /dev/null +++ b/database_autovacuum_tuning/data/ir_cron.xml @@ -0,0 +1,13 @@ + + + + Database Autovacuum Tuning + + code + model._db_autovacuum_tune() + 1 + days + True + + + diff --git a/database_autovacuum_tuning/models/__init__.py b/database_autovacuum_tuning/models/__init__.py new file mode 100644 index 00000000000..c3700214bb1 --- /dev/null +++ b/database_autovacuum_tuning/models/__init__.py @@ -0,0 +1,2 @@ +from . import database_autovacuum_tuning +from . import res_config_settings diff --git a/database_autovacuum_tuning/models/database_autovacuum_tuning.py b/database_autovacuum_tuning/models/database_autovacuum_tuning.py new file mode 100644 index 00000000000..fc0cf017a0e --- /dev/null +++ b/database_autovacuum_tuning/models/database_autovacuum_tuning.py @@ -0,0 +1,85 @@ +# Copyright 2026 Camptocamp (https://www.camptocamp.com). +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html) + + +from odoo import api, fields, models + + +class DatabaseAutovacuumTuning(models.Model): + _name = "database.autovacuum.tuning" + _description = "Database Autovacuum Tuning" + + name = fields.Char(required=True, help="Table name") + vacuum_threshold = fields.Integer() + analyze_threshold = fields.Integer() + + @api.model + def _db_autovacuum_tune(self): + vacuum_threshold, analyze_threshold = self._get_thresholds() + if vacuum_threshold <= 0: + return + results = self._get_tables_exceeding_dead_tuples(vacuum_threshold) + for schemaname, tablename, _ in results: + self.env.cr.execute( + f""" + ALTER TABLE {schemaname}.{tablename} SET ( + autovacuum_vacuum_scale_factor = 0, + autovacuum_vacuum_threshold = %s, + autovacuum_analyze_scale_factor = 0, + autovacuum_analyze_threshold = %s + ) + """, + (vacuum_threshold, analyze_threshold), + ) + self.sudo().create( + { + "name": f"{schemaname}.{tablename}", + "vacuum_threshold": vacuum_threshold, + "analyze_threshold": analyze_threshold, + } + ) + + def _get_tables_exceeding_dead_tuples(self, vacuum_threshold): + query = """ + SELECT + t.schemaname, + t.tablename, + st.n_dead_tup + FROM pg_tables AS t + JOIN pg_stat_all_tables AS st + ON st.schemaname = t.schemaname + AND st.relname = t.tablename + WHERE t.tableowner = current_user + AND t.schemaname = 'public' + AND st.n_dead_tup > %s + ORDER BY t.schemaname, t.tablename + """ + self.env.cr.execute(query, (vacuum_threshold,)) + return self.env.cr.fetchall() + + def _get_thresholds(self): + try: + vacuum_threshold = int( + self.env["ir.config_parameter"] + .sudo() + .get_param( + "database_autovacuum_tuning.autovacuum_vacuum_max_threshold", + default="0", + ) + ) + except ValueError: + vacuum_threshold = 0 + + try: + analyze_threshold = int( + self.env["ir.config_parameter"] + .sudo() + .get_param( + "database_autovacuum_tuning.autovacuum_vacuum_analyze_max_threshold", + default="0", + ) + ) + except ValueError: + analyze_threshold = 0 + + return vacuum_threshold, analyze_threshold diff --git a/database_autovacuum_tuning/models/res_config_settings.py b/database_autovacuum_tuning/models/res_config_settings.py new file mode 100644 index 00000000000..f864d9daaab --- /dev/null +++ b/database_autovacuum_tuning/models/res_config_settings.py @@ -0,0 +1,14 @@ +# Copyright 2026 Camptocamp (https://www.camptocamp.com). +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html) +from odoo import fields, models + + +class ResConfigSettings(models.TransientModel): + _inherit = "res.config.settings" + + autovacuum_vacuum_max_threshold = fields.Integer( + config_parameter="database_autovacuum_tuning.autovacuum_vacuum_max_threshold", + ) + autovacuum_vacuum_analyze_max_threshold = fields.Integer( + config_parameter="database_autovacuum_tuning.autovacuum_vacuum_analyze_max_threshold", + ) diff --git a/database_autovacuum_tuning/pyproject.toml b/database_autovacuum_tuning/pyproject.toml new file mode 100644 index 00000000000..4231d0cccb3 --- /dev/null +++ b/database_autovacuum_tuning/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/database_autovacuum_tuning/readme/CONTRIBUTORS.md b/database_autovacuum_tuning/readme/CONTRIBUTORS.md new file mode 100644 index 00000000000..62e88c57a16 --- /dev/null +++ b/database_autovacuum_tuning/readme/CONTRIBUTORS.md @@ -0,0 +1,2 @@ +- Telmo Santos \<\> +- Alexandre Fayolle \<\> diff --git a/database_autovacuum_tuning/readme/DESCRIPTION.md b/database_autovacuum_tuning/readme/DESCRIPTION.md new file mode 100644 index 00000000000..9193c261573 --- /dev/null +++ b/database_autovacuum_tuning/readme/DESCRIPTION.md @@ -0,0 +1,12 @@ +Database Autovacuum Tuning helps administrators keep PostgreSQL healthy by +exposing recommended autovacuum settings in Odoo. It provides guidance and +documentation for sizing thresholds and scale factors so large, busy databases +avoid table bloat and excessive vacuum lag. Use it to standardize autovacuum +configuration across environments and speed up maintenance operations without +manual tuning. + +This module is mostly useful for PostgreSQL <= 17. PostgreSQL 18.0 introduces +the `autovacuum_vacuum_max_threshold` parameter, which already provides the +capability this module targets. + +The `pgstattuple` extension must be installed on the database. \ No newline at end of file diff --git a/database_autovacuum_tuning/readme/USAGE.md b/database_autovacuum_tuning/readme/USAGE.md new file mode 100644 index 00000000000..c82e039acc4 --- /dev/null +++ b/database_autovacuum_tuning/readme/USAGE.md @@ -0,0 +1,20 @@ +1. Install the module on the database you want to tune. +2. Go to Settings > Technical > Database Structure > Database Autovacuum + Tuning and review the recommended thresholds and scale factors. +3. If needed, override the defaults using the following system parameters: + - `database_autovacuum_tuning.autovacuum_vacuum_max_threshold` + - `database_autovacuum_tuning.autovacuum_vacuum_analyze_max_threshold` +4. The configuration parameters are applied to tables by the daily cron job. + When the number of dead tuples in a table exceeds the vacuum threshold, it + applies the following configuration: + + ```sql + ALTER TABLE {schemaname}.{tablename} SET ( + autovacuum_vacuum_scale_factor = 0, + autovacuum_vacuum_threshold = %s, + autovacuum_analyze_scale_factor = 0, + autovacuum_analyze_threshold = %s + ) + ``` +5. Monitor vacuum activity and table bloat, then adjust the settings if your + workload changes. diff --git a/database_autovacuum_tuning/security/ir.model.access.csv b/database_autovacuum_tuning/security/ir.model.access.csv new file mode 100644 index 00000000000..432a55c91b6 --- /dev/null +++ b/database_autovacuum_tuning/security/ir.model.access.csv @@ -0,0 +1,2 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_database_autovacuum_tuning_system,access_database_autovacuum_tuning_system,model_database_autovacuum_tuning,base.group_system,1,0,1,1 diff --git a/database_autovacuum_tuning/static/description/index.html b/database_autovacuum_tuning/static/description/index.html new file mode 100644 index 00000000000..e909053750c --- /dev/null +++ b/database_autovacuum_tuning/static/description/index.html @@ -0,0 +1,466 @@ + + + + + +Database Autovacuum Tuning + + + +
+

Database Autovacuum Tuning

+ + +

Beta License: LGPL-3 OCA/server-tools Translate me on Weblate Try me on Runboat

+

Database Autovacuum Tuning helps administrators keep PostgreSQL healthy +by exposing recommended autovacuum settings in Odoo. It provides +guidance and documentation for sizing thresholds and scale factors so +large, busy databases avoid table bloat and excessive vacuum lag. Use it +to standardize autovacuum configuration across environments and speed up +maintenance operations without manual tuning.

+

This module is mostly useful for PostgreSQL <= 17. PostgreSQL 18.0 +introduces the autovacuum_vacuum_max_threshold parameter, which +already provides the capability this module targets.

+

The pgstattuple extension must be installed on the database.

+

Table of contents

+ +
+

Usage

+
    +
  1. Install the module on the database you want to tune.

    +
  2. +
  3. Go to Settings > Technical > Database Structure > Database Autovacuum +Tuning and review the recommended thresholds and scale factors.

    +
  4. +
  5. If needed, override the defaults using the following system +parameters:

    +
      +
    • database_autovacuum_tuning.autovacuum_vacuum_max_threshold
    • +
    • database_autovacuum_tuning.autovacuum_vacuum_analyze_max_threshold
    • +
    +
  6. +
  7. The configuration parameters are applied to tables by the daily cron +job. When the number of dead tuples in a table exceeds the vacuum +threshold, it applies the following configuration:

    +
    +ALTER TABLE {schemaname}.{tablename} SET (
    +     autovacuum_vacuum_scale_factor = 0,
    +     autovacuum_vacuum_threshold = %s,
    +     autovacuum_analyze_scale_factor = 0,
    +     autovacuum_analyze_threshold = %s
    +)
    +
    +
  8. +
  9. Monitor vacuum activity and table bloat, then adjust the settings if +your workload changes.

    +
  10. +
+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Camptocamp
  • +
+
+ +
+

Maintainers

+

This module is maintained by the OCA.

+ +Odoo Community Association + +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

This module is part of the OCA/server-tools project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/database_autovacuum_tuning/tests/__init__.py b/database_autovacuum_tuning/tests/__init__.py new file mode 100644 index 00000000000..a17e75ae912 --- /dev/null +++ b/database_autovacuum_tuning/tests/__init__.py @@ -0,0 +1 @@ +from . import test_database_autovacuum_tunning diff --git a/database_autovacuum_tuning/tests/test_database_autovacuum_tunning.py b/database_autovacuum_tuning/tests/test_database_autovacuum_tunning.py new file mode 100644 index 00000000000..e285197e9e1 --- /dev/null +++ b/database_autovacuum_tuning/tests/test_database_autovacuum_tunning.py @@ -0,0 +1,36 @@ +# Copyright 2026 Camptocamp +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). + +from unittest.mock import patch + +from odoo.tests import TransactionCase + + +class TestAutovacuumTunning(TransactionCase): + def _set_thresholds(self, vacuum_threshold=1, analyze_threshold=1): + params = self.env["ir.config_parameter"].sudo() + params.set_param( + "database_autovacuum_tuning.autovacuum_vacuum_max_threshold", + str(vacuum_threshold), + ) + params.set_param( + "database_autovacuum_tuning.autovacuum_vacuum_analyze_max_threshold", + str(analyze_threshold), + ) + + def test_tune_creates_record_for_res_partner(self): + # Set low thresholds to ensure res_partner exceeds them + self._set_thresholds(vacuum_threshold=9, analyze_threshold=5) + # Mock the method to return res_partner as exceeding the thresholds + with patch.object( + self.env.registry["database.autovacuum.tuning"], + "_get_tables_exceeding_dead_tuples", + return_value=[("public", "res_partner", 10)], + ): + self.env["database.autovacuum.tuning"]._db_autovacuum_tune() + record = self.env["database.autovacuum.tuning"].search( + [("name", "=", "public.res_partner")], + limit=1, + ) + + self.assertTrue(record) diff --git a/database_autovacuum_tuning/views/database_autovacuum_tuning_views.xml b/database_autovacuum_tuning/views/database_autovacuum_tuning_views.xml new file mode 100644 index 00000000000..20c6e461166 --- /dev/null +++ b/database_autovacuum_tuning/views/database_autovacuum_tuning_views.xml @@ -0,0 +1,49 @@ + + + + database.autovacuum.tuning + + + + + + + + + + + + database.autovacuum.tuning + + + + + + + + + + + + + Database Vacuum Tuning + database.autovacuum.tuning + list + + + + + Database Autovacuum Tuning + + + + + diff --git a/database_autovacuum_tuning/views/res_config_settings_views.xml b/database_autovacuum_tuning/views/res_config_settings_views.xml new file mode 100644 index 00000000000..b6204ee3ab4 --- /dev/null +++ b/database_autovacuum_tuning/views/res_config_settings_views.xml @@ -0,0 +1,24 @@ + + + + Database Autovacuum Tuning Settings + res.config.settings + + + + + + + + + + + + + From 5c9552b3f4185ad71e6172931bd067e62b206908 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Thu, 30 Apr 2026 05:09:19 +0000 Subject: [PATCH 2/6] [UPD] Update database_autovacuum_tuning.pot --- .../i18n/database_autovacuum_tuning.pot | 122 ++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 database_autovacuum_tuning/i18n/database_autovacuum_tuning.pot diff --git a/database_autovacuum_tuning/i18n/database_autovacuum_tuning.pot b/database_autovacuum_tuning/i18n/database_autovacuum_tuning.pot new file mode 100644 index 00000000000..50eb04f323d --- /dev/null +++ b/database_autovacuum_tuning/i18n/database_autovacuum_tuning.pot @@ -0,0 +1,122 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * database_autovacuum_tuning +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 18.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: database_autovacuum_tuning +#: model:ir.model.fields,field_description:database_autovacuum_tuning.field_database_autovacuum_tuning__analyze_threshold +msgid "Analyze Threshold" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.model.fields,field_description:database_autovacuum_tuning.field_res_config_settings__autovacuum_vacuum_analyze_max_threshold +msgid "Autovacuum Vacuum Analyze Max Threshold" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.model.fields,field_description:database_autovacuum_tuning.field_res_config_settings__autovacuum_vacuum_max_threshold +msgid "Autovacuum Vacuum Max Threshold" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.model,name:database_autovacuum_tuning.model_res_config_settings +msgid "Config Settings" +msgstr "" + +#. module: database_autovacuum_tuning +#: model_terms:ir.ui.view,arch_db:database_autovacuum_tuning.databaseautovacuum_tuning_view_search +msgid "Create Date" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.model.fields,field_description:database_autovacuum_tuning.field_database_autovacuum_tuning__create_uid +msgid "Created by" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.model.fields,field_description:database_autovacuum_tuning.field_database_autovacuum_tuning__create_date +msgid "Created on" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.actions.server,name:database_autovacuum_tuning.cron_database_autovacuum_tuning_ir_actions_server +#: model:ir.model,name:database_autovacuum_tuning.model_database_autovacuum_tuning +#: model:ir.ui.menu,name:database_autovacuum_tuning.menu_model_autovacuum_tuning +msgid "Database Autovacuum Tuning" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.actions.act_window,name:database_autovacuum_tuning.action_model_autovacuum_tuning +msgid "Database Vacuum Tuning" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.model.fields,field_description:database_autovacuum_tuning.field_database_autovacuum_tuning__display_name +msgid "Display Name" +msgstr "" + +#. module: database_autovacuum_tuning +#: model_terms:ir.ui.view,arch_db:database_autovacuum_tuning.databaseautovacuum_tuning_view_search +msgid "Group By" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.model.fields,field_description:database_autovacuum_tuning.field_database_autovacuum_tuning__id +msgid "ID" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.model.fields,field_description:database_autovacuum_tuning.field_database_autovacuum_tuning__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.model.fields,field_description:database_autovacuum_tuning.field_database_autovacuum_tuning__write_date +msgid "Last Updated on" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.model.fields,field_description:database_autovacuum_tuning.field_database_autovacuum_tuning__name +#: model_terms:ir.ui.view,arch_db:database_autovacuum_tuning.databaseautovacuum_tuning_view_search +msgid "Name" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.model.fields,field_description:database_autovacuum_tuning.field_database_autovacuum_tuning__smart_search +#: model:ir.model.fields,field_description:database_autovacuum_tuning.field_res_config_settings__smart_search +msgid "Smart Search" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.model.fields,help:database_autovacuum_tuning.field_database_autovacuum_tuning__name +msgid "Table name" +msgstr "" + +#. module: database_autovacuum_tuning +#: model_terms:ir.ui.view,arch_db:database_autovacuum_tuning.res_config_settings_view_form +msgid "" +"The maximum number of tuples that can be updated or deleted before a vacuum " +"analyze is triggered." +msgstr "" + +#. module: database_autovacuum_tuning +#: model_terms:ir.ui.view,arch_db:database_autovacuum_tuning.res_config_settings_view_form +msgid "" +"The maximum number of tuples that can be updated or deleted before a vacuum " +"is triggered." +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.model.fields,field_description:database_autovacuum_tuning.field_database_autovacuum_tuning__vacuum_threshold +msgid "Vacuum Threshold" +msgstr "" From 253d5d5432191fb5512a4893e4b980021f5737a2 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Thu, 30 Apr 2026 05:17:35 +0000 Subject: [PATCH 3/6] [BOT] post-merge updates --- database_autovacuum_tuning/README.rst | 17 ++++++--- .../static/description/icon.png | Bin 0 -> 10254 bytes .../static/description/index.html | 34 ++++++++++++------ 3 files changed, 36 insertions(+), 15 deletions(-) create mode 100644 database_autovacuum_tuning/static/description/icon.png diff --git a/database_autovacuum_tuning/README.rst b/database_autovacuum_tuning/README.rst index 5dcbc419bbf..60ee46d8437 100644 --- a/database_autovacuum_tuning/README.rst +++ b/database_autovacuum_tuning/README.rst @@ -1,3 +1,7 @@ +.. image:: https://odoo-community.org/readme-banner-image + :target: https://odoo-community.org/get-involved?utm_source=readme + :alt: Odoo Community Association + ========================== Database Autovacuum Tuning ========================== @@ -7,13 +11,13 @@ Database Autovacuum Tuning !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:162a7723c383e0b6239b46e50d6884767430de1a22f1c42a6c90d80e25b1b4fd + !! source digest: sha256:ed2cea913a7d93d83e99dc2d84a053972a91963c100bf3ea8ceca5e69c1c7315 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png +.. |badge1| image:: https://img.shields.io/badge/maturity-Alpha-red.png :target: https://odoo-community.org/page/development-status - :alt: Beta -.. |badge2| image:: https://img.shields.io/badge/licence-LGPL--3-blue.png + :alt: Alpha +.. |badge2| image:: https://img.shields.io/badge/license-LGPL--3-blue.png :target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html :alt: License: LGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--tools-lightgray.png?logo=github @@ -41,6 +45,11 @@ already provides the capability this module targets. The ``pgstattuple`` extension must be installed on the database. +.. IMPORTANT:: + This is an alpha version, the data model and design can change at any time without warning. + Only for development or testing purpose, do not use in production. + `More details on development status `_ + **Table of contents** .. contents:: diff --git a/database_autovacuum_tuning/static/description/icon.png b/database_autovacuum_tuning/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..1dcc49c24f364e9adf0afbc6fc0bac6dbecdeb11 GIT binary patch literal 10254 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 -Database Autovacuum Tuning +README.rst -
-

Database Autovacuum Tuning

+
+ + +Odoo Community Association + +
+

Database Autovacuum Tuning

-

Beta License: LGPL-3 OCA/server-tools Translate me on Weblate Try me on Runboat

+

Alpha License: LGPL-3 OCA/server-tools Translate me on Weblate Try me on Runboat

Database Autovacuum Tuning helps administrators keep PostgreSQL healthy by exposing recommended autovacuum settings in Odoo. It provides guidance and documentation for sizing thresholds and scale factors so @@ -380,6 +385,12 @@

Database Autovacuum Tuning

introduces the autovacuum_vacuum_max_threshold parameter, which already provides the capability this module targets.

The pgstattuple extension must be installed on the database.

+
+

Important

+

This is an alpha version, the data model and design can change at any time without warning. +Only for development or testing purpose, do not use in production. +More details on development status

+

Table of contents

    @@ -394,7 +405,7 @@

    Database Autovacuum Tuning

-

Usage

+

Usage

  1. Install the module on the database you want to tune.

  2. @@ -426,7 +437,7 @@

    Usage

-

Bug Tracker

+

Bug Tracker

Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed @@ -434,22 +445,22 @@

Bug Tracker

Do not contact contributors directly about support or help with technical issues.

+
From 8952a1546ec33ffe7a2a4c10b3ae6f3d6ea3b5f9 Mon Sep 17 00:00:00 2001 From: mymage Date: Tue, 5 May 2026 09:34:19 +0000 Subject: [PATCH 4/6] Added translation using Weblate (Italian) --- database_autovacuum_tuning/i18n/it.po | 123 ++++++++++++++++++++++++++ 1 file changed, 123 insertions(+) create mode 100644 database_autovacuum_tuning/i18n/it.po diff --git a/database_autovacuum_tuning/i18n/it.po b/database_autovacuum_tuning/i18n/it.po new file mode 100644 index 00000000000..033fb2e0600 --- /dev/null +++ b/database_autovacuum_tuning/i18n/it.po @@ -0,0 +1,123 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * database_autovacuum_tuning +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 18.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. module: database_autovacuum_tuning +#: model:ir.model.fields,field_description:database_autovacuum_tuning.field_database_autovacuum_tuning__analyze_threshold +msgid "Analyze Threshold" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.model.fields,field_description:database_autovacuum_tuning.field_res_config_settings__autovacuum_vacuum_analyze_max_threshold +msgid "Autovacuum Vacuum Analyze Max Threshold" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.model.fields,field_description:database_autovacuum_tuning.field_res_config_settings__autovacuum_vacuum_max_threshold +msgid "Autovacuum Vacuum Max Threshold" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.model,name:database_autovacuum_tuning.model_res_config_settings +msgid "Config Settings" +msgstr "" + +#. module: database_autovacuum_tuning +#: model_terms:ir.ui.view,arch_db:database_autovacuum_tuning.databaseautovacuum_tuning_view_search +msgid "Create Date" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.model.fields,field_description:database_autovacuum_tuning.field_database_autovacuum_tuning__create_uid +msgid "Created by" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.model.fields,field_description:database_autovacuum_tuning.field_database_autovacuum_tuning__create_date +msgid "Created on" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.actions.server,name:database_autovacuum_tuning.cron_database_autovacuum_tuning_ir_actions_server +#: model:ir.model,name:database_autovacuum_tuning.model_database_autovacuum_tuning +#: model:ir.ui.menu,name:database_autovacuum_tuning.menu_model_autovacuum_tuning +msgid "Database Autovacuum Tuning" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.actions.act_window,name:database_autovacuum_tuning.action_model_autovacuum_tuning +msgid "Database Vacuum Tuning" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.model.fields,field_description:database_autovacuum_tuning.field_database_autovacuum_tuning__display_name +msgid "Display Name" +msgstr "" + +#. module: database_autovacuum_tuning +#: model_terms:ir.ui.view,arch_db:database_autovacuum_tuning.databaseautovacuum_tuning_view_search +msgid "Group By" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.model.fields,field_description:database_autovacuum_tuning.field_database_autovacuum_tuning__id +msgid "ID" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.model.fields,field_description:database_autovacuum_tuning.field_database_autovacuum_tuning__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.model.fields,field_description:database_autovacuum_tuning.field_database_autovacuum_tuning__write_date +msgid "Last Updated on" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.model.fields,field_description:database_autovacuum_tuning.field_database_autovacuum_tuning__name +#: model_terms:ir.ui.view,arch_db:database_autovacuum_tuning.databaseautovacuum_tuning_view_search +msgid "Name" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.model.fields,field_description:database_autovacuum_tuning.field_database_autovacuum_tuning__smart_search +#: model:ir.model.fields,field_description:database_autovacuum_tuning.field_res_config_settings__smart_search +msgid "Smart Search" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.model.fields,help:database_autovacuum_tuning.field_database_autovacuum_tuning__name +msgid "Table name" +msgstr "" + +#. module: database_autovacuum_tuning +#: model_terms:ir.ui.view,arch_db:database_autovacuum_tuning.res_config_settings_view_form +msgid "" +"The maximum number of tuples that can be updated or deleted before a vacuum " +"analyze is triggered." +msgstr "" + +#. module: database_autovacuum_tuning +#: model_terms:ir.ui.view,arch_db:database_autovacuum_tuning.res_config_settings_view_form +msgid "" +"The maximum number of tuples that can be updated or deleted before a vacuum " +"is triggered." +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.model.fields,field_description:database_autovacuum_tuning.field_database_autovacuum_tuning__vacuum_threshold +msgid "Vacuum Threshold" +msgstr "" From 4a8e78dae0b56814dc44e7b4b050611e95d07924 Mon Sep 17 00:00:00 2001 From: Don Kendall Date: Fri, 29 May 2026 20:11:25 -0400 Subject: [PATCH 5/6] [IMP] database_autovacuum_tuning: pre-commit auto fixes Signed-off-by: Don Kendall --- database_autovacuum_tuning/README.rst | 12 ++++++------ database_autovacuum_tuning/__manifest__.py | 2 +- .../static/description/index.html | 8 ++++---- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/database_autovacuum_tuning/README.rst b/database_autovacuum_tuning/README.rst index 60ee46d8437..d8637f7258e 100644 --- a/database_autovacuum_tuning/README.rst +++ b/database_autovacuum_tuning/README.rst @@ -11,7 +11,7 @@ Database Autovacuum Tuning !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:ed2cea913a7d93d83e99dc2d84a053972a91963c100bf3ea8ceca5e69c1c7315 + !! source digest: sha256:21acde8e0200e96475d462b008f155adb9447cffee2f5e5a3923b42248d0fba8 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Alpha-red.png @@ -21,13 +21,13 @@ Database Autovacuum Tuning :target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html :alt: License: LGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--tools-lightgray.png?logo=github - :target: https://github.com/OCA/server-tools/tree/18.0/database_autovacuum_tuning + :target: https://github.com/OCA/server-tools/tree/19.0/database_autovacuum_tuning :alt: OCA/server-tools .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/server-tools-18-0/server-tools-18-0-database_autovacuum_tuning + :target: https://translation.odoo-community.org/projects/server-tools-19-0/server-tools-19-0-database_autovacuum_tuning :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png - :target: https://runboat.odoo-community.org/builds?repo=OCA/server-tools&target_branch=18.0 + :target: https://runboat.odoo-community.org/builds?repo=OCA/server-tools&target_branch=19.0 :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| @@ -91,7 +91,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -122,6 +122,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -This module is part of the `OCA/server-tools `_ project on GitHub. +This module is part of the `OCA/server-tools `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/database_autovacuum_tuning/__manifest__.py b/database_autovacuum_tuning/__manifest__.py index 7b1508ca6d4..e50db22826c 100644 --- a/database_autovacuum_tuning/__manifest__.py +++ b/database_autovacuum_tuning/__manifest__.py @@ -4,7 +4,7 @@ { "name": "Database Autovacuum Tuning", "summary": "Scheduled checks for Odoo autovacuum thresholds and scale factors", - "version": "18.0.1.0.1", + "version": "19.0.1.0.0", "author": "Camptocamp, Odoo Community Association (OCA)", "website": "https://github.com/OCA/server-tools", "category": "Tools", diff --git a/database_autovacuum_tuning/static/description/index.html b/database_autovacuum_tuning/static/description/index.html index 3d7aa16ac8a..62fb69b6c60 100644 --- a/database_autovacuum_tuning/static/description/index.html +++ b/database_autovacuum_tuning/static/description/index.html @@ -372,9 +372,9 @@

Database Autovacuum Tuning

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:ed2cea913a7d93d83e99dc2d84a053972a91963c100bf3ea8ceca5e69c1c7315 +!! source digest: sha256:21acde8e0200e96475d462b008f155adb9447cffee2f5e5a3923b42248d0fba8 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Alpha License: LGPL-3 OCA/server-tools Translate me on Weblate Try me on Runboat

+

Alpha License: LGPL-3 OCA/server-tools Translate me on Weblate Try me on Runboat

Database Autovacuum Tuning helps administrators keep PostgreSQL healthy by exposing recommended autovacuum settings in Odoo. It provides guidance and documentation for sizing thresholds and scale factors so @@ -441,7 +441,7 @@

Bug Tracker

Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed -feedback.

+feedback.

Do not contact contributors directly about support or help with technical issues.

@@ -468,7 +468,7 @@

Maintainers

OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.

-

This module is part of the OCA/server-tools project on GitHub.

+

This module is part of the OCA/server-tools project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

From 56c30e098c40efa48847fe840694a5b48b0197a2 Mon Sep 17 00:00:00 2001 From: Don Kendall Date: Fri, 29 May 2026 20:11:26 -0400 Subject: [PATCH 6/6] [MIG] database_autovacuum_tuning: Migration to 19.0 - Search view: dropped string="Group By" from (19.0 RelaxNG rejects it). Signed-off-by: Don Kendall --- .../views/database_autovacuum_tuning_views.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/database_autovacuum_tuning/views/database_autovacuum_tuning_views.xml b/database_autovacuum_tuning/views/database_autovacuum_tuning_views.xml index 20c6e461166..2e3c4031fbc 100644 --- a/database_autovacuum_tuning/views/database_autovacuum_tuning_views.xml +++ b/database_autovacuum_tuning/views/database_autovacuum_tuning_views.xml @@ -17,7 +17,7 @@ - +