dCache/dcache — pull request #369 by alrossi (2013-12-19 16:16:23+00:00)
Title: (2.7) dcache-core (billing): modify changesets to do concurrent index cr...

...eation

As suggested in support ticket 7947: slow start on create index in billing.

Note that two modifications were necessary:

1. Because CREATE INDEX CONCURRENTLY is not supported by the Liquibase createIndex task, these were changed to raw calls.
2. Because this command cannot run inside a transaction, each of these changeset is marked runInTransaction=false, with cognizance taken of the risks.

The old changesets were eliminated and replaced with new ones having a different id.

Testing:

Deployed new changesets. Eliminated all indices from billing database and booted billing domain.

Here are the stats for the largest tables (the fine-grained data):

billing=> select count(*) from billinginfo;
count
---------
8070858
(1 row)

billing=> select count(*) from storageinfo;
count
---------
1862998
(1 row)

billing=> select count(*) from doorinfo;
count
---------
1902624
(1 row)

billing=> select count(*) from hitinfo;
count
-------
58028
(1 row)

11 Dec 2013 14:02:58 (billing) [] Continuing past: liquibase.precondition.core.PreconditionContainer@5303eb4 despite precondition error:
...
11 Dec 2013 14:24:36 (System) [] created : billing

(Total initialization time of about 22 minutes with 8M, 2M and 2M rows in the three main tables).

Target: 2.7
Patch: http://rb.dcache.org/r/6343/diff/#index_header
Require-notes: yes
Require-book: no
Acked-by: Tigran
Bug: http://rt.dcache.org/Ticket/Display.html?id=7947
Committed: 94030f5d673303b45765cfa08d6c5e45b3100063

RELEASE NOTES:

Indices on the billing database are now created concurrently, so database (re)initialization should be sped up by a modest linear factor.