Unfortunately, this index creates lots of performance problem during
batch insert session due to index bloat. This is not a good idea to
advise it :(

http://sourceforge.net/apps/wordpress/bacula/2009/09/28/performance-issue-with-a-useless-index-on-postgresql/


Le Samedi 20 Février 2010 23:30:45, Dan Langille a écrit :
> FYI
> 
> -------- Original Message --------
> Subject:      Re: [Bacula-users] SOLVED?: Dead slow backups with bacula 5.0,
> mysql and accurate
> Date:         Sat, 20 Feb 2010 13:56:31 -0800
> From:         Steve Ellis <el...@brouhaha.com>
> To:   bacula-us...@lists.sourceforge.net
> References:   <4b7eec0c.8070...@brouhaha.com> <4b7f4104.8040...@wpi.edu>
> 
> On 2/19/2010 5:55 PM, Frank Sweetser wrote:
> > The best way to get more data about what's going on is to use the
> > 'explain' mysql command.  First, get the complete SQL query that's
> > taking too long to run by using the 'show processlist full' command -
> > that way the results won't get truncated.
> > 
> > Then, run the query manually, but prefixed with the 'explain' command:
> > 
> > explain SELECT Path.Path, Filename.Name, ...
> > 
> > This should give you more data about exactly how mysql is going about
> > executing the query, which should hopefully in turn point to why it's
> > taking so ridiculously long and how that might be fixed.
> 
> Thanks, Frank, for the tip.  I tried exactly what you said, and found at
> least one helpful index addition.  Although, actually, even doing the
> explain took so long that I gave up and reviewed the make_mysql_tables
> script, which provided a possible clue, which I tried, and it not only
> made the explain go faster, but also resolved my horribly slow backup
> issue.  make_mysql_tables suggests to add INDEX (FilenameId, PathId) on
> the File table if verifies are too slow--it also recommends several
> other indices, all of which I already had (PathId, FilenameId and
> JobId).  I ran this sql query:
>     CREATE INDEX FilenameId_2 ON File (FilenameId, PathId);
> Which took quite a while (maybe 20-30 minutes?)....
> 
> Then, using the full query from 'mysqladmin -v processlist' with
> 'explain' to tell me about how mysql would run the query (sorry about
> the width below, may wrap unpleasantly):
> mysql> explain SELECT Path.Path, Filename.Name, Temp.FileIndex,
> Temp.JobId, LStat, MD5 FROM ( SELECT FileId, Job.JobId AS JobId,
> FileIndex, File.PathId AS PathId, File.FilenameId AS FilenameId, LStat,
> MD5 FROM Job, File, ( SELECT MAX(JobTDate) AS JobTDate, PathId,
> FilenameId FROM ( SELECT JobTDate, PathId, FilenameId FROM File JOIN Job
> USING (JobId) WHERE File.JobId IN (13275,13346,13350) UNION ALL SELECT
> JobTDate, PathId, FilenameId FROM BaseFiles JOIN File USING (FileId)
> JOIN Job  ON    (BaseJobId = Job.JobId) WHERE BaseFiles.JobId IN
> (13275,13346,13350) ) AS tmp GROUP BY PathId, FilenameId ) AS T1 WHERE
> (Job.JobId IN ( SELECT DISTINCT BaseJobId FROM BaseFiles WHERE JobId IN
> (13275,13346,13350)) OR Job.JobId IN (13275,13346,13350)) AND
> T1.JobTDate = Job.JobTDate AND Job.JobId = File.JobId AND T1.PathId =
> File.PathId AND T1.FilenameId = File.FilenameId ) AS Temp JOIN Filename
> ON (Filename.FilenameId = Temp.FilenameId) JOIN Path ON (Path.PathId =
> Temp.PathId) WHERE FileIndex > 0 ORDER BY Temp.JobId, FileIndex ASC;
> +----+--------------------+------------+--------+--------------------------
> --------------------+--------------+---------+-------------------------+---
> -----+---------------------------------+
> 
> | id | select_type        | table      | type   |
> 
> possible_keys                                | key          | key_len |
> ref                     | rows   | Extra                           |
> +----+--------------------+------------+--------+--------------------------
> --------------------+--------------+---------+-------------------------+---
> -----+---------------------------------+
> 
> |  1 | PRIMARY            | <derived2> | ALL    |
> 
> NULL                                         | NULL         | NULL    |
> NULL                    | 256855 | Using where; Using filesort     |
> 
> |  1 | PRIMARY            | Path       | eq_ref |
> 
> PRIMARY                                      | PRIMARY      | 4       |
> Temp.PathId             |      1 |                                 |
> 
> |  1 | PRIMARY            | Filename   | eq_ref |
> 
> PRIMARY                                      | PRIMARY      | 4       |
> Temp.FilenameId         |      1 |                                 |
> 
> |  2 | DERIVED            | <derived3> | ALL    |
> 
> NULL                                         | NULL         | NULL    |
> NULL                    | 256855 |                                 |
> 
> |  2 | DERIVED            | File       | ref    |
> 
> JobId,PathId,FilenameId,JobId_2,FilenameId_2 | FilenameId_2 | 8       |
> T1.FilenameId,T1.PathId |      8 | Using where                     |
> 
> |  2 | DERIVED            | Job        | eq_ref |
> 
> PRIMARY                                      | PRIMARY      | 4       |
> bacula.File.JobId       |      1 | Using where                     |
> 
> |  6 | DEPENDENT SUBQUERY | NULL       | NULL   |
> 
> NULL                                         | NULL         | NULL    |
> NULL                    |   NULL | no matching row in const table  |
> 
> |  3 | DERIVED            | <derived4> | ALL    |
> 
> NULL                                         | NULL         | NULL    |
> NULL                    | 259176 | Using temporary; Using filesort |
> 
> |  4 | DERIVED            | Job        | range  |
> 
> PRIMARY                                      | PRIMARY      | 4       |
> NULL                    |      3 | Using where                     |
> 
> |  4 | DERIVED            | File       | ref    |
> 
> JobId,JobId_2                                | JobId_2      | 4       |
> bacula.Job.JobId        |  35941 | Using index                     |
> 
> |  5 | UNION              | NULL       | NULL   |
> 
> NULL                                         | NULL         | NULL    |
> NULL                    |   NULL | no matching row in const table  |
> 
> | NULL | UNION RESULT       | <union4,5> | ALL    |
> 
> NULL                                         | NULL         | NULL    |
> NULL                    |   NULL |                                 |
> +----+--------------------+------------+--------+--------------------------
> --------------------+--------------+---------+-------------------------+---
> -----+---------------------------------+ 12 rows in set (16.83 sec)
> 
> Afterwards, I attempted to run an incremental backup with Accurate on,
> and it works pretty much the same as it used to for me back with 3.0.3.
> 
> -se

------------------------------------------------------------------------------
Download Intel&#174; Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
Bacula-devel mailing list
Bacula-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bacula-devel

Reply via email to