Partition the package_derivations_by_guix_revision_range table

And create a proper git_branches table in the process.

I'm hoping this will help with slow deletions from the
package_derivations_by_guix_revision_range table in the case where there are
lots of branches, since it'll separate the data for one branch from another.

These migrations will remove the existing data, so
rebuild-package-derivations-table will currently need manually running to
regenerate it.
This commit is contained in:
Christopher Baines 2022-05-23 19:10:25 +01:00
parent 89545caa3f
commit 64be52844e
19 changed files with 442 additions and 167 deletions

View file

@ -0,0 +1,18 @@
-- Deploy guix-data-service:partition_package_derivations_by_guix_revision_range to pg
BEGIN;
DROP TABLE package_derivations_by_guix_revision_range;
CREATE TABLE package_derivations_by_guix_revision_range (
git_branch_id integer NOT NULL REFERENCES git_branches (id),
package_name varchar NOT NULL,
package_version varchar NOT NULL,
derivation_id integer NOT NULL,
system varchar NOT NULL,
target varchar NOT NULL,
first_guix_revision_id integer NOT NULL REFERENCES guix_revisions (id),
last_guix_revision_id integer NOT NULL REFERENCES guix_revisions (id)
) PARTITION BY LIST (git_branch_id);
COMMIT;