2 Replies Latest reply on Jan 8, 2002 11:52 AM by Jerome Moliere

    Jboss 2.4.1, Oracle 8.1.7 & large databases

    Jerome Moliere Newbie

      Hi all,
      I 've got a very big performance problem with this configuration, because I must export contents from a large database to a file. My first bench induced a 1h 45mn process time for a database containing:
      one table with about 85000 rows (containing 2 fields with 255 chars & several ids)
      one table with about 60000 rows with ids & one text (255chars)
      I know certain design patterns for the J2EE environment (iterator for getting rowset) but they seem to be restricted to the BMP entity beans while I'm using CMP ones (I thought that a container engine would be better than for ensuring the quickness of my app).
      How can I tune my application for improving this enormous response time ? What design solutions are available for such cases (huge requersts) or configuration tricks (increasing the memory pool ?)


        • 1. Re: Jboss 2.4.1, Oracle 8.1.7 & large databases
          David Jencks Master

          CMP are not necessarily designed for bulk data access ;-).

          However you can improve things by:

          switching to I think 2.4.3 or 2.4.4 and using readahead (so all beans are loaded in one sql call) ( think readahead is only in 2.4.3, I'm not quite sure. I also don't know its status in 3.0 w/cmp2)

          Making sure your jvm heap and physical memory are sufficient to hold all entity beans at once.

          Making sure your entity cache sizes are large enough to hold all entity beans at once.

          Implementing an isModified method in your entity beans so the container won't try to write them back to the db. Possibly there is a read-only setting that would also help.

          After all this you may decide it is easier to do the work with straight jdbc in a session bean.

          • 2. Re: Jboss 2.4.1, Oracle 8.1.7 & large databases
            Jerome Moliere Newbie

            thanks david,
            in fact I've tried read-ahead but it failed (you must infomed by advising me to upgrade my app-server).
            I've already updated the run.sh script to get enough memory!!!
            I must change the default max size for the pool!!!
            I'll try to add this isModified method but why the CMP engine could think that my entity was modifed (a simple getId() can't change it). So this is a JAWS problem isn't it ?

            I thought about using one stateless session bean but can i have access to the meta data from the CMP engine (to obtain connections directly without hardcoding connection infos or reinventing another abstraction layer)

            thanks a lot