[pybsddb] How to manage logs

Lauren Foutz lauren.foutz at oracle.com
Thu Jun 18 14:26:02 CEST 2015


If the environment and database are transaction enabled, then every 
operation will use transactions, regardless of whether you create one 
explicitly.  BDB will create a transaction internally and commit it when 
the operation finishes, or abort it on an error.

As for how to reduce the number of logs.  Using DB_LOG_AUTO_REMOVE is a 
good start, but it will not remove logs until you run a checkpoint.  So 
I recommend you execute a checkpoint at regular intervals while loading 
data into the databases.

Also, you should removing the comment getting rid of DB_INIT_LOG in 
flags, and also add the flag DB_INIT_LOCK.

Lauren Foutz

On 6/18/2015 5:58 AM, Amirouche Boubekki wrote:
> Héllo,
>
>
> I'm loading a dataset (conceptnet5) into Ajgu Db [1] backed by 
> pybsddb3 '6.0.1' and Berkeley DB 5.3.21.
>
> The problem I have is that even when I'm not using transactions 
> (passing txn=None) my database fills the disk with log files. There is 
> 2.3 Go of database files (including __db.* files) out of 429 Go total 
> disk space used by the database directory (du -h .).
>
> How can I remove those log files during the import of the database. 
> Right now the script can't even finish the loading of the first file 
> of the dataset.
>
> My db environment is configured as follow
>
> ```
>         # init bsddb3
>         self._env = DBEnv()
>         self._env.set_cache_max(*max_cache_size)
>         self._env.set_cachesize(*cache_size)
>         flags = (
>             DB_CREATE
>             # | DB_INIT_LOG
>             | DB_INIT_TXN
>             | DB_INIT_MPOOL
>         )
>         self._env.set_flags(DB_LOG_AUTO_REMOVE, True)
>         self._env.open(
>             str(self._path),
>             flags,
>             0
>         )
> ```
> https://git.framasoft.org/python-graphiti-love-story/AjguGraphDB/blob/f8bf004ee132ac21fcbbb1c925889a16f1d5388d/ajgu/storage.py#L62 
>
>
> Every single store is created with the following function
>
> ```
>         # create vertices and edges k/v stores
>         def new_store(name, method):
>             txn = self._txn()
>             flags = DB_CREATE
>             elements = DB(self._env)
>             elements.open(
>                 name,
>                 None,
>                 method,
>                 flags,
>                 0,
>                 txn=txn._txn
>             )
>             txn.commit()
>             return elements
> ```
>
>
>
> [1] https://git.framasoft.org/python-graphiti-love-story/AjguGraphDB
>
>
> Regards,
>



More information about the pybsddb mailing list