(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 <sql> 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.