Why from the status()
output are you now running an old Version 07.20.3233-pthreads for Linux as of Jun 30 2021
binary, whereas previously you were running a ersion 07.20.3239-pthreads for Linux as of Feb 13 2024 (d698f21712)
binary ?
Why in the status()
output are 20000 buffers
whereas previously they were set to 680000 buffers
. The buffers in the status output is the NumberOfBuffers
param in the INI config file.
How many triples are in the database as with 20000 buffers which is the minimal Virtuoso default you would not be able to out much data before running out of memory buffers ? Forcing the database to start swapping to disk to process requests, which would slow it down resulting in a growth of pending transactions and general slowing of the database.
The Jena RDFConnection
method being used is connecting directly to the Virtuoso SPARQL endpoint, which does not support transactions
or the setting of different transaction isolation levels
in the database, that can impact performance. The default transaction isolation level for Virtuoso is READ_COMMITTED
, but the DefaultIsolation
setting in the [Parameters]
section can be used to set it to any of the standard levels of:
Numeric Value | Transaction Isolation Level |
---|---|
unset | as if set to 2, READ COMMITTED |
1 | READ UNCOMMITTED |
2 | READ COMMITTED |
4 | REPEATABLE READ |
8 | SERIALIZABLE |
So you can try setting the isolation level to something like REPEATABLE READ
ie DefaultIsolation = 4
, to see if it improves performance and prevents the excessive locking/pending transactions.
As said previously to better control transactions in the database you should use the methods outlined in the reviewed the Transactional Bulk Loading of RDF Data into Virtuoso DBMS via the Jena RDF Framework post we provide, which details the optimal means of bulk loading RDF datasets into Virtuoso with Jena using the Virtuoso Jena Provider.