basexhttp out of memory where basexgui suceeds

Wednesday, 7 February 2024 · 5 messages · last reply 8 Feb 2024
JS
Jack Steyn7 Feb 2024 06:03 #
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
JS
Jack Steyn7 Feb 2024 06:33 #
Sorry, the first line of the script should end with /*/* Could the problem be related to UPDINDEX, AUTOOPTIMIZE and/or FTINDEX all being set to true on basexhttp but false on basexgui? I thought it wouldn't make a difference because the updates occur in main memory, but perhaps it does. Best, Jack
Quoted text · Jack Steyn · 27 lines
On Wed, 7 Feb 2024, 4:03 pm Jack Steyn, <steynjack at 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 > >
CG
Christian Grünin reply to Jack Steyn, 7 Feb 2024, 06:037 Feb 2024 08:09 #
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
Quoted text · Jack Steyn · 27 lines
On Wed, Feb 7, 2024 at 6:04 AM Jack Steyn <steynjack at 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 > >
JS
Jack Steyn8 Feb 2024 07:29 #
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
Quoted text · Christian Grün · 48 lines
On Wed, 7 Feb 2024, 6:09 pm Christian Grün, <christian.gruen at 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 at 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 >> >>
CG
Christian Grün8 Feb 2024 07:46 #
…great to hear, thanks.
Quoted text · Jack Steyn · 63 lines
On Thu, Feb 8, 2024 at 7:30 AM Jack Steyn <steynjack at gmail.com> wrote: > 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 at 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 at 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 >>> >>>

⚡Generated with XQuery