>>>>> On Tue, 03 Oct 2023 09:35:27 -0400, Dan Langille said:
> 
> On Mon, Oct 2, 2023, at 11:17 AM, Martin Simmons wrote:
> >>>>>> On Sat, 30 Sep 2023 09:54:51 -0400, Dan Langille said:
> >> 
> >> Hello,
> >> 
> >> The Bacula PostgreSQL schema is missing several foreign keys (FK). Foreign 
> >> keys are not a new database concept; they've been around for decades. They 
> >> are reliable and robust.
> >> 
> >> Wednesday, I started a dbcheck on a Bacula database. Granted, that 
> >> database is 19 years old and this is the first time I've run dbcheck (as 
> >> far as I know). That dbcheck is still going. FYI, the dump to disk is 
> >> about 140GB; lots of cruft removal. 
> >> 
> >> When PostgreSQL was first added to Bacula, there was resistance to FK, and 
> >> I did not pursue the issue. Thus, it persists to this day. I hope to 
> >> change that.
> >> 
> >> I would like to take that development work back up (pun intended), and 
> >> start adding foreign keys back into Bacula, at least for PostgresQL. That 
> >> might remove the need for dbcheck (again, at least for Bacula on 
> >> PostgreSQL).
> >
> > What is the performance cost of foreign keys?
> 
> I'm replying so it does not appear as if I am ignoring you. Short answer: I 
> don't know. Yet. That is the purpose of my project.

OK, fair enough.

> 
> I can't answer that in a way which would sound satisfying. I have not started 
> the work. I have only my personal experience - My backups seem fast enough to 
> me.
> 
> It is easy enough to test. There are several ways to optimize foreign keys 
> usage.
> 
> >> For example, one index I have been using this index for years. I find it 
> >> referenced[1] in the the 5.x documentation, but it is not part of the 
> >> catalog creation.
> >> 
> >>     "file_jobid_idx" btree (jobid)
> >> 
> >> This index vastly improves the construction of the files, often going from 
> >> hours to seconds. I don't recall when that index was added here, but 
> >> building trees has never been an issue here.
> >
> > It was removed in this change:
> >
> > commit 740704c9c66d0b049a7cd548ac1204ef1aaf7356
> > Author: Eric Bollengier <e...@baculasystems.com>
> > Date:   Mon May 11 17:11:40 2020 +0200
> >
> >     BEE Backport bacula/src/cats/make_postgresql_tables.in
> > 
> > Does PostgreSQL use file_jpfid_idx for the query if you don't have
> > file_jobid_idx?
> 
> Testing will show that. I am not at that stage yet. I will be examining the 
> queries used and running them through the PostgreSQL 'EXPLAIN ANALYZE' 
> process. I'll post results at https://explain.depesz.com so progress can be 
> seen and compared. Others will be able to run the same non-destructive 
> commands on their own databases for comparison.
> 
> I just check my database and it has these row counts:
> 
> filename:    22,232,549
> file:     1,208,708,804
> path:         8,340,411
> job:             97,139
> jobmedia:       331,379
> media:           12,848

Is this an old version?  The filename table shouldn't exist now.  The new
catalog format could make a big difference to the queries (and foreign key
performance).

__Martin


_______________________________________________
Bacula-users mailing list
Bacula-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bacula-users

Reply via email to