Oh, I must have missed the part about 7 million files. In that case, you will need a well tuned DB, and personally, I would use Postgres. 5 hours seems to me much too long for the insert. I am sure that DB tuning will make a big difference -- maybe as much as a factor of 10.
Kern On 08/16/2013 03:01 PM, azurIt wrote: > Hi, > > i'm not using unmodified MySQL configuration. My Bacula database has about 21 > GB and i'm mainly having problems with inserting into File table after the > virtual full backup of our e-mail server. Job has more then 7 000 000 of > files and insert takes about 5 hours. Just to explain why i'm searching how > to speed up things without HW upgrades. > > azur > > > > > ______________________________________________________________ >> Hello, >> >> Thanks for your question. I have asked my database expert who >> says the same as I do but more in detail. I will include his response >> below. >> >> Bottom line: we have spent a long time determining the best indexes >> for Bacula, which are the ones we release in the code, so we do not >> recommend making any changes. That said, we have not tested removing >> the "extra" index for several years and it may be that database engines >> have evolved. The problem with changing the Bacula default index setup >> is that it may perform well in the beginning, but seemingly simple >> changes can have big surprises in little used queries that are >> seldom used, but by removing or changing >> an index you can make a difference of a factor of 1000, which means that >> an unusual query that runs rather quickly can become a real bottleneck. >> >> So change indexes at your own risk. >> >> Probably you are using an untunned MySQL with the default conf (my.cnf) >> file rather than one of the examples for larger databases. >> By proper tunning you can significantly improve the performance. >> If you have a big database say bigger >> than 1 or 2 GB, our experience is that you will get *much* better >> performance >> with PostgreSQL, providing you tune the conf parameters correctly (out >> of the >> box, the Postgres conf is a real bummer). >> >> Best regards, >> Kern >> >> === email from someone who knows SQL better than I do ==== >> >> The single index on JobId is compact, the other is very large, I guess the >> scanning time is not exactly the same (i.e. the single index on JobId can >> be much faster) >> >> Yes, Postgresql can use composed index and may not require it, but for >> MySQL, I have some doubt if it can be used all the time (maybe recent >> versions). It is hard to read their execution plan to be sure how >> they use it. >> >> This user could do some tests, it's rather simple to drop >> the index and run a large restore on a big database (probably not >> interesting if the File table contains less than 300,000,000 records). >> >> If we have a bit of time one day, it might be good to test this >> modification on large and "recent" databases. >> >> Anyway, if this user is using MySQL AND has performance problems >> during insert, he probably didn't modify the default my.cnf. >> >> ===================== end included email ============================== >> >> >> >> On 08/16/2013 01:30 PM, azurIt wrote: >>> Hi, >>> >>> i'm having some MySQL performance difficulties so i started to search what >>> can i do better. My table 'File' had these indexes created: >>> CREATE INDEX file_jobid_idx on File (JobId); >>> CREATE INDEX file_jpf_idx on File (JobId, PathId, FilenameId); >>> >>> Which looks correct according to documentation: >>> http://www.bacula.org/en/dev-manual/main/main/Catalog_Maintenance.html >>> >>> BUT! The first index apperas to be unneeded as it's part of the second >>> index. According to MySQL documentation, 'any leftmost prefix of the index >>> can be used by the optimizer to find row': >>> http://dev.mysql.com/doc/refman/5.5/en/multiple-column-indexes.html >>> >>> I suggest to remove it. >>> >>> The same applies also for PostgreSQL: >>> http://www.postgresql.org/docs/9.2/interactive/indexes-multicolumn.html >>> >>> azur >>> >>> ------------------------------------------------------------------------------ >>> Get 100% visibility into Java/.NET code with AppDynamics Lite! >>> It's a free troubleshooting tool designed for production. >>> Get down to code-level detail for bottlenecks, with <2% overhead. >>> Download for free and get started troubleshooting in minutes. >>> http://pubads.g.doubleclick.net/gampad/clk?id=48897031&iu=/4140/ostg.clktrk >>> _______________________________________________ >>> Bacula-devel mailing list >>> Bacula-devel@lists.sourceforge.net >>> https://lists.sourceforge.net/lists/listinfo/bacula-devel >>> >> > ------------------------------------------------------------------------------ > Get 100% visibility into Java/.NET code with AppDynamics Lite! > It's a free troubleshooting tool designed for production. > Get down to code-level detail for bottlenecks, with <2% overhead. > Download for free and get started troubleshooting in minutes. > http://pubads.g.doubleclick.net/gampad/clk?id=48897031&iu=/4140/ostg.clktrk > _______________________________________________ > Bacula-devel mailing list > Bacula-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/bacula-devel > ------------------------------------------------------------------------------ Get 100% visibility into Java/.NET code with AppDynamics Lite! It's a free troubleshooting tool designed for production. Get down to code-level detail for bottlenecks, with <2% overhead. Download for free and get started troubleshooting in minutes. http://pubads.g.doubleclick.net/gampad/clk?id=48897031&iu=/4140/ostg.clktrk _______________________________________________ Bacula-devel mailing list Bacula-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/bacula-devel