You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jena.apache.org by Greg Albiston <an...@apache.org> on 2017/10/19 10:17:58 UTC

CMS diff: TDB FAQs

Clone URL (Committers only):
https://cms.apache.org/redirect?new=anonymous;action=diff;uri=http://jena.apache.org/documentation%2Ftdb%2Ffaqs.mdtext

Greg Albiston

Index: trunk/content/documentation/tdb/faqs.mdtext
===================================================================
--- trunk/content/documentation/tdb/faqs.mdtext	(revision 1812597)
+++ trunk/content/documentation/tdb/faqs.mdtext	(working copy)
@@ -102,7 +102,7 @@
 
 TDB uses write-ahead logging so new data is written both to an on-disk journal and kept in-memory.  This is necessary because TDB permits
 a single writer and multiple readers at any one time and readers are guaranteed to always see the state of the database at the time they
-started reading.  Therefore until there are no active readers it is not possible to update the database directly since readers are actively
+started reading.  Therefore, until there are no active readers it is not possible to update the database directly since readers are actively
 accessing it hence why a journal is used.  The in-memory journal holds some memory that cannot be freed up until such time as the database
 has no active readers/writers and the changes it holds can be safely flushed to disk.
 
@@ -110,8 +110,20 @@
 eventually causing out of memory errors in Fuseki.  You can see if you are experiencing this issue by examining your database directory, if it
 contains a `.jrnl` file that is non-empty then Fuseki/TDB is having to hold the journal in-memory.
 
-**However** because this relates to transactional use and the journal is also stored on disk no data will be lost, by stopping and restarting 
-Fuseki the journal will be flushed to disk.
+**However**, because this relates to transactional use and the journal is also stored on disk no data will be lost, by stopping and restarting 
+Fuseki the journal will be flushed to disk. When using the [TDB Java API](java_api.html), the journal can be flushed by closing any datasets and releasing the TDB resources.
+    
+      Dataset dataset = TDBFactory.createDataset(directory) ;
+      try{
+         ...
+         dataset.begin(ReadWrite.READ) ;
+         // Perform operations      
+         dataset.end() ;
+         ... 
+      }finally{
+         dataset.close();
+         TDBFactory.release(dataset);
+      }
 
 <a name="ssd"></a>
 ## Should I use a SSD?