[devel] вопрос про BDB и блокировки.

Alexey Tourbin =?iso-8859-1?q?at_=CE=C1_altlinux=2Eru?=
Пт Апр 27 15:02:31 MSD 2007


On Fri, Apr 27, 2007 at 03:38:52PM +0500, Sergey Y. Afonin wrote:
> On Friday 27 April 2007, Alexey Tourbin wrote:
> 
> > DB_INIT_CDB дает "прозрачный" локинг для каждой операции. 
> > То есто операция начинается берётся блокировка.  Операция заканчивает
> > блокировка снимается.
> > 
> > DB_INIT_LOCK по идее специально указывать не надо, если указано
> > DB_INIT_CDB|DB_INIT_MPOOL.
> > 
> > Там есть ещё другой режим вместо локинга, он log может писать.
> 
> Но этот другой режим - тоже режим блокировок ? Хочется понять, почему
> сейчас работает, когда нет явного указания на использование блокировок. 
> Обязательно уже должно было несколько процессов к одной базе сунуться 
> и не раз. Ан нет, пашет... 

Скорее всего, не работает.  Просто если чтение с записью
не пересекается, то это, может быть, прокатывает.  Ну или там один в
базу записал а другой старую копию базы видит, и это работает, пока
постраничные данные не перезаписаны.  

Режима два разных: либо блокировать всю базу (ну или там постранично),
либо писать write-ahead log (это транзакции, там сложнее уже).  Либо
блокировать своими средствами.

Делайте как у меня, лучше пока ничего не придумано. :)  Похожим образом
сделано в /usr/sbin/amavisd, только там BerkeleyDB::Env->new ничем не
блокируется.  По-моему при одновременных попытках инициализировать evn
будет капут.

При использовании логинкга или DB_INIT_CDB очень важно сигналы правильно
заблокировать.  /usr/share/doc/db-4.4.20/ref/program/appsignals.html
К сожалению в перле это делается проще чем в C.
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20070427/e195b193/attachment-0001.bin>


Подробная информация о списке рассылки Devel