Реферат: Блокировки в MS SQL Server 2000

in second session: 0

in primary session: 10

Причина в том, что для каждой транзакции хранится своя копия данных (snap-shot), которая синхронизируется с основными данными только в момент фиксирования транзакции.

ПРИМЕЧАНИЕ

Oracle хранит эти копии данных в специальном хранилище, который называется rollback segment.

Версионная модель характеризуется тем, что в ней отсутствует нулевой уровень изоляции транзакций (READ UNCOMMITTED), и вместо него вводится новый уровень, который в приведенном далее коде я назвал SNAP_SHOT. Он отличается от стандартного тем, что позволяет читать действительные зафиксированные данные, даже при наличии незавершенных транзакций обновления.

Вот конечный вариант классов CProxy и CObject, который реализует обе модели и, вдобавок к этому, поддерживает два «хинта»: UPDLOCK и XLOCK. Они предназначены для изменения уровня изоляции непосредственно при работе со значением переменной, а их смысл я поясню в следующих разделах.

#define MSSQL

// #define ORACLE

class CObject;

class CProxy

{

friend class CObject;

public:

__declspec(property(get=get_Value,put=put_Value)) int value;

int get_Value(int level = -1) const;

void put_Value(int i);

void Commit();

void Rollback();

private:

int _level;

int _value;

bool fUpd;

CProxy(CObject* par,int level)

{

fUpd = false;

parent = par;

_level = level;

}

К-во Просмотров: 987
Бесплатно скачать Реферат: Блокировки в MS SQL Server 2000