Hello,

On Wed, 2010-06-16 at 10:45 +0200, Eric Bollengier wrote:
> Hello,
> 
> Le mercredi 16 juin 2010 10:08:30, Ulrich Leodolter a écrit :
> > hi,
> > 
> > we are using "update stats days=3" to update
> > the JobHisto table for bweb. as the number of jobs are
> > growing linear over time the query time for update stats
> > sql is growing exponential (mysql 5.0.77 catalog)
> > 
> > this is the last update from sunday, it took 6945 seconds :-(
> > 
> > # Query_time: 6945  Lock_time: 0  Rows_sent: 0  Rows_examined: 2128037901
> > INSERT INTO JobHisto (JobId, Job, Name, Type, Level, ClientId, JobStatus,
> > SchedTime, StartTime, EndTime, RealEndTime, JobTDate, VolSessionId,
> > VolSessionTime, JobFiles, JobBytes, Re adBytes, JobErrors,
> > JobMissingFiles, PoolId, FileSetId, PriorJobId, PurgedFiles, HasBase,
> > Reviewed, Comment ) SELECT JobId, Job, Name, Type, Level, ClientId,
> > JobStatus, SchedTime, StartTime, EndTime, RealEndTime, JobTDate,
> > VolSessionId, VolSessionTime, JobFiles, JobBytes, ReadBytes, JobErrors,
> > JobMissingFiles, PoolId, FileSetId, PriorJobId, PurgedFiles, HasB ase,
> > Reviewed, Comment FROM Job WHERE JobStatus IN ('T','W','f','A','E') AND
> > JobId NOT IN (SELECT JobId FROM JobHisto) AND JobTDate < 1276147554;
> > 
> > we have about 90000 entries in JobHisto and 20000 in Job.
> > 
> > i would suggest creating a primary index on JobId in JobHisto.
> 
> It's a little bit more complex as each database should be optimized 
> differently, but if this index resolve the performance problem for mysql, we 
> can plan to add it in the next main release (quite hard to ask for catalog 
> schema update between two minor release).
> 
> (FYI, Sqlite is able to reuse JobId sequence numbers and this index doesn't 
> improve PostgreSQL performance.)
>  
> > i have done this
> > 
> > ALTER TABLE `JobHisto` ADD PRIMARY KEY ( `JobId` )
> 
> Could you try by adding just a simple index instead of the primary key ? I 
> don't remember exactly why I didn't use a unique index on this column, but I 
> think it was a problem with SQLite that is able to reuse JobIds.
> 

simple index results in same improvement, update stats < 1 second

ALTER TABLE `JobHisto` ADD INDEX ( `JobId` ) 

best regards
ulrich


> > this gave us a major speed improvement for "update stats"
> > it runs now in less then one second!
> 
> Thanks for the tips, I think that I will take a look to optimize also other 
> engines.
> 
> Bye
> 
> > best regards
> > ulrich
> 

-- 
Ulrich Leodolter <[email protected]>
Oesterreichische Bibliothekenverbund und Service GmbH
Bruennlbadgasse 17/2A, A-1090 Wien
Fax +43 1 4035158-30
Tel +43 1 4035158-21
Web http://www.obvsg.at


------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate 
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the 
lucky parental unit.  See the prize list and enter to win: 
http://p.sf.net/sfu/thinkgeek-promo
_______________________________________________
Bacula-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bacula-devel

Reply via email to