Hello, As you may remember, one of the things I am working on for version 2.1.x is performance. My most recent work on performance has been to review and re-write the pruning and purging code. Over the years, this code has been added to and patched, and there are a number of issues that I want to address:
1. Review the pruning algorithms to improve the SQL. 2. Pruning during "status dir" 3. User complaints that it requires two passes to recycle Volumes The basic algorithm for recycling volumes is documented in the manual, and it will remain unchanged. However, I have now re-written the prune/purge code to do the following things: 1. Reduce unnecessary SQL calls to a minimum 2. When pruning, submit SQL statements that prune up to 1000 jobs in a single SQL statement rather than 1000 separate SQL statements. 3. Prune only a single volume if the SD requests pruning rather than pruning *all* the volumes in the Pool. 4. After pruning a Volume, explicitly check if it can be marked as Purged. 5. Ensure that there are not multiple copies of the same code (pruning and and purging share a lot code, some of which was duplicated). The net result is not a huge gain in performance, except in a few exceptional cases, but the code base is much cleaner, and I believe I have corrected at least one case where pruning would be performed but Bacula did not detect and hence mark the Volume purged. There are two issues where I would appreciate a bit of user feedback: 1. Previous when Bacula needed a new Volume, it would prune *all* volumes in the current pool. Now it prunes only one at a time, until it finds one that has been Purged. This means that less pruning will be done, and database records will tend to remain longer (possibly much longer). Although individual volumes can be prunned by command, there is no command to prune a whole pool. Question: does anyone feel there is a need for a new command that will pemit manually pruning a whole pool? An appropriate place *may* be dbcheck. 2. Currently, the "status dir" command will do pruning while attempting to find the Volume name to list if no current Volume is available. Many many users have complained about this because it can be *very* time consuming. The new code will be slightly faster because it will stop once a volume is Purged rather than pruning the whole Pool. However I am considering disabling pruning by default from the "status dir" command, but allow the user to optionally specify "status dir prune" to turn it back on. Note, there is a "list nextvolume" command which will continue to prune by default. Question: does anyone object to turning off pruning in the "status dir" command or have a better idea? Best regards, Kern ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys-and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ Bacula-users mailing list Bacula-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/bacula-users