Evictor/UtilizationProfile locking - severe performance problem

I have a database with 2.5 million entries, 10 - 20 bytes keys and 40kb values (about 200 GB overall).
je.properties:
je.maxMemory=419430400
je.evictor.lruOnly=false
je.env.isTransactional=false
je.cleaner.threads=40
je.evictor.nodesPerScan=100
I know I can't fit the data in the cache, but the tree should fit. The access pattern is random.
The situation is this:
Every get or put is causing an eviction. To do this the PrivateEvictor must be locked:
"NioProcessor-1" prio=3 tid=0x08d91c00 nid=0x47 waiting for monitor entry [0x70fcb000..0x70fcb970]
java.lang.Thread.State: BLOCKED (on object monitor)
     at com.sleepycat.je.evictor.Evictor.doEvict(Evictor.java:228)
     - waiting to lock <0x7f157c68> (a com.sleepycat.je.evictor.PrivateEvictor)
     at com.sleepycat.je.evictor.Evictor.doCriticalEviction(Evictor.java:269)
at com.sleepycat.je.dbi.CursorImpl.close(CursorImpl.java:711)
     at com.sleepycat.je.Cursor.close(Cursor.java:326)
Once it has a lock on the evictor it seems to need to lock the UtilizationProfile:
"NioProcessor-25" prio=3 tid=0x08ee4800 nid=0x5f waiting for monitor entry [0x70833000..0x70833970]
java.lang.Thread.State: BLOCKED (on object monitor)
     at com.sleepycat.je.cleaner.UtilizationProfile.putFileSummary(UtilizationProfile.java:787)
     - waiting to lock <0x7f55bf70> (a com.sleepycat.je.cleaner.UtilizationProfile)
     at com.sleepycat.je.cleaner.UtilizationProfile.flushFileSummary(UtilizationProfile.java:776)
     at com.sleepycat.je.cleaner.UtilizationTracker.evictMemory(UtilizationTracker.java:100)
     at com.sleepycat.je.evictor.PrivateEvictor.startBatch(PrivateEvictor.java:109)
     at com.sleepycat.je.evictor.Evictor.evictBatch(Evictor.java:302)
     at com.sleepycat.je.evictor.Evictor.doEvict(Evictor.java:244)
     - locked <0x7f157c68> (a com.sleepycat.je.evictor.PrivateEvictor)
     at com.sleepycat.je.evictor.Evictor.doCriticalEviction(Evictor.java:269)
But that is locked by a cleaner thread which holds onto the lock the whole time that it is deciding which file to delete:
"Cleaner-19" daemon prio=3 tid=0x08d35800 nid=0x2f runnable [0x71763000..0x71763970]
java.lang.Thread.State: RUNNABLE
     at java.util.TreeMap.successor(Unknown Source)
     at java.util.TreeMap$PrivateEntryIterator.nextEntry(Unknown Source)
     at java.util.TreeMap$EntryIterator.next(Unknown Source)
     at java.util.TreeMap$EntryIterator.next(Unknown Source)
     at com.sleepycat.je.cleaner.UtilizationProfile.getBestFileForCleaning(UtilizationProfile.java:344)
     - locked <0x7f55bf70> (a com.sleepycat.je.cleaner.UtilizationProfile)
     at com.sleepycat.je.cleaner.FileSelector.selectFileForCleaning(FileSelector.java:187)
     at com.sleepycat.je.cleaner.FileProcessor.doClean(FileProcessor.java:197)
     - locked <0x7f153340> (a com.sleepycat.je.cleaner.FileProcessor)
     at com.sleepycat.je.cleaner.FileProcessor.onWakeup(FileProcessor.java:138)
     at com.sleepycat.je.utilint.DaemonThread.run(DaemonThread.java:141)
     at java.lang.Thread.run(Unknown Source)
This seems to take quite a while.
So basically I have about worker 50 threads all waiting to lock the evictor and horrible throughput and response times.
Problems that I see:
1. If an eviction is in progress having other threads waiting to try to evict more stuff seems pointless.
2. It is impossible for evictions to happen in parallel.
3. The locking on UtilizationProfile to way too coarse: cleaner threads shouldn't be able to block evictions for long periods of time.
4. getBestFileForCleaning doesn't seem very efficient. Big TreeMaps are getting copied around and iterated over. If the data was kept in a priority queue cleaner threads might be able to quickly take the best file of the queue.
5. Ideally nothing would be being added to or evicted from the cache all the time. Because of my data access patterns I know that having the values in the cache is pointless, and get and puts could bypass the cache completely.

Hello Cormac,
If you're a customer, please contact me via email to take this offline (charles.lamb @ o.com).
Here are some suggestions, questions, and comments:
. Do you see this particular thread dump all the time or just occasionally? In other words, is it always the same or just certain parts of it? I know you're seeing the eviction part all the time, but what about the Cleaner Thread?
. One workaround you can try is to increase the amount of cache for the Utilization tracker. You can do this by changing the EnvironmentConfig.CLEANER_DETAIL_MAX_MEMORY_PERCENTAGE. It defaults to 2% so moving it to 5% might have a big impact.
. Your cache size is << your database size. Have you run DbCacheSize to see if you have sized your cache large enough to fit all of the internal tree nodes in memory? In general, you don't have a lot of cache so an increase in cache size may yield a significant increase in performance.
. You can look at the stats and if there is no cleaner backlog, you can reduce the number of cleaner threads from 40.
. You can try increasing the log file size from the default of 10MB to (say) 50 or 100MB.
Charles Lamb

Similar Messages

  • Severe performance problem

    Hi,
    We have developed a e-commerce application using weblogic 4.5.1. We use
    jdk1.2.2 and have installed service pack 7.
    We use a progress database with a jdbc driver provided by Merant.
    This jdbc driver doesn't support connection pooling so we get the connection
    each time we need it.
    We developed some servlets and jsp pages, also compiled using jdk1.2.2.
    The problem we have is that there is one query that when we execute it,
    results in a time out error after 3 minutes. The keepalivesecs are set to
    more than 6000 secs. It is according to me not a problem of neither the
    database nor the jdbc driver, since I tested the same code without using
    weblogic and the servlet. Then the query performs fine. After 10 secs I get
    the disered result.(run on a client machine).
    I have looked at the performance tuning document but there is not much
    information about how to handle this. Even if there is only 1 (one) user
    connected performance is terrible.
    Kind regards,
    Patrick

    Hi,
    We have a similiar setup and also have performance problems.
    We are using Weblogic 4.5.1 towards a Sybase database.
    We are using JSP (pages) and it doesn't seem to be the actual
    application that needs tuning(?). It more looks like it is some
    weserver/application server setup somewhere.
    The site is at http://www.awardit.se (it's in swedish though).
    Any ideas/solutions?
    Best Regards
    Kenneth Ljunggren
    "Patrick Vanbrabant" <[email protected]> skrev i meddelandet
    news:8a8kmb$jso$[email protected]..
    Hi,
    We have developed a e-commerce application using weblogic 4.5.1. We use
    jdk1.2.2 and have installed service pack 7.
    We use a progress database with a jdbc driver provided by Merant.
    This jdbc driver doesn't support connection pooling so we get theconnection
    each time we need it.
    We developed some servlets and jsp pages, also compiled using jdk1.2.2.
    The problem we have is that there is one query that when we execute it,
    results in a time out error after 3 minutes. The keepalivesecs are set to
    more than 6000 secs. It is according to me not a problem of neither the
    database nor the jdbc driver, since I tested the same code without using
    weblogic and the servlet. Then the query performs fine. After 10 secs Iget
    the disered result.(run on a client machine).
    I have looked at the performance tuning document but there is not much
    information about how to handle this. Even if there is only 1 (one) user
    connected performance is terrible.
    Kind regards,
    Patrick

  • Severe performance problems with JSC2 on PowerBook G4 1.5 GHz

    Help!
    I've reached my wits' end trying to figure out how to get JSC2 to work without pausing for 2-6 minutes per click, right-click, drag, keystroke, etc.! I'm using a PowerBook G4 1.5 GHz (with 1.25 GB RAM and Mac OSX 10.3.9), and earlier, when I was building out projects, the lag time between clicks, typing, etc. would go from a split-second, to a few seconds, then now to minutes...
    Originally, I thought that forcing JSC2 to rebuild the user profile every so often would help, and getting the Sun App Server to undeploy all of its web apps every so often would help, but even that is no longer working. It seems that just starting JSC2 without a user profile (thereby forcing it to create a new, blank one) is pretty much the only time it seems to function without significant lag time or freezing...
    When I run the Mac's Activity Monitor, what seems to be showing up between user actions (clicks, typing, etc.) is ~ 95-100% CPU utilization. Earlier, I was thinking that perhaps the complexity of my Web apps was causing the problem, but that would mean that I can't create moderately sized apps (with a few rowsets in the SessionBean1, for instance). What strikes me as a bit odd is t hat sometimes, during the high CPU utilization periods, there is little or no disk activity.
    I tried adjusting the settings in etc/creator.conf, but it doesn't seem to matter; the machine will gobble up all the memory (physical + virtual) very quickly.
    Is there something I'm missing, or some sort of tuning that I need to do? Is there some sort of GC behavior that is wreaking havoc on my PB? Should be removing entries from the etc/creator.conf file that might help?

    Well, I've tried stuff on the two threads you suggested, but still the same issue...
    Anyway, I used the Stack Trace WebStart tool to create the data below during one of the pauses (a relatively short pause):
    Full thread dump Java HotSpot(TM) Client VM (1.4.2-56 mixed mode):
    "Stack Trace Remote Thread" prio=5 tid=0x38987300 nid=0x3a7a3200 waiting on condition [0..f0d0a260]
    "Inactive RequestProcessor thread [Was:Default RequestProcessor/org.netbeans.modules.j2ee.deployment.impl.ui.InstanceNode$2]" daemon prio=1 tid=0x38b9f230 nid=0x3a7bc200 in Object.wait() [f0c08000..f0c08b20]
         at java.lang.Object.wait(Native Method)
         - waiting on <0x6514358> (a java.lang.Object)
         at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:692)
         - locked <0x6514358> (a java.lang.Object)
    "VCS Command Tasks Starter Loop" daemon prio=1 tid=0x3893cbf0 nid=0x35747000 in Object.wait() [f174e000..f174eb20]
         at java.lang.Object.wait(Native Method)
         - waiting on <0x9d08158> (a org.netbeans.modules.vcscore.commands.CommandProcessor)
         at java.lang.Object.wait(Object.java:429)
         at org.netbeans.modules.vcscore.commands.CommandProcessor.executorStarterLoop(CommandProcessor.java:757)
         - locked <0x9d08158> (a org.netbeans.modules.vcscore.commands.CommandProcessor)
         at org.netbeans.modules.vcscore.commands.CommandProcessor.access$700(CommandProcessor.java:65)
         at org.netbeans.modules.vcscore.commands.CommandProcessor$5.run(CommandProcessor.java:776)
         at java.lang.Thread.run(Thread.java:552)
    "MDR event dispatcher" daemon prio=6 tid=0x005ed550 nid=0x1e35e00 in Object.wait() [f13c7000..f13c7b20]
         at java.lang.Object.wait(Native Method)
         - waiting on <0xa660060> (a java.util.LinkedList)
         at java.lang.Object.wait(Object.java:429)
         at org.netbeans.mdr.util.EventNotifier$EventsDelivery.run(EventNotifier.java:257)
         - locked <0xa660060> (a java.util.LinkedList)
         at java.lang.Thread.run(Thread.java:552)
    "DestroyJavaVM" prio=5 tid=0x00501180 nid=0x1801600 waiting on condition [0..f0800270]
    "TimerQueue" daemon prio=5 tid=0x005c7ab0 nid=0x35284400 in Object.wait() [f1244000..f1244b20]
         at java.lang.Object.wait(Native Method)
         - waiting on <0xa16e4b0> (a javax.swing.TimerQueue)
         at javax.swing.TimerQueue.run(TimerQueue.java:231)
         - locked <0xa16e4b0> (a javax.swing.TimerQueue)
         at java.lang.Thread.run(Thread.java:552)
    "AWT-EventQueue-1" prio=6 tid=0x0051e500 nid=0x1c19a00 in Object.wait() [f11c3000..f11c3b20]
         at java.lang.Object.wait(Native Method)
         - waiting on <0xa16e578> (a java.awt.EventQueue)
         at java.lang.Object.wait(Object.java:429)
         at java.awt.EventQueue.getNextEvent(EventQueue.java:363)
         - locked <0xa16e578> (a java.awt.EventQueue)
         at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:195)
         at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:184)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:178)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:170)
         at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
    "Creator Error Handler Listener" prio=5 tid=0x005c6000 nid=0x1fd2800 runnable [f0ebd000..f0ebdb20]
         at java.net.PlainSocketImpl.socketAccept(Native Method)
         at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:353)
         - locked <0xa16e628> (a java.net.PlainSocketImpl)
         at java.net.ServerSocket.implAccept(ServerSocket.java:448)
         at java.net.ServerSocket.accept(ServerSocket.java:419)
         at com.sun.rave.errorhandler.DebugServerThread.run(DebugServerThread.java:81)
    "AWT-Shutdown" prio=5 tid=0x0051e3a0 nid=0x1917800 in Object.wait() [f1040000..f1040b20]
         at java.lang.Object.wait(Native Method)
         - waiting on <0x98dcb08> (a java.lang.Object)
         at java.lang.Object.wait(Object.java:429)
         at sun.awt.AWTAutoShutdown.run(AWTAutoShutdown.java:259)
         - locked <0x98dcb08> (a java.lang.Object)
         at java.lang.Thread.run(Thread.java:552)
    "Java2D Disposer" daemon prio=10 tid=0x0051a5e0 nid=0x1900c00 in Object.wait() [f0f3e000..f0f3eb20]
         at java.lang.Object.wait(Native Method)
         - waiting on <0x98dcb78> (a java.lang.ref.ReferenceQueue$Lock)
         at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:111)
         - locked <0x98dcb78> (a java.lang.ref.ReferenceQueue$Lock)
         at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:127)
         at sun.java2d.Disposer.run(Disposer.java:116)
         at java.lang.Thread.run(Thread.java:552)
    "Active Reference Queue Daemon" daemon prio=1 tid=0x00516f40 nid=0x18ec800 in Object.wait() [f0e3c000..f0e3cb20]
         at java.lang.Object.wait(Native Method)
         - waiting on <0x98dcbe8> (a java.lang.ref.ReferenceQueue$Lock)
         at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:111)
         - locked <0x98dcbe8> (a java.lang.ref.ReferenceQueue$Lock)
         at org.openide.util.Utilities$ActiveQueue.run(Utilities.java:2465)
         at java.lang.Thread.run(Thread.java:552)
    "Thread-1" daemon prio=5 tid=0x00516820 nid=0x18c8200 in Object.wait() [f0dbb000..f0dbbb20]
         at java.lang.Object.wait(Native Method)
         - waiting on <0x98dcc60> (a java.util.TaskQueue)
         at java.util.TimerThread.mainLoop(Timer.java:429)
         - locked <0x98dcc60> (a java.util.TaskQueue)
         at java.util.TimerThread.run(Timer.java:382)
    "AWT-AppKit" daemon prio=5 tid=0x005125f0 nid=0xa000b2a4 runnable [0..bfffe360]
    "CLI Requests Server" daemon prio=5 tid=0x00510d30 nid=0x1888200 runnable [f0c89000..f0c89b20]
         at java.net.PlainSocketImpl.socketAccept(Native Method)
         at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:353)
         - locked <0x98dcf60> (a java.net.PlainSocketImpl)
         at java.net.ServerSocket.implAccept(ServerSocket.java:448)
         at java.net.ServerSocket.accept(ServerSocket.java:419)
         at org.netbeans.CLIHandler$Server.run(CLIHandler.java:758)
    "Signal Dispatcher" daemon prio=10 tid=0x00508600 nid=0x1813600 runnable [0..0]
    "Finalizer" daemon prio=8 tid=0x00506c40 nid=0x1814400 in Object.wait() [f0a04000..f0a04b20]
         at java.lang.Object.wait(Native Method)
         - waiting on <0xa16e7b0> (a java.lang.ref.ReferenceQueue$Lock)
         at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:111)
         - locked <0xa16e7b0> (a java.lang.ref.ReferenceQueue$Lock)
         at org.netbeans.modules.applemenu.FontReferenceQueue.remove(FontReferenceQueue.java:80)
         at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:127)
         at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)
    "Reference Handler" daemon prio=10 tid=0x00506910 nid=0x1802600 in Object.wait() [f0983000..f0983b20]
         at java.lang.Object.wait(Native Method)
         - waiting on <0x98dcd50> (a java.lang.ref.Reference$Lock)
         at java.lang.Object.wait(Object.java:429)
         at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:115)
         - locked <0x98dcd50> (a java.lang.ref.Reference$Lock)
    "VM Thread" prio=5 tid=0x00506190 nid=0x1803200 runnable
    "VM Periodic Task Thread" prio=10 tid=0x00508540 nid=0x1813200 waiting on condition
    "Exception Catcher Thread" prio=10 tid=0x00501110 nid=0x1802e00 runnable
    =====
    Memory
    =====
    Total: 437694464
    Free: 161603568
    Max: 620756992
    [############################################===========================.............................]
    Available Processors: 1
    attach 477
    GNU gdb 5.3-20030128 (Apple version gdb-330.1) (Fri Jul 16 21:42:28 GMT 2004)
    Copyright 2003 Free Software Foundation, Inc.
    GDB is free software, covered by the GNU General Public License, and you are
    welcome to change it and/or distribute copies of it under certain conditions.
    Type "show copying" to see the conditions.
    There is absolutely no warranty for GDB. Type "show warranty" for details.
    This GDB was configured as "powerpc-apple-darwin".
    (gdb) (gdb) Attaching to process 477.
    info sharedlibrary dyld
    Reading symbols for shared libraries . done
    Reading symbols for shared libraries ............................................................................................. done
    0x900078b8 in mach_msg_trap ()
    (gdb) Requested State Current State
    Num Basename Type Address Reason | | Source
    | | | | | | | |
    2 dyld - 0x8fe00000 dyld Y Y /usr/lib/dyld at 0x8fe00000 (offset 0x0) with prefix "__dyld_"
    3 JavaVM F 0x91ebd000 dyld Y Y /System/Library/Frameworks/JavaVM.framework/Versions/A/JavaVM at 0x91ebd000 (offset 0x0)
    4 CoreFoundation F 0x901c0000 dyld Y Y /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation at 0x901c0000 (offset 0x0)
    5 libSystem.B.dylib - 0x90000000 dyld Y Y /usr/lib/libSystem.B.dylib at 0x90000000 (offset 0x0)
    (commpage objfile is) /usr/lib/libSystem.B.dylib[LC_SEGMENT.__DATA.__commpage]
    6 Foundation F 0x90a20000 dyld Y Y /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation at 0x90a20000 (offset 0x0)
    7 libicucore.A.dylib - 0x968d0000 dyld Y Y /usr/lib/libicucore.A.dylib at 0x968d0000 (offset 0x0)
    8 libmathCommon.A.dylib - 0x939d0000 dyld Y Y /usr/lib/system/libmathCommon.A.dylib at 0x939d0000 (offset 0x0)
    (symbols read from) /usr/libexec/gdb/symfiles/libmathCommon.A.dylib.syms
    9 libxml2.2.dylib - 0x80830000 dyld Y Y /usr/lib/libxml2.2.dylib at 0x80830000 (offset 0x0)
    10 CoreServices F 0x90700000 dyld Y Y /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices at 0x90700000 (offset 0x0)
    11 SystemConfiguration F 0x90d00000 dyld Y Y /System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration at 0x90d00000 (offset 0x0)
    12 libobjc.A.dylib - 0x90830000 dyld Y Y /usr/lib/libobjc.A.dylib at 0x90830000 (offset 0x0)
    13 libz.1.dylib - 0x945b0000 dyld Y Y /usr/lib/libz.1.dylib at 0x945b0000 (offset 0x0)
    14 libiconv.2.dylib - 0x96cb0000 dyld Y Y /usr/lib/libiconv.2.dylib at 0x96cb0000 (offset 0x0)
    15 CarbonCore F 0x902b0000 dyld Y Y /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/CarbonCore at 0x902b0000 (offset 0x0)
    16 OSServices F 0x90610000 dyld Y Y /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/OSServices at 0x90610000 (offset 0x0)
    17 CFNetwork F 0x927f0000 dyld Y Y /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CFNetwork.framework/Versions/A/CFNetwork at 0x927f0000 (offset 0x0)
    18 WebServicesCore F 0x946ed000 dyld Y Y /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/WebServicesCore.framework/Versions/A/WebServicesCore at 0x946ed000 (offset 0x0)
    19 SearchKit F 0x94650000 dyld Y Y /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/SearchKit at 0x94650000 (offset 0x0)
    20 IOKit F 0x90584000 dyld Y Y /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit at 0x90584000 (offset 0x0)
    21 DiskArbitration F 0x907f0000 dyld Y Y /System/Library/PrivateFrameworks/DiskArbitration.framework/Versions/A/DiskArbitration at 0x907f0000 (offset 0x0)
    22 Security F 0x920c0000 dyld Y Y /System/Library/Frameworks/Security.framework/Versions/A/Security at 0x920c0000 (offset 0x0)
    23 libresolv.9.dylib - 0x94610000 dyld Y Y /usr/lib/libresolv.9.dylib at 0x94610000 (offset 0x0)
    24 Bom F 0x91280000 dyld Y Y /System/Library/PrivateFrameworks/Bom.framework/Versions/A/Bom at 0x91280000 (offset 0x0)
    25 libclient.dylib - 0x94723000 dyld Y Y /System/Library/Frameworks/JavaVM.framework/Versions/1.4.2/Libraries/libclient.dylib at 0x94723000 (offset 0x0)
    26 libverify.dylib - 0x91ec5000 dyld Y Y /System/Library/Frameworks/JavaVM.framework/Versions/1.4.2/Libraries/libverify.dylib at 0x91ec5000 (offset 0x0)
    27 libjava.jnilib - 0x95ec2000 dyld Y Y /System/Library/Frameworks/JavaVM.framework/Versions/1.4.2/Libraries/libjava.jnilib at 0x95ec2000 (offset 0x0)
    28 libzip.jnilib - 0x80d5b000 dyld Y Y /System/Library/Frameworks/JavaVM.framework/Versions/1.4.2/Libraries/libzip.jnilib at 0x80d5b000 (offset 0x0)
    29 JavaApplicationLauncher F 0x7df12000 dyld Y Y /System/Library/PrivateFrameworks/JavaApplicationLauncher.framework/Versions/A/JavaApplicationLauncher at 0x7df12000 (offset 0x0)
    30 ApplicationServices F 0x90810000 dyld Y Y /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices at 0x90810000 (offset 0x0)
    call (void *)dlopen("/Users/slinc/Library/Caches/Java Web Start/cache/http/Dtmitevski.users.mcs2.netarray.com/P80/DMstacktrace/DMapp/RNmacproc.jar/libdump.jnilib", 1)
    31 QuickTime F 0x814d9000 dyld Y Y /System/Library/Frameworks/QuickTime.framework/Versions/A/QuickTime at 0x814d9000 (offset 0x0)
    32 AppKit F 0x92e70000 dyld Y Y /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit at 0x92e70000 (offset 0x0)
    33 AE F 0x92727000 dyld Y Y /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/AE at 0x92727000 (offset 0x0)
    34 ATS F 0x96b50000 dyld Y Y /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/ATS at 0x96b50000 (offset 0x0)
    35 ColorSync F 0x913a0000 dyld Y Y /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ColorSync.framework/Versions/A/ColorSync at 0x913a0000 (offset 0x0)
    36 CoreGraphics F 0x9652c000 dyld Y Y /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics at 0x9652c000 (offset 0x0)
    37 PrintCore F 0x916e0000 dyld Y Y /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A/PrintCore at 0x916e0000 (offset 0x0)
    38 QD F 0x915e0000 dyld Y Y /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/QD.framework/Versions/A/QD at 0x915e0000 (offset 0x0)
    39 LangAnalysis F 0x912e0000 dyld Y Y /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/LangAnalysis.framework/Versions/A/LangAnalysis at 0x912e0000 (offset 0x0)
    40 HIServices F 0x908c5000 dyld Y Y /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/HIServices at 0x908c5000 (offset 0x0)
    41 SpeechSynthesis F 0x90c32000 dyld Y Y /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/SpeechSynthesis.framework/Versions/A/SpeechSynthesis at 0x90c32000 (offset 0x0)
    42 FindByContent F 0x92070000 dyld Y Y /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/FindByContent.framework/Versions/A/FindByContent at 0x92070000 (offset 0x0)
    43 LaunchServices F 0x92430000 dyld Y Y /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/LaunchServices at 0x92430000 (offset 0x0)
    44 Carbon F 0x90d40000 dyld Y Y /System/Library/Frameworks/Carbon.framework/Versions/A/Carbon at 0x90d40000 (offset 0x0)
    45 CoreAudio F 0x90702000 dyld Y Y /System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio at 0x90702000 (offset 0x0)
    46 AudioToolbox F 0x93846000 dyld Y Y /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox at 0x93846000 (offset 0x0)
    47 AudioUnit F 0x96a7b000 dyld Y Y /System/Library/Frameworks/AudioUnit.framework/Versions/A/AudioUnit at 0x96a7b000 (offset 0x0)
    48 Accelerate F 0x8fd50000 dyld Y Y /System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate at 0x8fd50000 (offset 0x0)
    49 libstdc++.6.dylib - 0x80a50000 dyld Y Y /usr/lib/libstdc++.6.dylib at 0x80a50000 (offset 0x0)
    50 libgcc_s.1.dylib - 0x81c79000 dyld Y Y /usr/lib/libgcc_s.1.dylib at 0x81c79000 (offset 0x0)
    51 HIToolbox F 0x92880000 dyld Y Y /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox at 0x92880000 (offset 0x0)
    52 SpeechRecognition F 0x917e0000 dyld Y Y /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SpeechRecognition.framework/Versions/A/SpeechRecognition at 0x917e0000 (offset 0x0)
    53 DesktopServicesPriv F 0x90940000 dyld Y Y /System/Library/PrivateFrameworks/DesktopServicesPriv.framework/Versions/A/DesktopServicesPriv at 0x90940000 (offset 0x0)
    54 libbsm.dylib - 0x9415d000 dyld Y Y /usr/lib/libbsm.dylib at 0x9415d000 (offset 0x0)
    55 libcups.2.dylib - 0x939a0000 dyld Y Y /usr/lib/libcups.2.dylib at 0x939a0000 (offset 0x0)
    56 ImageCapture F 0x917fc000 dyld Y Y /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/ImageCapture.framework/Versions/A/ImageCapture at 0x917fc000 (offset 0x0)
    57 SecurityHI F 0x91956000 dyld Y Y /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SecurityHI.framework/Versions/A/SecurityHI at 0x91956000 (offset 0x0)
    58 Ink F 0x96c00000 dyld Y Y /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Ink.framework/Versions/A/Ink at 0x96c00000 (offset 0x0)
    59 Help F 0x9277a000 dyld Y Y /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Help.framework/Versions/A/Help at 0x9277a000 (offset 0x0)
    60 OpenScripting F 0x95e0a000 dyld Y Y /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/OpenScripting.framework/Versions/A/OpenScripting at 0x95e0a000 (offset 0x0)
    61 Print F 0x96a04000 dyld Y Y /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Print.framework/Versions/A/Print at 0x96a04000 (offset 0x0)
    62 HTMLRendering F 0x91303000 dyld Y Y /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HTMLRendering.framework/Versions/A/HTMLRendering at 0x91303000 (offset 0x0)
    63 NavigationServices F 0x98f2d000 dyld Y Y /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/NavigationServices.framework/Versions/A/NavigationServices at 0x98f2d000 (offset 0x0)
    64 CarbonSound F 0x927b2000 dyld Y Y /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/CarbonSound.framework/Versions/A/CarbonSound at 0x927b2000 (offset 0x0)
    65 CommonPanels F 0x94580000 dyld Y Y /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/CommonPanels.framework/Versions/A/CommonPanels at 0x94580000 (offset 0x0)
    66 vecLib F 0x96e80000 dyld Y Y /System/Library/Frameworks/vecLib.framework/Versions/A/vecLib at 0x96e80000 (offset 0x0)
    67 vImage F 0x87f60000 dyld Y Y /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vImage.framework/Versions/A/vImage at 0x87f60000 (offset 0x0)
    68 vecLib F 0x8bde2000 dyld Y Y /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/vecLib at 0x8bde2000 (offset 0x0)
    69 libmx.A.dylib - 0x81c90000 dyld Y Y /usr/lib/libmx.A.dylib at 0x81c90000 (offset 0x0)
    70 libCGATS.A.dylib - 0x917b6000 dyld Y Y /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/Versions/A/Resources/libCGATS.A.dylib at 0x917b6000 (offset 0x0)
    71 libCSync.A.dylib - 0x907c7000 dyld Y Y /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/Versions/A/Resources/libCSync.A.dylib at 0x907c7000 (offset 0x0)
    72 libPDFRIP.A.dylib - 0x91b10000 dyld Y Y /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/Versions/A/Resources/libPDFRIP.A.dylib at 0x91b10000 (offset 0x0)
    73 libPSRIP.A.dylib - 0x91b50000 dyld Y Y /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/Versions/A/Resources/libPSRIP.A.dylib at 0x91b50000 (offset 0x0)
    74 libRIP.A.dylib - 0x91b80000 dyld Y Y /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/Versions/A/Resources/libRIP.A.dylib at 0x91b80000 (offset 0x0)
    75 libssl.0.9.7.dylib - 0x96aa0000 dyld Y Y /usr/lib/libssl.0.9.7.dylib at 0x96aa0000 (offset 0x0)
    76 libcrypto.0.9.7.dylib - 0x91969000 dyld Y Y /usr/lib/libcrypto.0.9.7.dylib at 0x91969000 (offset 0x0)
    77 libvMisc.dylib - 0x95f00000 dyld Y Y /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvMisc.dylib at 0x95f00000 (offset 0x0)
    78 libvDSP.dylib - 0x95e40000 dyld Y Y /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvDSP.dylib at 0x95e40000 (offset 0x0)
    79 libBLAS.dylib - 0x954c0000 dyld Y Y /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib at 0x954c0000 (offset 0x0)
    80 libLAPACK.dylib - 0x95b20000 dyld Y Y /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib at 0x95b20000 (offset 0x0)
    81 libnet.jnilib - 0x80d6b000 dyld Y Y /System/Library/Frameworks/JavaVM.framework/Versions/1.4.2/Libraries/libnet.jnilib at 0x80d6b000 (offset 0x0)
    82 libawt.jnilib - 0x81070000 dyld Y Y /System/Library/Frameworks/JavaVM.framework/Versions/1.4.2/Libraries/libawt.jnilib at 0x81070000 (offset 0x0)
    83 Cocoa F 0x90ec0000 dyld Y Y /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa at 0x90ec0000 (offset 0x0)
    84 WebKit F 0x914ad000 dyld Y Y /System/Library/Frameworks/WebKit.framework/Versions/A/WebKit at 0x914ad000 (offset 0x0)
    85 libfontmanager.jnilib - 0x80fd0000 dyld Y Y /System/Library/Frameworks/JavaVM.framework/Versions/1.4.2/Libraries/libfontmanager.jnilib at 0x80fd0000 (offset 0x0)
    86 JavaScriptCore F 0x9419b000 dyld Y Y /System/Library/Frameworks/WebKit.framework/Versions/A/Frameworks/JavaScriptCore.framework/Versions/A/JavaScriptCore at 0x9419b000 (offset 0x0)
    87 WebCore F 0x97900000 dyld Y Y /System/Library/Frameworks/WebKit.framework/Versions/A/Frameworks/WebCore.framework/Versions/A/WebCore at 0x97900000 (offset 0x0)
    88 libxslt.1.dylib - 0x806c0000 dyld Y Y /usr/lib/libxslt.1.dylib at 0x806c0000 (offset 0x0)
    89 libcmm.jnilib - 0x81060000 dyld Y Y /System/Library/Frameworks/JavaVM.framework/Versions/1.4.2/Libraries/libcmm.jnilib at 0x81060000 (offset 0x0)
    90 libsuncmm.jnilib - 0x80560000 dyld Y Y /System/Library/Frameworks/JavaVM.framework/Versions/1.4.2/Libraries/libsuncmm.jnilib at 0x80560000 (offset 0x0)
    91 libjpeg.jnilib - 0x80e70000 dyld Y Y /System/Library/Frameworks/JavaVM.framework/Versions/1.4.2/Libraries/libjpeg.jnilib at 0x80e70000 (offset 0x0)
    92 liblaf.jnilib - 0x7b5ac000 dyld Y Y /System/Library/Frameworks/JavaVM.framework/Versions/1.4.2/Libraries/liblaf.jnilib at 0x7b5ac000 (offset 0x0)
    93 libnio.jnilib - 0x80d90000 dyld Y Y /System/Library/Frameworks/JavaVM.framework/Versions/1.4.2/Libraries/libnio.jnilib at 0x80d90000 (offset 0x0)
    94 libdcpr.jnilib - 0x81000000 dyld Y Y /System/Library/Frameworks/JavaVM.framework/Versions/1.4.2/Libraries/libdcpr.jnilib at 0x81000000 (offset 0x0)
    (gdb) Reading symbols for shared libraries . done
    $1 = (void *) 0x39b51c20
    call (void *)dlsym($1, "inject_start")
    (gdb) $2 = (void *) 0x34f77b48
    disassemble jio_vfprintf
    (gdb) Dump of assembler code for function jio_vfprintf:
    0x949142d0 <jio_vfprintf+0>:     mflr     r8
    0x949142d4 <jio_vfprintf+4>:     bcl-     20,4*cr7+so,0x949142d8 <jio_vfprintf+8>
    0x949142d8 <jio_vfprintf+8>:     mflr     r2
    0x949142dc <jio_vfprintf+12>:     mtlr     r8
    0x949142e0 <jio_vfprintf+16>:     addis     r7,r2,4065
    0x949142e4 <jio_vfprintf+20>:     lwz     r6,28248(r7)
    0x949142e8 <jio_vfprintf+24>:     lwz     r12,0(r6)
    0x949142ec <jio_vfprintf+28>:     cmpwi     r12,0
    0x949142f0 <jio_vfprintf+32>:     beq-     0x949142fc <jio_vfprintf+44>
    0x949142f4 <jio_vfprintf+36>:     mtctr     r12
    0x949142f8 <jio_vfprintf+40>:     bctr
    0x949142fc <jio_vfprintf+44>:     b     0x9493ded0 <dyld_stub_vfprintf>
    call ($2)("/System/Library/Frameworks/JavaVM.framework/Versions/1.4.2/Libraries/libclient.dylib", "/tmp/stacktrace32624data", 515)
    End of assembler dump.
    detach
    (gdb) $3 = 0
    quit
    ================================================================================
    Full thread dump Java HotSpot(TM) Client VM (1.4.2-56 mixed mode):
    "Stack Trace Remote Thread" prio=5 tid=0x38ba02c0 nid=0x350b0800 waiting on condition [0..f1142260]
    "Inactive RequestProcessor thread [Was:Default RequestProcessor/org.netbeans.modules.navigator.Navigator$ActNodeSetter]" daemon prio=1 tid=0x38b9ffe0 nid=0x3a77a400 in Object.wait() [f10c1000..f10c1b20]
         at java.lang.Object.wait(Native Method)
         - waiting on <0x19b98b68> (a java.lang.Object)
         at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:692)
         - locked <0x19b98b68> (a java.lang.Object)
    "Inactive RequestProcessor thread [Was:TimedSoftReference/org.openide.util.TimedSoftReference]" daemon prio=1 tid=0x38b9fd20 nid=0x3a7c8600 in Object.wait() [f0fbf000..f0fbfb20]
         at java.lang.Object.wait(Native Method)
         - waiting on <0x19b98bc0> (a java.lang.Object)
         at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:692)
         - locked <0x19b98bc0> (a java.lang.Object)
    "Inactive RequestProcessor thread [Was:TimedSoftReference/org.openide.util.TimedSoftReference]" daemon prio=1 tid=0x38b9f230 nid=0x3a7bc200 in Object.wait() [f0c08000..f0c08b20]
         at java.lang.Object.wait(Native Method)
         - waiting on <0x19b98c18> (a java.lang.Object)
         at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:692)
         - locked <0x19b98c18> (a java.lang.Object)
    "VCS Command Tasks Starter Loop" daemon prio=1 tid=0x3893cbf0 nid=0x35747000 in Object.wait() [f174e000..f174eb20]
         at java.lang.Object.wait(Native Method)
         - waiting on <0x9d08158> (a org.netbeans.modules.vcscore.commands.CommandProcessor)
         at java.lang.Object.wait(Object.java:429)
         at org.netbeans.modules.vcscore.commands.CommandProcessor.executorStarterLoop(CommandProcessor.java:757)
         - locked <0x9d08158> (a org.netbeans.modules.vcscore.commands.CommandProcessor)
         at org.netbeans.modules.vcscore.commands.CommandProcessor.access$700(CommandProcessor.java:65)
         at org.netbeans.modules.vcscore.commands.CommandProcessor$5.run(CommandProcessor.java:776)
         at java.lang.Thread.run(Thread.java:552)
    "MDR event dispatcher" daemon prio=6 tid=0x005ed550 nid=0x1e35e00 in Object.wait() [f13c7000..f13c7b20]
         at java.lang.Object.wait(Native Method)
         - waiting on <0xa660060> (a java.util.LinkedList)
         at java.lang.Object.wait(Object.java:429)
         at org.netbeans.mdr.util.EventNotifier$EventsDelivery.run(EventNotifier.java:257)
         - locked <0xa660060> (a java.util.LinkedList)
         at java.lang.Thread.run(Thread.java:552)
    "DestroyJavaVM" prio=5 tid=0x00501180 nid=0x1801600 waiting on condition [0..f0800270]
    "TimerQueue" daemon prio=5 tid=0x005c7ab0 nid=0x35284400 in Object.wait() [f1244000..f1244b20]
         at java.lang.Object.wait(Native Method)
         - waiting on <0xa16e4b0> (a javax.swing.TimerQueue)
         at javax.swing.TimerQueue.run(TimerQueue.java:231)
         - locked <0xa16e4b0> (a javax.swing.TimerQueue)
         at java.lang.Thread.run(Thread.java:552)
    "AWT-EventQueue-1" prio=6 tid=0x0051e500 nid=0x1c19a00 runnable [f11c1000..f11c3b20]
         at java.io.UnixFileSystem.getBooleanAttributes0(Native Method)
         at java.io.UnixFileSystem.getBooleanAttributes(UnixFileSystem.java:221)
         at java.io.File.exists(File.java:680)
         at org.netbeans.modules.masterfs.MasterFileObject.isValid(MasterFileObject.java:78)
         at org.netbeans.modules.masterfs.Cache.get(Cache.java:62)
         at org.netbeans.modules.masterfs.Cache.getOrCreate(Cache.java:83)
         at org.netbeans.modules.masterfs.MasterFileObject.getFileObject(MasterFileObject.java:274)
         at org.openide.filesystems.FileObject.getFileObject(FileObject.java:563)
         at org.openide.filesystems.FileUtil.createFolder(FileUtil.java:204)
         at com.sun.rave.api.jsf.project.JsfProjectHelper.getPageBeanRoot(JsfProjectHelper.java:116)
         at com.sun.rave.api.jsf.project.JsfProjectHelper.getBasePathForJava(JsfProjectHelper.java:786)
         at com.sun.rave.api.jsf.project.JsfProjectHelper.getJspForJava(JsfProjectHelper.java:828)
         at com.sun.rave.project.jsfloader.Utils.findJspForJava(Utils.java:67)
         at com.sun.rave.project.jsfloader.JsfJavaDataObject.getCookie(JsfJavaDataObject.java:62)
         at com.sun.rave.insync.Util.retrieveDocument(Util.java:97)
         at com.sun.rave.insync.SourceUnit.grabDocument(SourceUnit.java:106)
         at com.sun.rave.insync.SourceUnit.sync(SourceUnit.java:429)
         at com.sun.rave.insync.beans.BeansUnit.syncSubUnits(BeansUnit.java:200)
         at com.sun.rave.insync.faces.FacesPageUnit.syncSubUnits(FacesPageUnit.java:225)
         at com.sun.rave.insync.beans.BeansUnit.sync(BeansUnit.java:174)
         at com.sun.rave.insync.live.LiveUnit.sync(LiveUnit.java:288)
         at com.sun.rave.insync.live.LiveUnitWrapper.sync(LiveUnitWrapper.java:115)
         at com.sun.rave.insync.models.FacesModel.syncImpl(FacesModel.java:899)
         at com.sun.rave.insync.Model.sync(Model.java:207)
         at com.sun.rave.insync.ModelSe

  • Query performance problem - events 2505-read cache and 2510-write cache

    Hi,
    I am experiencing severe performance problems with a query, specifically with events 2505 (Read Cache) and 2510 (Write Cache) which went up to 11000 seconds on some executions. Data Manager (400 s), OLAP data selection (90 s) and OLAP user exit (250 s) are other the other event with noticeable times. All other events are very quick.
    The query settings (RSRT) are
    persistent cache across each app server -> cluster table,
    update cache in delta process is checked ->group on infoprovider type
    use cache despite virtual characteristics/key figs checked (one info-cube has1 virtual key figure which should have a static result for a day)
    =>Do you know how I can get more details than what's in 0TCT_C02 to break down the read and write cache events time or do you have any recommandation?
    I have checked and no dataloads were in progres on the info-providers and no master data loads (change run). Overall system performance was acceptable for other queries.
    Thanks

    Hi,
    Looks like you're using BDB, not BDB JE, and this is the BDB JE forum. Could you please repost here?:
    Berkeley DB
    Thanks,
    mark

  • 10.6 Performance Problems

    Although I installed Snow Leopard from scratch, I encountered severe performance problems after a while. To copy a file, for instance, took minutes instead of seconds for a some 100 MB file. To switch between windows took long time. The processing was interrupted by waiting loops every few seconds. And so on.
    I looked around in various forums to find hints how to solve this problem, but nothing worked. The activity monitor doesn't show anything unusual; from its point of view everything is fine.
    In the meantime, I reinstalled again Snow Leopard from scratch. After installing iLife 08, I now have the impression that some Finder operations are again getting slower. This may be a trace to the reason for that performance problems. However, this only affects the file copying times, not the application performance, so this does not explain the full picture
    So my question: does anyone else - having performance problems with SL - has similar observations in combination with iLife 08? Does anyone else have similar performance problems and solved them?
    Regards,
    Hardy

    Sometimes the performance of the system is impacted by permission errors, I would recommend running Disk Utility and repair permissions, also, just in case... check the disk to make sure you don't have nay bad sectors. You can also use a system utility to optimize system performance, Onyx is a good utility that is also free, just make sure to download the appropriate version for your system. http://www.titanium.free.fr/pgs2/english/download.html

  • Numbers Import and Load Performance Problems

    Some initial results of converting a single 1.9MB Excel spreadsheet to Numbers:
    _Results using Numbers v1.0_
    Import 1.9MB Excel spreadsheet into Numbers: 7 minutes 3.5 seconds
    Load (saved) Numbers spreadsheet (2.4MB): 5 minutes 11.7 seconds
    _Results using Numbers v1.0.1_
    Import 1.9MB Excel spreadsheet into Numbers: 6 minutes 36.1 seconds
    Load (saved) Numbers spreadsheet (2.4MB): 5 minutes 5.8 seconds
    _Comparison to Excel_
    Excel loads the original 1.9MB spreadsheet in 4.2 seconds.
    Summary
    Numbers v1.0 and v1.0.1 exhibit severe performance problems with loading (of it's own files) and importing of Excel V.x files.

    Hello
    It seems that you missed a detail.
    When a Numbers document is 1.9MB on disk, it may be a 7 or 8 MB file to load.
    A Numbers document s not a file but a package which is a disguised folder.
    The document itself is described in an WML extremely verbose file stored in a gzip archive.
    Opening such a document starts with an unpack sequence which is a fast one (except maybe if the space available on the support is short).
    The unpacked file may easily be 10 times larger than the packed one.
    Just an example, the xml.gz file containing the report of my bank operations for 2007 is a 300Kb one but the expanded one, the one which Numers must read, is a 4 MB one, yes 13,3 times the original.
    And, loading it is not sufficient, this huge file must be "interpreted" to build the display.
    As it is very long, Apple treats it as the TRUE description of the document and so, each time it must display something, it must work as the interpreters that old users like me knew when they used the Basic available in Apple // machines.
    Addind a supplemetary stage would have add time to the opening sequence but would have fasten the usage of the document.
    Of course, it would also had added a supplementary stage duringthe save it process.
    I hope that they will adopt this scheme but of course I don't know if they will do that.
    Of course, the problem is quite the same when we import a document from Excel or from AppleWorks.
    The app reads the original which is stored in a compact shape then it deciphers it to create the XML code. Optimisation would perhaps reduce a bit these tasks but it will continue to be a time consuming one.
    Yvan KOENIG (from FRANCE dimanche 27 janvier 2008 16:46:12)

  • ERP6.0/10g performance problem

    Dear development support,
    We have severe performance problems in several standard functions which access large tables such as GLPCA and MSEG.
    [PROBLEM DESCRIPTION]
    We are currently upgrading 4.6C system to ERP 6.0.
    Program RCOPCA02 takes more than 10 minutes in our ERP 6.0 system, while the same problem finishes for about a few seconds in 4.6C system.
    After our investigation, we found out the followings:
    1. In 4.6C system, SQL execution plan shows that it's using add-on index
    2. In ERP 6.0 system, SQL execution plan shows that it's using standard index (~1)
    3. GLPCA table is analyzed and statistics information is updated
    We want to solved this problem without adding any additional index because this table is very huge.
    Thank you very much for your support in advance.
    Regards,
    Fukuoji

    Hello again,
    I found a sap note "1165319 - Optimizer merge fix for Oracle 10.2.0.4" which was released recently.
    This might be asked to SAP support, but I am afraid this patch might solve the problem....
    I will update this message if the situation develops.
    Regards,
    Kazuya Imabayashi

  • Performance problem when using CAPS LOCK piano input

    Dear reader,
    I'm very new to Logic and am running into a performance problem when using the CAPS LOCK-piano-keyboard for input of an instrument: when I'm not recording everything is fine and the program instantly responds on my keystrokes, but as soon as I go into record-mode there is sometimes a delay in the response-time (so I press a key and it takes up to half a second longer before the note is actually played).
    Is there anything to do about this to improve performance (for example turning of certain features of the application), or should I never use the CAPS LOCK keyboard anyway and go straight for an external MIDI-keyboard?
    Thanks and regards,
    Tim Metz

    Does your project have Audio tracks and just how heavy it is, how many tracks? Also, what kind of Software Instrument do you use?

  • Performance Problem with several Database accesses

    Hello
    We have SAP ERP 2004 running on a Oracle DB 9.x and we face a strange behavior of our system. Sometimes it is very slow. MB51 with 1 Material and 1 Month as selection runs into timeout. But i faced the most significant (or strange) problem  using SE16 with table bseg. If i use Company code,  one item number and year as a selection, it is very fast. If i put in 2 items numbers instead of one, it takes 15 minutes to show the result. This happens everytime i try it.
    For me it looks like the system is doing a sequential read instead of using the proper index. This "wrong index" behavior could be the source of many of our performance problems.
    Does anybody have a suggestion for me, how to fix this problem?
    Thanks in advance
    Hans-Peter

    > We have SAP ERP 2004 running on a Oracle DB 9.x and we face a strange behavior of our system. Sometimes it is very slow. MB51 with 1 Material and 1 Month as selection runs into timeout. But i faced the most significant (or strange) problem  using SE16 with table bseg. If i use Company code,  one item number and year as a selection, it is very fast. If i put in 2 items numbers instead of one, it takes 15 minutes to show the result. This happens everytime i try it.
    >
    > For me it looks like the system is doing a sequential read instead of using the proper index. This "wrong index" behavior could be the source of many of our performance problems.
    As mentioned above you can active trace with ST05 to monitor the problematic SQL request. With the explain function, you will see the estimated cost of the request and the used index.
    An other way is during the execution of the request --> ST04 -> performance -> Wait event analysis -> Session monitor
    If you use the IN option, your request could be very expensive. And in many cases, the reads can only performed with sequential access.
    For an overlook of possible indexes for a table, you can use the DB05. To interpret the results : an index is representative when you have numerous distinct values for a few 'rows per generic keys'
    Hope this will help you

  • URGENT------MB5B : PERFORMANCE PROBLEM

    Hi,
    We are getting the time out error while running the transaction MB5B. We have posted the same to SAP global support for further analysis, and SAP revrted with note 1005901 to review.
    The note consists of creating the Z table and some Z programs to execute the MB5B without time out error, and SAP has not provided what type logic has to be written and how we can be addressed this.
    Could any one suggest us how can we proceed further.
    Note as been attached for reference.
              Note 1005901 - MB5B: Performance problems
    Note Language: English Version: 3 Validity: Valid from 05.12.2006
    Summary
    Symptom
    o The user starts transaction MB5B, or the respective report
    RM07MLBD, for a very large number of materials or for all materials
    in a plant.
    o The transaction terminates with the ABAP runtime error
    DBIF_RSQL_INVALID_RSQL.
    o The transaction runtime is very long and it terminates with the
    ABAP runtime error TIME_OUT.
    o During the runtime of transaction MB5B, goods movements are posted
    in parallel:
    - The results of transaction MB5B are incorrect.
    - Each run of transaction MB5B returns different results for the
    same combination of "material + plant".
    More Terms
    MB5B, RM07MLBD, runtime, performance, short dump
    Cause and Prerequisites
    The DBIF_RSQL_INVALID_RSQL runtime error may occur if you enter too many
    individual material numbers in the selection screen for the database
    selection.
    The runtime is long because of the way report RM07MLBD works. It reads the
    stocks and values from the material masters first, then the MM documents
    and, in "Valuated Stock" mode, it then reads the respective FI documents.
    If there are many MM and FI documents in the system, the runtimes can be
    very long.
    If goods movements are posted during the runtime of transaction MB5B for
    materials that should also be processed by transaction MB5B, transaction
    MB5B may return incorrect results.
    Example: Transaction MB5B should process 100 materials with 10,000 MM
    documents each. The system takes approximately 1 second to read the
    material master data and it takes approximately 1 hour to read the MM and
    FI documents. A goods movement for a material to be processed is posted
    approximately 10 minutes after you start transaction MB5B. The stock for
    this material before this posting has already been determined. The new MM
    document is also read, however. The stock read before the posting is used
    as the basis for calculating the stocks for the start and end date.
    If you execute transaction MB5B during a time when no goods movements are
    posted, these incorrect results do not occur.
    Solution
    The SAP standard release does not include a solution that allows you to
    process mass data using transaction MB5B. The requirements for transaction
    MB5B are very customer-specific. To allow for these customer-specific
    requirements, we provide the following proposed implementation:
    Implementation proposal:
    o You should call transaction MB5B for only one "material + plant"
    combination at a time.
    o The list outputs for each of these runs are collected and at the
    end of the processing they are prepared for a large list output.
    You need three reports and one database table for this function. You can
    store the lists in the INDX cluster table.
    o Define work database table ZZ_MB5B with the following fields:
    - Material number
    - Plant
    - Valuation area
    - Key field for INDX cluster table
    o The size category of the table should be based on the number of
    entries in material valuation table MBEW.
    Report ZZ_MB5B_PREPARE
    In the first step, this report deletes all existing entries from the
    ZZ_MB5B work table and the INDX cluster table from the last mass data
    processing run of transaction MB5B.
    o The ZZ_MB5B work table is filled in accordance with the selected
    mode of transaction MB5B:
    - Stock type mode = Valuated stock
    - Include one entry in work table ZZ_MB5B for every "material +
    valuation area" combination from table MBEW.
    o Other modes:
    - Include one entry in work table ZZ_MB5B for every "material +
    plant" combination from table MARC
    Furthermore, the new entries in work table ZZ_MB5B are assigned a unique
    22-character string that later serves as a key term for cluster table INDX.
    Report ZZ_MB5B_MONITOR
    This report reads the entries sequentially in work table ZZ_MB5B. Depending
    on the mode of transaction MB5B, a lock is executed as follows:
    o Stock type mode = Valuated stock
    For every "material + valuation area" combination, the system
    determines all "material + plant" combinations. All determined
    "material + plant" combinations are locked.
    o Other modes:
    - Every "material + plant" combination is locked.
    - The entries from the ZZ_MB5B work table can be processed as
    follows only if they have been locked successfully.
    - Start report RM07MLBD for the current "Material + plant"
    combination, or "material + valuation area" combination,
    depending on the required mode.
    - The list created is stored with the generated key term in the
    INDX cluster table.
    - The current entry is deleted from the ZZ_MB5B work table.
    - Database updates are executed with COMMIT WORK AND WAIT.
    - The lock is released.
    - The system reads the next entry in the ZZ_MB5B work table.
    Application
    - The lock ensures that no goods movements can be posted during
    the runtime of the RM07MLBD report for the "material + Plant"
    combination to be processed.
    - You can start several instances of this report at the same
    time. This method ensures that all "material + plant"
    combinations can be processed at the same time.
    - The system takes just a few seconds to process a "material +
    Plant" combination so there is just minimum disruption to
    production operation.
    - This report is started until there are no more entries in the
    ZZ_MB5B work table.
    - If the report terminates or is interrupted, it can be started
    again at any time.
    Report ZZ_MB5B_PRINT
    You can use this report when all combinations of "material + plant", or
    "material + valuation area" from the ZZ_MB5B work table have been
    processed. The report reads the saved lists from the INDX cluster table and
    adds these individual lists to a complete list output.
    Estimated implementation effort
    An experienced ABAP programmer requires an estimated three to five days to
    create the ZZ_MB5B work table and these three reports. You can find a
    similar program as an example in Note 32236: MBMSSQUA.
    If you need support during the implementation, contact your SAP consultant.
    Header Data
    Release Status: Released for Customer
    Released on: 05.12.2006 16:14:11
    Priority: Recommendations/additional info
    Category: Consulting
    Main Component MM-IM-GF-REP IM Reporting (no LIS)
    The note is not release-dependent.     
    Thanks in advance.
    Edited by: Neliea on Jan 9, 2008 10:38 AM
    Edited by: Neliea on Jan 9, 2008 10:39 AM

    before you try any of this try working with database-hints as described in note 921165, 902157, 918992

  • Performance problem with WPF Viewer CRVS2010

    Hi,
    We are using Crystal Reports 2010 and the new WPF Viewer. Last week when we set up a test machine to run our integration tests (several hundred) all report tests failed (about 30 tests) with a timeout exception.
    The testmachine setup:
    HP DL 580 G5
    WMWare ESXi 4.0
    Guest OS: Windows 7 Enterprise 64-bit
    Memory (guest OS): 3GB
    CPU: 1
    Visual Studio 2010
    Crystal Reports for Visual Studio 2010 with 64 bit runtime installed
    Visual Studio 2008 installed
    Microsoft Office 2010 installed
    Macafee antivirus
    There are about 10 other virtual machines on the same HW.
    I think the performance problem is related to text obejcts on a report document viewed in a WPF Viewer. I made a simple WPF GUI with 2 buttons and the first button executes a very simple report that only has a text object with a few words in it and the other button is also a simple report with only 1 text object with approx. 100 words (about 800 charchters).
    The first report executes and displays almost instantly and the second report executes instantantly but displays after approx. 1 min 30 sec.
    And execute in this context means that all VB.Net code runs in the compiler without any exception or performance problem. The performance problem seems to come after viewer.Show() (in the code below) has executed.
    I did another test on the second report and replaced the text obejct with a formula field with the same text as the text object and this test executed and displayed the report instantly.
    So the performance problem seems to have something to do with rendering of textobjects in the WPF Viewer on a virtual machine with the above setup.
    I've made several tests on local machines with Windows XP (32 bit) or Winows 7 (64 bit) installed and none of them have this performance problem. Its not a critical issue for us because our users will run this application on their local PCs with Windows 7 64-bit but its a bit problematic for our project not being able to run all of our integration tests but I will probably solve this by using a local PC instead.
    Here is the VB.Net code Im using to View the reports:
    Private Sub LightWeight_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
            Dim lightWeightReport As New CrystalDecisions.CrystalReports.Engine.ReportDocument
            lightWeightReport.Load(Environment.CurrentDirectory & "\LightWeight.rpt")
            ' Initialize Viewer
            Dim viewer As LF.LIV.PEAAT.Crystal.Views.ReportViewer = New LF.LIV.PEAAT.Crystal.Views.ReportViewer()
            viewer.Owner = Me
            viewer.reportViewer.ViewerCore.ReportSource = lightWeightReport
            viewer.Show()
        End Sub
        Private Sub LightWeightSlow_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
            Dim lightWeightReport As New CrystalDecisions.CrystalReports.Engine.ReportDocument
            lightWeightReport.Load(Environment.CurrentDirectory & "\LightWeightSlow.rpt")
            ' Initialize Viewer
            Dim viewer As LF.LIV.PEAAT.Crystal.Views.ReportViewer = New LF.LIV.PEAAT.Crystal.Views.ReportViewer()
            viewer.Owner = Me
            viewer.reportViewer.ViewerCore.ReportSource = lightWeightReport
            viewer.Show()
        End Sub
    The reports are 2 empty default reports with only 1 textobject on the details section.
    // Thomas

    See if the KB [
    [1448013  - Connecting to Oracle database. Error; Failed to load database information|http://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/oss_notes_boj/sdn_oss_boj_bi/sap(bD1lbiZjPTAwMQ==)/bc/bsp/spn/scn_bosap/notes%7B6163636573733d36393736354636443646363436353344333933393338323636393736354637333631373036453646373436353733354636453735364436323635373233443330333033303331333433343338333033313333%7D.do] helps.
    Also the following may not hurt to have a look at (if only for ideas):
    [1217021 - Err Msg: "Unable to connect invalid log on parameters" using Oracle in VS .NET|http://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/oss_notes_boj/sdn_oss_boj_bi/sap(bD1lbiZjPTAwMQ==)/bc/bsp/spn/scn_bosap/notes%7B6163636573733d36393736354636443646363436353344333933393338323636393736354637333631373036453646373436353733354636453735364436323635373233443330333033303331333233313337333033323331%7D.do]
    [1471508 - Logon error when connecting to Oracle database in a VS .NET application|http://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/oss_notes_boj/sdn_oss_boj_bi/sap(bD1lbiZjPTAwMQ==)/bc/bsp/spn/scn_bosap/notes%7B6163636573733d36393736354636443646363436353344333933393338323636393736354637333631373036453646373436353733354636453735364436323635373233443330333033303331333433373331333533303338%7D.do]
    [1196712 - Error: "Failed to load the oci.dll" in ASP.NET application against an Oracle database|http://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/oss_notes_boj/sdn_oss_boj_bi/sap(bD1lbiZjPTAwMQ==)/bc/bsp/spn/scn_bosap/notes%7B6163636573733d36393736354636443646363436353344333933393338323636393736354637333631373036453646373436353733354636453735364436323635373233443330333033303331333133393336333733313332%7D.do]
    Ludek
    Follow us on Twitter http://twitter.com/SAPCRNetSup

  • Performance problems when running PostgreSQL on ZFS and tomcat

    Hi all,
    I need help with some analysis and problem solution related to the below case.
    The long story:
    I'm running into some massive performance problems on two 8-way HP ProLiant DL385 G5 severs with 14 GB ram and a ZFS storage pool in raidz configuration. The servers are running Solaris 10 x86 10/09.
    The configuration between the two is pretty much the same and the problem therefore seems generic for the setup.
    Within a non-global zone I’m running a tomcat application (an institutional repository) connecting via localhost to a Postgresql database (the OS provided version). The processor load is typically not very high as seen below:
    NPROC USERNAME  SWAP   RSS MEMORY      TIME  CPU                            
        49 postgres  749M  669M   4,7%   7:14:38  13%
         1 jboss    2519M 2536M    18%  50:36:40 5,9%We are not 100% sure why we run into performance problems, but when it happens we experience that the application slows down and swaps out (according to below). When it settles everything seems to turn back to normal. When the problem is acute the application is totally unresponsive.
    NPROC USERNAME  SWAP   RSS MEMORY      TIME  CPU
        1 jboss    3104M  913M   6,4%   0:22:48 0,1%
    #sar -g 5 5
    SunOS vbn-back 5.10 Generic_142901-03 i86pc    05/28/2010
    07:49:08  pgout/s ppgout/s pgfree/s pgscan/s %ufs_ipf
    07:49:13    27.67   316.01   318.58 14854.15     0.00
    07:49:18    61.58   664.75   668.51 43377.43     0.00
    07:49:23   122.02  1214.09  1222.22 32618.65     0.00
    07:49:28   121.19  1052.28  1065.94  5000.59     0.00
    07:49:33    54.37   572.82   583.33  2553.77     0.00
    Average     77.34   763.71   771.43 19680.67     0.00Making more memory available to tomcat seemed to worsen the problem or at least didn’t prove to have any positive effect.
    My suspicion is currently focused on PostgreSQL. Turning off fsync boosted performance and made the problem less often to appear.
    An unofficial performance evaluation on the database with “vacuum analyze” took 19 minutes on the server and only 1 minute on a desktop pc. This is horrific when taking the hardware into consideration.
    The short story:
    I’m trying different steps but running out of ideas. We’ve read that the database block size and file system block size should match. PostgreSQL is 8 Kb and ZFS is 128 Kb. I didn’t find much information on the matter so if any can help please recommend how to make this change…
    Any other recommendations and ideas we could follow? We know from other installations that the above setup runs without a single problem on Linux on much smaller hardware without specific tuning. What makes Solaris in this configuration so darn slow?
    Any help appreciated and I will try to provide additional information on request if needed…
    Thanks in advance,
    Kasper

    raidz isnt a good match for databases. Databases tend to require good write performance for which mirroring works better.
    Adding a pair of SSD's as a ZIL would probably also help, but chances are its not an option for you..
    You can change the record size by "zfs set recordsize=8k <dataset>"
    It will only take effect for newly written data. Not existing data.

  • Performance problems related to Timesheet entry and Time Admin processing.

    Implementing 9.0, they are in UAT, experiencing performance delays on timeadmin and timesheet page when using apply rules button, they have quite a bit of rules and when number of users increase to 30 concurrent users severe performance issue are experienced on timesheet, at this point they are more concerned with the timesheet performance than the time admin performance, they have delayed their go live date until this issue gets resolved.
    In the Performance Monitor data were are getting several failed status' for the PMU 'JOLT Request' and PMU Details 'ICPanel'. In the additional data area it states:
    Error Status Code:
    Jolt ServiceException: Jolt Errno 100 JoltException.TPEJOLT
    PeopleSoft 9.0
    Weblogic 9.2
    Database:SQL Server 5 SP3
    Windows Server 2003 SP2

    Have you tried raising a SR on oracle support?
    Also, Timesheet performance is a known issue and there are multiple such issues reported on metalink. You can look at the issues for potential solutions!
    https://support.oracle.com/CSP/main/article?cmd=show&id=659033.1&type=NOT
    https://support.oracle.com/CSP/main/article?cmd=show&type=NOT&doctype=PROBLEM&id=857761.1
    https://support.oracle.com/CSP/main/article?cmd=show&type=NOT&doctype=PROBLEM&id=961924.1

  • Performance problems with File Adapter and XI freeze

    Hi NetWeaver XI geeks,
    We are deploying a XI based product and encounter some huge performance problems. Here after the scenario and the issues:
    - NetWeaver XI 2004
    - SAP 4.6c
    - Outbound Channel
    - No mapping used and only the iDocs Adapter is involved in the pipeline processing
    - File Adapter
    - message file size < 2Ko
    We have zeroed down the problem to Idoc adapter’s performance.
    We are using a file channel and  every 15 seconds a file in a valid Idoc format is placed in a folder, Idoc adapter picks up the file from this folder and sends it  to the SAP R/3 instance.
    For few minutes (approx 5 mins) it works (the CPU usage is less then 20% even if processing time seems huge : <b>5sec/msg</b>) but after this time the application gets blocked and the CPU gets overloaded at 100% (2 processes disp_worker.exe at 50% each).
    If we inject several files in the source folder at the same time or if we decrease the time gap (from 15 seconds to 10 seconds) between creation of 2 Idoc files , the process blocks after posting  2-3 docs to SAP R/3.
    Could you point us some reasons that could provoke that behavior?
    Basically looking for some help in improving performance of the Idoc adapter.
    Thanks in advance for your help and regards,
    Adalbert

    Hi Bhavesh,
    Thanks for your suggestions. We will test...
    We wonder if the hardware is not the problem of this extremely poor performance.
    Our XI server is:
    •     Windows 2003 Server
    •     Processors: 2x3GHZ
    •     RAM: 4GB (the memory do not soak)
    The messages are well formed iDocs = single line INVOICES.
    Some posts are talking 2000 messages processed in some seconds... whereas we got 5 sec per message.
    Tnanks for your help.
    Adalbert

  • Performance problems with XMLTABLE and XMLQUERY involving relational data

    Hello-
    Is anyone out there using XMLTABLE or XMLQUERY with more than a toy set of data? I am running into serious performance problems tyring to do basic things such as:
    * Combine records in 10 relational tables into a single table of XMLTYPE records using XMLTABLE. This hangs indefinitely for any more than 800 records. Oracle has confirmed that this is a problem and is working on a fix.
    * Combine a single XMLTYPE record with several relational code tables into a single XMLTYPE record using XMLQUERY and ora:view() to insert code descriptions after each code. Performance is 10 seconds for 10 records (terrible) passing a batch of records , or 160 seconds for one record (unacceptable!). How can it take 10 times longer to process 1/10th the number of records? Ironically, the query plan says it will do a full table scan of records for the batch, but an index access for the one record passed to the XMLQUERY.
    I am rapidly losing faith in XML DB, and desparately need some hints on how to work around these performance problems, or at least some assurance that others have been able to get this thing to perform.

    <Note>Long post, sorry.</Note>
    First, thanks for the responses above. I'm impressed with the quality of thought put into them. (Do the forum rules allow me to offer rewards? :) One suggestion in particular made a big performance improvement, and I’m encouraged to hear of good performance in pure XML situations. Unfortunately, I think there is a real performance challenge in two use cases that are pertinent to the XML+relational subject of this post and probably increasingly common as XML DB usage increases:
    •     Converting legacy tabular data into XML records; and
    •     Performing code table lookups for coded values in XML records.
    There are three things I want to accomplish with this post:
    •     Clarify what we are trying to accomplish, which might expose completely different approaches than I have tried
    •     Let you know what I tried so far and the rationale for my approach to help expose flaws in my thinking and share what I have learned
    •     Highlight remaining performance issues in hopes that we can solve them
    What we are trying to accomplish:
    •     Receive a monthly feed of 10,000 XML records (batched together in text files), each containing information about an employee, including elements that repeat for every year of service. We may need to process an annual feed of 1,000,000 XML records in the future.
    •     Receive a one-time feed of 500,000 employee records stored in about 10 relational tables, with a maximum join depth of 2 or 3. This is inherently a relational-to-XML process. One record/second is minimally acceptable, but 10 records/sec would be better.
    •     Consolidate a few records (from different providers) for each employee into a single record. Given the data volume, we need to achieve a minimum rate of 10 records per second. This may be an XML-only process, or XML+relational if code lookups are done during consolidation.
    •     Allow the records to be viewed and edited, with codes resolved into user-friendly descriptions. Since a user is sitting there, code lookups done when a record is viewed (vs. during consolidation) should not take more than 3 seconds total. We have about 20 code tables averaging a few hundred rows each, though one has 450,000 rows.
    As requested earlier, I have included code at the end of this post for example tables and queries that accurately (but simply) replicate our real system.
    Why we did and why:
    •     Stored the source XML records as CLOBS: We did this to preserve the records exactly as they were certified and sent from providers. In addition, we always access the entire XML record as a whole (e.g., when viewing a record or consolidating employee records), so this storage model seemed like a good fit. We can copy them into another format if necessary.
    •     Stored the consolidated XML employee records as “binary XML”. We did this because we almost always access a single, entire record as a whole (for view/edit), but might want to create some summary statistics at some point. Binary XML seemed the best fit.
    •     Used ora:view() for both tabular source records and lookup tables. We are not aware of any alternatives at this time. If it made sense, most code tables could be pre-converted into XML documents, but this seemed risky from a performance standpoint because the lookups use both code and date range constraints (the meaning of codes changes over time).
    •     Stored records as XMLTYPE columns in a table with other key columns on the table, plus an XMLTYPE metadata column. We thought this would facilitate pulling a single record (or a few records for a given employee) quickly. We knew this might be unnecessary given XML indexes and virtual columns, but were not experienced with those and wanted the comfort of traditional keys. We did not used XMLTYPE tables or the XML Repository for documents.
    •     Used XMLTABLE to consolidate XML records by looping over each distinct employee ID in the source batch. We also tried XMLQUERY and it seems to perform about the same. We can achieve 10 to 20 records/second if we do not do any code lookups during consolidation, just meeting our performance requirement, but still much slower than expected.
    •     Used PL/SQL with XMLFOREST to convert tabular source records to XML by looping over distinct employee IDs. We tried this outside PL/SQL both with XMLFOREST and XMLTABLE+ora:view(), but it hangs in both cases for more than 800 records (a known/open issue). We were able to get it to work by using an explicit cursor to loop over distinct employee IDs (rather than processing all records at once within the query). The performance is one record/second, which is minimally acceptable and interferes with other database activity.
    •     Used XMLQUERY plus ora:view() plus XPATH constraints to perform code lookups. When passing a single employee record, the response time ranges from 1 sec to 160 sec depending on the length of the record (i.e., number of years of service). We achieved a 5-fold speedup using an XMLINDEX (thank you Marco!!). The result may be minimally acceptable, but I’m baffled why the index would be needed when processing a single XML record. Other things we tried: joining code tables in the FOR...WHERE clauses, joining code tables using LET with XPATH constraints and LET with WHERE clause constraints, and looking up codes individually via JDBC from the application code at presentation time. All those approaches were slower. Note: the difference I mentioned above in equality/inequality constraint performance was due to data record variations not query plan variations.
    What issues remain?
    We have a minimally acceptable solution from a performance standpoint with one very awkward PL/SQL workaround. The performance of a mixed XML+relational data query is still marginal IMHO, until we properly utilize available optimizations, fix known problems, and perhaps get some new query optimizations. On the last point, I think the query plan for tabular lookups of codes in XML records is falling short right now. I’m reminded of data warehousing in the days before hash joins and star join optimization. I would be happy to be wrong, and just as happy for viable workarounds if I am right!
    Here are the details on our code lookup challenge. Additional suggestions would be greatly appreciated. I’ll try to post more detail on the legacy table conversion challenge later.
    -- The main record table:
    create table RECORDS (
    SSN varchar2(20),
    XMLREC sys.xmltype
    xmltype column XMLREC store as binary xml;
    create index records_ssn on records(ssn);
    -- A dozen code tables represented by one like this:
    create table CODES (
    CODE varchar2(4),
    DESCRIPTION varchar2(500)
    create index codes_code on codes(code);
    -- Some XML records with coded values (the real records are much more complex of course):
    -- I think this took about a minute or two
    DECLARE
    ssn varchar2(20);
    xmlrec xmltype;
    i integer;
    BEGIN
    xmlrec := xmltype('<?xml version="1.0"?>
    <Root>
    <Id>123456789</Id>
    <Element>
    <Subelement1><Code>11</Code></Subelement1>
    <Subelement2><Code>21</Code></Subelement2>
    <Subelement3><Code>31</Code></Subelement3>
    </Element>
    <Element>
    <Subelement1><Code>11</Code></Subelement1>
    <Subelement2><Code>21</Code></Subelement2>
    <Subelement3><Code>31</Code></Subelement3>
    </Element>
    <Element>
    <Subelement1><Code>11</Code></Subelement1>
    <Subelement2><Code>21</Code></Subelement2>
    <Subelement3><Code>31</Code></Subelement3>
    </Element>
    </Root>
    for i IN 1..100000 loop
    insert into records(ssn, xmlrec) values (i, xmlrec);
    end loop;
    commit;
    END;
    -- Some code data like this (ignoring date ranges on codes):
    DECLARE
    description varchar2(100);
    i integer;
    BEGIN
    description := 'This is the code description ';
    for i IN 1..3000 loop
    insert into codes(code, description) values (to_char(i), description);
    end loop;
    commit;
    end;
    -- Retrieve one record while performing code lookups. Takes about 5-6 seconds...pretty slow.
    -- Each additional lookup (times 3 repeating elements in the data) adds about 1 second.
    -- A typical real record has 5 Elements and 20 Subelements, meaning more than 20 seconds to display the record
    -- Note we are accessing a single XML record based on SSN
    -- Note also we are reusing the one test code table multiple times for convenience of this test
    select xmlquery('
    for $r in Root
    return
    <Root>
    <Id>123456789</Id>
    {for $e in $r/Element
        return
        <Element>
          <Subelement1>
            {$e/Subelement1/Code}
    <Description>
    {ora:view("disaac","codes")/ROW[CODE=$e/Subelement1/Code]/DESCRIPTION/text() }
    </Description>
    </Subelement1>
    <Subelement2>
    {$e/Subelement2/Code}
    <Description>
    {ora:view("disaac","codes")/ROW[CODE=$e/Subelement2/Code]/DESCRIPTION/text()}
    </Description>
    </Subelement2>
    <Subelement3>
    {$e/Subelement3/Code}
    <Description>
    {ora:view("disaac","codes")/ROW[CODE=$e/Subelement3/Code]/DESCRIPTION/text() }
    </Description>
    </Subelement3>
    </Element>
    </Root>
    ' passing xmlrec returning content)
    from records
    where ssn = '10000';
    The plan shows the nested loop access that slows things down.
    By contrast, a functionally-similar SQL query on relational data will use a hash join and perform 10x to 100x faster, even for a single record. There seems to be no way for the optimizer to see the regularity in the XML structure and perform a corresponding optimization in joining the code tables. Not sure if registering a schema would help. Using structured storage probably would. But should that be necessary given we’re working with a single record?
    Operation Object
    |SELECT STATEMENT ()
    | SORT (AGGREGATE)
    | NESTED LOOPS (SEMI)
    | TABLE ACCESS (FULL) CODES
    | XPATH EVALUATION ()
    | SORT (AGGREGATE)
    | NESTED LOOPS (SEMI)
    | TABLE ACCESS (FULL) CODES
    | XPATH EVALUATION ()
    | SORT (AGGREGATE)
    | NESTED LOOPS (SEMI)
    | TABLE ACCESS (FULL) CODES
    | XPATH EVALUATION ()
    | SORT (AGGREGATE)
    | XPATH EVALUATION ()
    | SORT (AGGREGATE)
    | XPATH EVALUATION ()
    | TABLE ACCESS (BY INDEX ROWID) RECORDS
    | INDEX (RANGE SCAN) RECORDS_SSN
    With an xmlindex, the same query above runs in about 1 second, so is about 5x faster (0.2 sec/lookup), which is almost good enough. Is this the answer? Or is there a better way? I’m not sure why the optimizer wants to scan the code tables and index into the (one) XML record, rather than the other way around, but maybe that makes sense if the optimizer wants to use the same general plan as when the WHERE clause constraint is relaxed to multiple records.
    -- Add an xmlindex. Takes about 2.5 minutes
    create index records_record_xml ON records(xmlrec)
    indextype IS xdb.xmlindex;
    Operation Object
    |SELECT STATEMENT ()
    | SORT (GROUP BY)
    | FILTER ()
    | NESTED LOOPS ()
    | FAST DUAL ()
    | TABLE ACCESS (BY INDEX ROWID) SYS113473_RECORDS_R_PATH_TABLE
    | INDEX (RANGE SCAN) SYS113473_RECORDS_R_PATHID_IX
    | SORT (AGGREGATE)
    | FILTER ()
    | TABLE ACCESS (FULL) CODES
    | FILTER ()
    | NESTED LOOPS ()
    | FAST DUAL ()
    | TABLE ACCESS (BY INDEX ROWID) SYS113473_RECORDS_R_PATH_TABLE
    | INDEX (RANGE SCAN) SYS113473_RECORDS_R_PATHID_IX
    | SORT (GROUP BY)
    | FILTER ()
    | NESTED LOOPS ()
    | FAST DUAL ()
    | TABLE ACCESS (BY INDEX ROWID) SYS113473_RECORDS_R_PATH_TABLE
    | INDEX (RANGE SCAN) SYS113473_RECORDS_R_PATHID_IX
    | SORT (AGGREGATE)
    | FILTER ()
    | TABLE ACCESS (FULL) CODES
    | FILTER ()
    | NESTED LOOPS ()
    | FAST DUAL ()
    | TABLE ACCESS (BY INDEX ROWID) SYS113473_RECORDS_R_PATH_TABLE
    | INDEX (RANGE SCAN) SYS113473_RECORDS_R_PATHID_IX
    | SORT (GROUP BY)
    | FILTER ()
    | NESTED LOOPS ()
    | FAST DUAL ()
    | TABLE ACCESS (BY INDEX ROWID) SYS113473_RECORDS_R_PATH_TABLE
    | INDEX (RANGE SCAN) SYS113473_RECORDS_R_PATHID_IX
    | SORT (AGGREGATE)
    | FILTER ()
    | TABLE ACCESS (FULL) CODES
    | FILTER ()
    | NESTED LOOPS ()
    | FAST DUAL ()
    | TABLE ACCESS (BY INDEX ROWID) SYS113473_RECORDS_R_PATH_TABLE
    | INDEX (RANGE SCAN) SYS113473_RECORDS_R_PATHID_IX
    | SORT (AGGREGATE)
    | FILTER ()
    | NESTED LOOPS ()
    | FAST DUAL ()
    | TABLE ACCESS (BY INDEX ROWID) SYS113473_RECORDS_R_PATH_TABLE
    | INDEX (RANGE SCAN) SYS113473_RECORDS_R_PATHID_IX
    | SORT (AGGREGATE)
    | TABLE ACCESS (BY INDEX ROWID) SYS113473_RECORDS_R_PATH_TABLE
    | INDEX (RANGE SCAN) SYS113473_RECORDS_R_PATHID_IX
    | TABLE ACCESS (BY INDEX ROWID) RECORDS
    | INDEX (RANGE SCAN) RECORDS_SSN
    Am I on the right path, or am I totally using the wrong approach? I thought about using XSLT but was unsure how to reference the code tables.
    I’ve done the best I can constraining the main record to a single row passed to the XMLQUERY. Given Mark’s post (thanks!) should I be joining and constraining the code tables in the SQL WHERE clause too? That’s going to make the query much more complicated, but right now we’re more concerned about performance than complexity.

Maybe you are looking for

  • How can I transfer my iOS update to another iPad?

    How can I transfer my iPad  iOS update download to my wife's computer so that she can update without having to download the update all over again?

  • Getting the error LOG file opened at 01/29/07 18:13:12 while selecting from

    I am getting following error in log file while selecting from a external table LOG file opened at 01/29/07 18:13:12 KUP-04040: file test.csv in UTL not found. I am follwoing the following steps: connect as sys user : CREATE OR REPLACE DIRECTORY UTL a

  • Office 2011 Excel Macro Support

    Generally I've been very pleased with Office 2011 on Mac. However, in using the Tables area in Excel I have encountered several problems: * VBASIC macros don't work very well (or, perhaps, don't work at all. If example it isn't possble to create a ta

  • SNMP traps from 3005 Concentrator

    Software version: 4.1.3 I've configured the concentrator to trap events using the events list to a particular client. Currently the traps are working but not according to the list I've specified (I don't think :) The list is simple: IKE/120,119,167,

  • Some Previously Purchased iTunes Content Not Appearing in iCloud

    Greetings, I recently purchased an Apple TV (3rd Generation), and I began scrolling through my previous iTunes purchases under the TV Shows menu. I noticed that many of my older purchases do not show up. Most notably, I had purchased a season pass of