Найти - Пользователи
Полная версия: ZODB как бороться с распуханием при добавлении в btree?
Начало » Базы данных » ZODB как бороться с распуханием при добавлении в btree?
1
doza_and
проблема:
выполняю много добавлений элементов в OOBtree примерно так
btree=root["Mytree"]
for ...
btree[datetime_now]=rec
transaction.commit()
при этом файл базы очень сильно пухнет (становится в сотни раз больше количества добавленных данных).
Борюсь тем что делаю периодически db.pack() и делаю commit не после каждого добавления.
Это конечно полумеры. commits по хорошему должны быть после каждого добавления.
Что делается не так?
bw
Никак. Насколько я понимаю, при каждом commit'е у тебя получается новая (обновлённая конечно) копия дерева в базе.
Возможно zope.bforest поможет, не пробовал.

..bw
doza_and
Случайно наткнулся на старую ветку:
Проблема была в том, что rec не был производным от Persistent. Причем размер данных был десятки килобайт. При commit копировались и данные и дерево. Этого не происходит если объект уже в базе. Тогда копируются только указатели на объекты и распухание намного меньше.

Вот - может кому пригодятся знания.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB