LORE Performance Issues

    This page contains the performance analysis and tuning issues for the LORE project. It features both results of performance evaluations and open issues.

    Most of the performance investigations should be application driven. As long as LORE is used for ad-hoc querying, the main performance issue is the efficient execution of the user queries. As soon as LORE is used as persistent repository for other applications, issues such as transaction through-put, scalability, and resource management become more important.

    Performance issues

    The following list contains the major topics for which we have some performance results or where we have identified the need to improve LORE's performance.

    • Influence of Locking and Logging
      First comparisons using the tester suite indicate a 10 to 15% increase in response time having locking and logging enabled in single-transaction usage. Note that the tester application always connects and disconnects the database for each statement, which adds a substantial transaction overhead.

      Future investigations should investigate response time efficiency of real application transactions both in single-transaction and multi-transaction settings. Of special interest are lock contention and deadlock frequency in real multi-transaction applications.

    • Performance comparison between native LORE and LORE/O2 and (eventually) LORE/SQL3
      What is the overhead of using a general object-oriented (object-relational) database system as storage and execution engine versus a native implementation which is specifically tailored for LORE?

      A preliminary performance comparison between an older version of native LORE and LORE/O2 is available.

    Evaluation settings

    In the following, we list different environments which can be used to perform in-depth performance evaluations.

    • Benchmark databases
      In order to investigate the database performance, we need to have a test suite of different databases and queries and update statements. The evaluation should allow to investigate overall performance (transaction per seconds) as well as scalability. For a start, the evaluation can be based on some standard benchmark such as OO7 or TPC-D. In addition, it should provide for the investigation of LORE specific topics such as general path expressions, dataguides, the use of lindex and vindex etc.
    • Application databases
      For some investigations it may make more sense to use an actual, typical application. For example, in order to identify performance bottlenecks due to the chosen concurrency control approach, it is best to run typical workloads against a typical database.

    Evaluation tools

    The following list describes some tools which can be used for investigating certain performance aspects.

    • Profiling with gprof
      Profiling allows to identify performance bottlenecks due to inefficient and/or frequently called code fragments. Based on the profile information, the performance of the implementation can be improved.
    • IO Performance using iostat
      Together with counting logical and physical reads within the buffer manager, iostat helps to identify IO bottlenecks.
    • Lock manager performance with lshow
      LORE's lshow allows to indentify pages for which too many lock requests are issued.



    Michael Rys < rys@db.stanford.edu >