On Tue, Oct 3, 2023, at 1:31 PM, Martin Simmons wrote:
>>>>>> 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).

Yes, it's Bacula 9... for shame...
-- 
  Dan Langille
  d...@langille.org


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

Reply via email to