ReservationCollection ReservationCollection ReservationCollection ReservationCollection Class

Определение

Управляет коллекцией резервирований пространства, созданной в последовательности записей.Manages the collection of space reservations made in a record sequence.

public ref class ReservationCollection abstract : System::Collections::Generic::ICollection<long>, System::Collections::Generic::IEnumerable<long>
public abstract class ReservationCollection : System.Collections.Generic.ICollection<long>, System.Collections.Generic.IEnumerable<long>
type ReservationCollection = class
    interface ICollection<int64>
    interface seq<int64>
    interface IEnumerable
Public MustInherit Class ReservationCollection
Implements ICollection(Of Long), IEnumerable(Of Long)
Наследование
ReservationCollectionReservationCollectionReservationCollectionReservationCollection
Реализации

Примеры

Резервирование можно выполнить двумя способами, которые демонстрируют следующие примеры.Reservations can be performed in two ways as shown in the following examples. Для надежной обработки можно пользоваться способами из образцов.You can adopt the practices in the samples for robust processing. Обратите внимание, что эта задача может быть выполнена только при использовании класса LogRecordSequence, основанного на CLFS.Notice that this task can only be performed when using the CLFS-based LogRecordSequence class.

//Using the ReserveAndAppend Method  
ReservationCollection reservations = recordSequence.CreateReservationCollection();  
long[] lengthOfUndoRecords = new long[] { 1000 };  
recordSequence.ReserveAndAppend(recordData,  
                                                     userSqn,  
                                                     previousSqn,  
                                                     RecordSequenceAppendOptions.None,  
                                                     reservations,  
                                                     lengthOfUndoRecords);  
recordSequence.Append(undoRecordData,    // If necessary …  
                                    userSqn,  
                                    previousSqn,  
                                    RecordSequenceAppendOptions.ForceFlush,  
                                    reservations);  

// Using the Manual Approach  
ReservationCollection reservations = recordSequence.CreateReservationCollection();  
reservations.Add(lengthOfUndoRecord);  
try  
{  
   recordSequence.Append(recordData, userSqn, previousSqn, RecordAppendOptions.None);  
}  
catch (Exception)  
{  
   reservations.Remove(lengthOfUndoRecord);  
   throw;  
}  

recordSequence.Append(undoRecordData, userSqn, previousSqn, RecordAppendOptions.ForceFlush, reservations);  

Комментарии

Этот класс представляет набор областей резервирования, созданных в последовательности записей.This class represents a set of reservation areas that are made in a record sequence. Новые резервирования выделяются при добавлении элементов в коллекцию.Adding items to the collection allocates new reservations. При удалении элементов из коллекции данные резервирования освобождаются.Removing items from the collection frees those reservations.

Приложение резервирует пространство в журнале, когда имеются данные для записи в будущем, но их нельзя записать немедленно.An application reserves space in the log when it has data that is to be written to the log in the future, but cannot write it immediately. Резервирования гарантируют, что данные могут быть записаны в журнал, когда они будут доступны для записи.Reservations provide a guarantee that the data can be written to the log when the data is available to be written. При использовании журналов приложения часто резервируют одну или несколько записей журнала в области маршалинга.When using logs, applications often reserve one or more log records in a marshaling area. Перед добавлением записи необходимо резервировать.You must reserve records prior to appending them.

Резервирования можно использовать, чтобы гарантировать завершение операции перед записью данных; в противном случае выполняется откат изменений.Reservations can be used to guarantee that an operation can be completed before the data is committed; otherwise, the changes are rolled back. Его также можно использовать, чтобы записать "отмененное действие" в журнале.It can also be used to record an "undo action" in the log. Во время операции отката диспетчер ресурсов транзакций должен иметь возможность восстановить свое состояние, если его работа была прервана.During a rollback operation, a transactional resource manager (RM) must be able to recover its state if the RM is interrupted during the rollback operation. Диспетчер ресурсов может резервировать пространство в журнале до его использования с помощью области резервирования.By using a reservation area, an RM can reserve space in a log before it is used.

Метод ReserveAndAppend может резервировать пространство или добавлять данные, либо выполнять оба действия, в зависимости от параметров, указанных при выполнении вызова.The ReserveAndAppend method can either reserve space or append data, or both, depending on the parameters that are specified when making the call. В ходе выполнения транзакции приложение может добавлять сведения отмены действия и резервировать пространство для записей компенсации.As work progresses in a transaction, an application can append the undo information and reserve space for compensation records. Во время операции отката созданные записи компенсации указывают, что было отменено на диске.During a rollback operation, compensation records that are created indicate what has been undone on the disk. Записи добавляются с использованием ранее зарезервированного пространства.The records are appended using space that has been previously reserved. Это гарантирует, что во время операции отката у диспетчера ресурсов не закончится пространство журнала, что является неустранимой ошибкой.This guarantees that an RM does not run out of log space, which is a fatal condition, while performing a rollback operation. Если журнал заполнится во время транзакции, приложение может выполнить безопасный откат без повреждения устойчивых данных.If a log fills up during a transaction, an application can safely roll back a transaction without corrupting durable data.

CLFS — это ARIES-совместимая система, предназначенная для упреждающего ведения журнала.CLFS is an ARIES-compliant logging system, meant for write-ahead logging. В упреждающем ведении журнала приложение записывает отмененное действие перед выполнением операции, резервируя пространство для внесения в журнал записи компенсации, которая может использоваться во время отката.In write-ahead logging, an application writes an undo record before it performs the operation, reserving the amount of space it takes in the log to write a compensating record, which may be used during rollback. В дальнейшем зарезервированное пространство используется при внесении записи компенсации.Later, the reserved space is used when the compensation record is actually written.

Приложения могут резервировать или получать доступ к пространству журнала (данные операции являются взаимоисключающими).Applications can either reserve or access long space at any given time (they are mutually exclusive operations). После внесения записи фиксации в журнал приложение может освободить резервирования для записей компенсации.After a commit record is written to the log, an application can free up the reservations for the compensation records. Это действие можно выполнить с помощью вызова метода FreeReservation или ReserveAndAppend.This action can be done by calling either the FreeReservation or ReserveAndAppend method. Вызов метода ReserveAndAppend гарантирует, что операция является атомарной, а вызов метода FreeReservation такой гарантии не предоставляет.Calling the ReserveAndAppend method guarantees that the operation is atomic, while calling the FreeReservation method does not.

При освобождении записей необходимо освобождать те же записи, которые совместно резервировались в предыдущем вызове метода ReserveAndAppend.When you free records, you must free the same records that you reserved together in a previous call to the ReserveAndAppend method.

Примечание

Реализация IRecordSequence должна использовать методы MakeReservation и FreeReservation, чтобы выполнить выделение и освобождение резервирований.Your implementation of IRecordSequence must implement the MakeReservation and FreeReservation methods to perform the actual reservation allocation and deallocation. Кроме того, реализация должна вызывать метод ReservationFreed при внесении записи в зарезервированное пространство.In addition, your implementation must also call ReservationFreed when a record is written into a reserved space.

Конструкторы

ReservationCollection() ReservationCollection() ReservationCollection() ReservationCollection()

Инициализирует новый экземпляр класса ReservationCollection.Initializes a new instance of the ReservationCollection class.

Свойства

Count Count Count Count

Возвращает количество резервирований в коллекции.Gets the number of reservations in the collection.

IsReadOnly IsReadOnly IsReadOnly IsReadOnly

Возвращает значение, указывающее на то, доступна ли коллекция только для чтения.Gets a value that indicates whether the collection is read-only.

Методы

Add(Int64) Add(Int64) Add(Int64) Add(Int64)

Выделяет резервирование и добавляет его в коллекцию.Allocates a reservation and adds it to the collection. Наследовать этот метод нельзя.This method cannot be inherited.

Clear() Clear() Clear() Clear()

Освобождает все резервирования в коллекции.Releases all of the reservations in the collection. Наследовать этот метод нельзя.This method cannot be inherited.

Contains(Int64) Contains(Int64) Contains(Int64) Contains(Int64)

Определяет, создано ли резервирование указанного размера.Determines whether a reservation of the specified size has been made. Наследовать этот метод нельзя.This method cannot be inherited.

CopyTo(Int64[], Int32) CopyTo(Int64[], Int32) CopyTo(Int64[], Int32) CopyTo(Int64[], Int32)

Копирует коллекцию в одномерный массив, начиная с указанного индекса массива назначения.Copies the entire collection to a one-dimensional array, starting at the specified index of the target array. Наследовать этот метод нельзя.This method cannot be inherited.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Определяет, равен ли заданный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Inherited from Object)
Finalize() Finalize() Finalize() Finalize()

Позволяет объекту ReservationCollection освободить ресурсы, прежде чем он будет уничтожен сборщиком мусора.Allows the ReservationCollection to free resources before it is destroyed by the garbage collector.

FreeReservation(Int64) FreeReservation(Int64) FreeReservation(Int64) FreeReservation(Int64)

При переопределении в производном классе освобождает резервирование указанного размера.When overridden in a derived class, releases a reservation of the specified size.

GetBestMatchingReservation(Int64) GetBestMatchingReservation(Int64) GetBestMatchingReservation(Int64) GetBestMatchingReservation(Int64)

При переопределении в производном классе возвращает наиболее подходящее резервирование для заданного размера.When overridden in a derived class, gets the best matching reservation for a given size.

GetEnumerator() GetEnumerator() GetEnumerator() GetEnumerator()

Возвращает перечислитель, выполняющий итерацию по коллекции ReservationCollection.Returns an enumerator that can iterate through the ReservationCollection. Наследовать этот метод нельзя.This method cannot be inherited.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Служит хэш-функцией по умолчанию.Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Inherited from Object)
MakeReservation(Int64) MakeReservation(Int64) MakeReservation(Int64) MakeReservation(Int64)

При переопределении в производном классе выделяет резервирование указанного размера.When overridden in a derived class, allocates a reservation of the specified size.

MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Inherited from Object)
Remove(Int64) Remove(Int64) Remove(Int64) Remove(Int64)

Освобождает резервирование указанного размера, если данное резервирование выполнялось.Releases a reservation of the specified size, if one has been made. Наследовать этот метод нельзя.This method cannot be inherited.

ReservationFreed(Int64) ReservationFreed(Int64) ReservationFreed(Int64) ReservationFreed(Int64)

При переопределении в производном классе указывает, что резервирование было освобождено.When overridden in a derived class, indicates that a reservation has been released.

ReservationMade(Int64) ReservationMade(Int64) ReservationMade(Int64) ReservationMade(Int64)

При переопределении в производном классе указывает, что резервирование было создано.When overridden in a derived class, indicates that a reservation has been made.

ToString() ToString() ToString() ToString()

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

(Inherited from Object)

Явные реализации интерфейса

IEnumerable.GetEnumerator() IEnumerable.GetEnumerator() IEnumerable.GetEnumerator() IEnumerable.GetEnumerator()

Возвращает перечислитель, выполняющий итерацию по коллекции ReservationCollection.Returns an enumerator that can iterate through the ReservationCollection. Наследовать этот метод нельзя.This method cannot be inherited.

Методы расширения

CopyToDataTable<T>(IEnumerable<T>) CopyToDataTable<T>(IEnumerable<T>) CopyToDataTable<T>(IEnumerable<T>) CopyToDataTable<T>(IEnumerable<T>)

Возвращает объект DataTable, содержащий копии объектов DataRow при заданном входном объекте IEnumerable<T> и универсальном параметре T, равном DataRow.Returns a DataTable that contains copies of the DataRow objects, given an input IEnumerable<T> object where the generic parameter T is DataRow.

CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption) CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption) CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption) CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption)

Копирует объекты DataRow в указанный объект DataTable с заданным входным объектом IEnumerable<T>, где универсальный параметр T имеет значение DataRow.Copies DataRow objects to the specified DataTable, given an input IEnumerable<T> object where the generic parameter T is DataRow.

CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption, FillErrorEventHandler) CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption, FillErrorEventHandler) CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption, FillErrorEventHandler) CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption, FillErrorEventHandler)

Копирует объекты DataRow в указанный объект DataTable с заданным входным объектом IEnumerable<T>, где универсальный параметр T имеет значение DataRow.Copies DataRow objects to the specified DataTable, given an input IEnumerable<T> object where the generic parameter T is DataRow.

Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable)

Приводит элементы объекта IEnumerable к заданному типу.Casts the elements of an IEnumerable to the specified type.

OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable)

Выполняет фильтрацию элементов объекта IEnumerable по заданному типу.Filters the elements of an IEnumerable based on a specified type.

AsParallel(IEnumerable) AsParallel(IEnumerable) AsParallel(IEnumerable) AsParallel(IEnumerable)

Позволяет осуществлять параллельный запрос.Enables parallelization of a query.

AsQueryable(IEnumerable) AsQueryable(IEnumerable) AsQueryable(IEnumerable) AsQueryable(IEnumerable)

Преобразует IEnumerable для IQueryable.Converts an IEnumerable to an IQueryable.

Ancestors<T>(IEnumerable<T>) Ancestors<T>(IEnumerable<T>) Ancestors<T>(IEnumerable<T>) Ancestors<T>(IEnumerable<T>)

Возвращает коллекцию элементов, содержащую предков каждого узла в исходной коллекции.Returns a collection of elements that contains the ancestors of every node in the source collection.

Ancestors<T>(IEnumerable<T>, XName) Ancestors<T>(IEnumerable<T>, XName) Ancestors<T>(IEnumerable<T>, XName) Ancestors<T>(IEnumerable<T>, XName)

Возвращает отфильтрованную коллекцию элементов, содержащую предков каждого узла в исходной коллекции.Returns a filtered collection of elements that contains the ancestors of every node in the source collection. В коллекцию включаются только элементы, соответствующие XName.Only elements that have a matching XName are included in the collection.

DescendantNodes<T>(IEnumerable<T>) DescendantNodes<T>(IEnumerable<T>) DescendantNodes<T>(IEnumerable<T>) DescendantNodes<T>(IEnumerable<T>)

Возвращает коллекцию подчиненных узлов каждого документа и элемента в исходной коллекции.Returns a collection of the descendant nodes of every document and element in the source collection.

Descendants<T>(IEnumerable<T>) Descendants<T>(IEnumerable<T>) Descendants<T>(IEnumerable<T>) Descendants<T>(IEnumerable<T>)

Возвращает коллекцию элементов, содержащую подчиненные элементы каждого элемента и документа в исходной коллекции.Returns a collection of elements that contains the descendant elements of every element and document in the source collection.

Descendants<T>(IEnumerable<T>, XName) Descendants<T>(IEnumerable<T>, XName) Descendants<T>(IEnumerable<T>, XName) Descendants<T>(IEnumerable<T>, XName)

Возвращает отфильтрованную коллекцию элементов, содержащую подчиненные элементы каждого элемента и документа в исходной коллекции.Returns a filtered collection of elements that contains the descendant elements of every element and document in the source collection. В коллекцию включаются только элементы, соответствующие XName.Only elements that have a matching XName are included in the collection.

Elements<T>(IEnumerable<T>) Elements<T>(IEnumerable<T>) Elements<T>(IEnumerable<T>) Elements<T>(IEnumerable<T>)

Возвращает коллекцию дочерних элементов каждого элемента и документа в исходной коллекции.Returns a collection of the child elements of every element and document in the source collection.

Elements<T>(IEnumerable<T>, XName) Elements<T>(IEnumerable<T>, XName) Elements<T>(IEnumerable<T>, XName) Elements<T>(IEnumerable<T>, XName)

Возвращает отфильтрованную коллекцию дочерних элементов каждого элемента и документа в исходной коллекции.Returns a filtered collection of the child elements of every element and document in the source collection. В коллекцию включаются только элементы, соответствующие XName.Only elements that have a matching XName are included in the collection.

InDocumentOrder<T>(IEnumerable<T>) InDocumentOrder<T>(IEnumerable<T>) InDocumentOrder<T>(IEnumerable<T>) InDocumentOrder<T>(IEnumerable<T>)

Возвращает коллекцию узлов, содержащую все узлы в исходной коллекции, отсортированные в порядке следования документов.Returns a collection of nodes that contains all nodes in the source collection, sorted in document order.

Nodes<T>(IEnumerable<T>) Nodes<T>(IEnumerable<T>) Nodes<T>(IEnumerable<T>) Nodes<T>(IEnumerable<T>)

Возвращает коллекцию дочерних узлов каждого документа и элемента в исходной коллекции.Returns a collection of the child nodes of every document and element in the source collection.

Remove<T>(IEnumerable<T>) Remove<T>(IEnumerable<T>) Remove<T>(IEnumerable<T>) Remove<T>(IEnumerable<T>)

Удаление каждого узла в исходной коллекции из родительского узла.Removes every node in the source collection from its parent node.

Применяется к