Matthew Schumacher wrote: > List, > > I moved my SA bayes store into my postgres database because I was > running into locking issues with the Berkeley DB. > > The database is up and running fine, but I noticed that that connections > to the database are not persistent. As many of you know, postgres isn't > the fastest database during startup so I am sure this is hurting > performance quite a bit. > > In fact I looked that the performance benchmarks on the spamassassin > site: http://wiki.apache.org/spamassassin/BayesBenchmarkResults and they > show postgres to be a terrible performer which would be true if the are > not using persistent database connections. > > So the question is, is there a way to make SA use persistent > connections? I read though the docs and didn't see anything. > > schu >
I must be missing something here, I found code that seems to do exactly what I want: >From SpamAssassin/BayesStore/SQL.pm on line 134 ================================================================== return 1 if ($self->{_dbh}); # already connected my $main = $self->{bayes}->{main}; $self->read_db_configs(); # Turn off PrintError and explicitly set AutoCommit to off my $dbh = DBI->connect($self->{_dsn}, $self->{_dbuser}, $self->{_dbpass}, {'PrintError' => 0, 'AutoCommit' => 1}); if (!$dbh) { dbg("bayes: Unable to connect to database: ".DBI->errstr()); return 0; } else { dbg("bayes: Database connection established"); } $self->{_dbh} = $dbh; ================================================================== But I am not seeing any database connection persistence at all. I am using mimedefang, but that uses SA like spamd does. Each child has it's own SA object running for it's lifetime, so in theory, I should only see connections when a new child starts up. Anyone have any ideas on how to fix this? schu