Hi Christian,

Sorry, I should have provided a self-contained example to begin with.

In any case, I was running BaseX 10.0; after noticing that 10.6 boasts 'Much more memory-efficient representation of XML fragments', I upgraded to 10.7 and the problem appears to be resolved (and wow, there is a big difference in performance – kudos!).

Many thanks,

Jack

On Wed, 7 Feb 2024, 6:09 pm Christian Grün, <christian.gruen@gmail.com> wrote:
Hi Jack,

If you run the query via basexhttp, how do you retrieve the results, i.e., which client do you use?

Can you possibly provide us with a self-contained example, something like…

for $i in 1 to 500000
return <xml/> update {
  insert node <a/> into .
}

…and some steps to reproduce the behavior?

Thanks in advance,
Christian


On Wed, Feb 7, 2024 at 6:04 AM Jack Steyn <steynjack@gmail.com> wrote:
Hi,

I have a database about 200 MB in size made up of approximately 150 000 documents of similar size and structure as children of the root node.

When I run the following script in basexgui a significant amount of memory is consumed (over 1 GB if I'm reading the display correctly), but I do get a result:

for $doc in db:get('docs')
return $doc update {
    delete node .//*[local-name() = ('A', 'B', 'C', 'D')]
}

When I run it over basexhttp I get a java.lang.OutOfMemoryError: Java heap space. I have increased the memory available to the JVM to 4 GB but this has not affected the failure of the script.

How can I resolve this? Is there some rewriting of the script that would help, or is it more specific to basexhttp?

Many thanks,

Jack