Some bsddb changes

* allow to use bsddb3 as database via a config setting
  * set async write to disk to improve speed, eg import * 40


svn: r16446
This commit is contained in:
Benny Malengier
2011-01-23 21:25:51 +00:00
parent 551b70a8f3
commit b3beba53d8
18 changed files with 112 additions and 26 deletions

View File

@ -38,12 +38,16 @@ import time
import locale
import bisect
from functools import wraps
from gen.ggettext import gettext as _
from bsddb import dbshelve, db
import logging
from sys import maxint
from gen.ggettext import gettext as _
import config
if config.get('preferences.use-bsddb3'):
from bsddb3 import dbshelve, db
else:
from bsddb import dbshelve, db
#-------------------------------------------------------------------------
#
# Gramps modules
@ -413,6 +417,10 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
except:
pass
raise DbEnvironmentError(msg)
# Set not to flush to disk synchronous
self.env.set_flags(db.DB_TXN_NOSYNC, 1)
self.env.set_flags(db.DB_TXN_WRITE_NOSYNC, 1)
self.env.txn_checkpoint()
if callback:
@ -1636,8 +1644,8 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
self.undodb.clear()
self.env.txn_checkpoint()
if db.version() < (4, 7):
self.env.set_flags(db.DB_TXN_NOSYNC, 1) # async txn
#if db.version() < (4, 7):
# self.env.set_flags(db.DB_TXN_NOSYNC, 1) # async txn
if self.secondary_connected and not no_magic:
# Disconnect unneeded secondary indices
@ -1676,8 +1684,8 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
"""
if transaction.batch:
self.env.txn_checkpoint()
if db.version() < (4, 7):
self.env.set_flags(db.DB_TXN_NOSYNC, 0) # sync txn
#if db.version() < (4, 7):
# self.env.set_flags(db.DB_TXN_NOSYNC, 0) # sync txn
if not transaction.no_magic:
# create new secondary indices to replace the ones removed