Home General
New Blog Posts: Merging Reports - Part 1 and Part 2

Cached data after Printing a report -speed issue.

edited October 2003 in General
Hi,

A few months ago I asked if you had any clue why the system was so slow in
opening a report in Design/Print after another report was run.

Since I've now managed to run RB with source in debug mode, I've figured out
why it sometimes took >60 seconds to clear up the "cache" after a previous
report.

It is because *All tables* available for the users are created as TdaTables.
These are not unloaded when a Print Preview is closed. For some reason it
seems they are not loaded in Design mode either (until you work in the
data-tab, trying to select a table).

The idea of a cache would be to speed things up, right?
It is not a cache system to speed things up, because the next time around
when you do a print preview (even if it's the same report), all these
objects are freed, and then re-loaded.

Is it necessesary, during a Print Preview to load all tables that the
Database user can get access to?
Couldn't only the ones that are used in the report get loaded?
Is there any other way to speed this up?

Our Database is *very* big. Probably something like 8000 tables. These are
separated on something like 70 schemas. When we try to use RB with a user
that is DBA, it get's very slow.

Another fun fact is that it takes <30seconds to load all the TdaTables, but
+ with the abour 8000 tables, our application grows with 30 Mb, wich is not
released until you exit the application or open a report in design-time.

Best Regards,
Paul Wiik,
Lynx Technologies

Comments

  • edited October 2003
    Hi Paul,

    When you log in as the DBA, are you going to need access to all 8000 tables
    when you run ReportBuiler? If not, you could perhaps create a
    DataDictionary component that filters out the tables you will be using. The
    DataDictionary will only use the tables you select for it and their names
    will be stored in another table on your database. This would dramatically
    reduce the time it took to load a report.

    --
    Best Regards,

    Nico Cizik
    Digital Metaphors
    http://www.digital-metaphors.com
  • edited October 2003
    Nico,

    Thanks,
    We haven't started utilizing the Data Dictionary yet, and I wasn't aware
    that it also kept track of what tables to make available (thought it to be
    only on field level). I was planning to modify daDOA.pas to only retrieve
    "user_tables" instead of "all_tables", but your solution sounds much better.

    Best Regards,
    Paul


  • edited October 2003
    I recently went to RBuilder and implemented the Data Dictionary very easily.
    In fact, if you are using SQL as the database engine, you can simply query
    the sysobjects table for the desired tables and fields. You don't even have
    to setup special tables for this. The joins table is going to be a big plus
    as it allows the users to not have to worry about the join fields, etc. In
    fact, it has been helpful to me (time saver). I highly recommend using the
    ppDictionary from the beginning.

    Good Luck,
    Bob Tucker

This discussion has been closed.