ReservationCollection ReservationCollection ReservationCollection ReservationCollection Class

Definition

Verwaltet die Auflistung von Speicherplatzreservierungen, die in einer Datensatzsequenz vorgenommen wurden.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)
Vererbung
ReservationCollectionReservationCollectionReservationCollectionReservationCollection
Implementiert

Beispiele

Reservierungen können auf zwei Arten vorgenommen werden, wie in den nachstehenden Beispielen beschrieben.Reservations can be performed in two ways as shown in the following examples. Sie können die Vorgehensweise aus den Beispielen für stabile Verarbeitung übernehmen.You can adopt the practices in the samples for robust processing. Beachten Sie, dass diese Aufgabe nur bei Verwendung der CLFS-basierten LogRecordSequence-Klasse ausgeführt werden kann.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);  

Hinweise

Diese Klasse stellt einen Satz Reservierungsbereiche dar, die in einer Datensatzsequenz erstellt werden.This class represents a set of reservation areas that are made in a record sequence. Durch das Hinzufügen von Elementen zur Auflistung werden neue Reservierungen zugeordnet.Adding items to the collection allocates new reservations. Werden Elemente aus der Auflistung entfernt, werden diese Reservierungen freigegeben.Removing items from the collection frees those reservations.

Eine Anwendung reserviert Speicherplatz im Protokoll, wenn sie über Daten verfügt, die in Zukunft in das Protokoll geschrieben werden sollen, aber nicht unmittelbar geschrieben werden können.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. Reservierungen gewährleisten, dass die Daten in das Protokoll geschrieben werden können, wenn sie für den Schreibvorgang verfügbar sind.Reservations provide a guarantee that the data can be written to the log when the data is available to be written. Bei der Verwendung von Protokollen reservieren Anwendungen häufig einen oder mehrere Protokolldaten Sätze in einem Marshallingbereich.When using logs, applications often reserve one or more log records in a marshaling area. Sie müssen Datensätze vor dem Anfügen reservieren.You must reserve records prior to appending them.

Mit Reservierungen kann gewährleistet werden, dass ein Vorgang abgeschlossen werden kann, bevor die Daten übertragen werden. Andernfalls werden die Änderungen zurückgesetzt.Reservations can be used to guarantee that an operation can be completed before the data is committed; otherwise, the changes are rolled back. Außerdem können Reservierungen verwendet werden, um eine "Rückgängigaktion" im Protokoll aufzuzeichnen.It can also be used to record an "undo action" in the log. Während eines Rollbackvorgangs muss ein Ressourcen-Manager (RM) für Transaktionen in der Lage sein, seinen Status wiederherzustellen, wenn der RM während des Rollbackvorgangs unterbrochen wird.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. Durch die Verwendung eines Reservierungsbereichs kann ein RM Speicherplatz in einem Protokoll reservieren, bevor es verwendet wird.By using a reservation area, an RM can reserve space in a log before it is used.

Die ReserveAndAppend-Methode kann je nach den Parametern, die beim Aufruf angegeben werden, Speicherplatz reservieren und/oder Daten anfügen.The ReserveAndAppend method can either reserve space or append data, or both, depending on the parameters that are specified when making the call. Im Lauf der Transaktion kann eine Anwendung die Rückgängiginformationen anfügen und Speicherplatz für Kompensierungsdatensätze reservieren.As work progresses in a transaction, an application can append the undo information and reserve space for compensation records. Während eines Rollbackvorgangs geben Kompensierungsdatensätze, die erstellt werden, an, welche Aktionen auf dem Datenträger rückgängig gemacht wurden.During a rollback operation, compensation records that are created indicate what has been undone on the disk. Die Datensätze werden mit zuvor reserviertem Speicherplatz angefügt.The records are appended using space that has been previously reserved. Dadurch ist gewährleistet, dass einem RM während eines Rollbackvorgangs nicht genügend Protokollspeicherplatz zur Verfügung steht, was ein schwerwiegender Fehler ist.This guarantees that an RM does not run out of log space, which is a fatal condition, while performing a rollback operation. Wenn ein Protokoll während einer Transaktion aufgefüllt wird, kann eine Anwendung eine Transaktion sicher zurücksetzen, ohne dauerhafte Daten zu beschädigen.If a log fills up during a transaction, an application can safely roll back a transaction without corrupting durable data.

CLFS ist ein ARIES-kompatibles Protokollierungssystem, das für das Write-Ahead-Logging eingesetzt wird.CLFS is an ARIES-compliant logging system, meant for write-ahead logging. Beim Write-Ahead-Logging schreibt eine Anwendung einen Rückgängigdatensatz, bevor sie den Vorgang ausführt und reserviert den Speicherplatz, der im Protokoll zum Schreiben eines Kompensierungsdatensatzes erforderlich ist, der unter Umständen während des Rollbackvorgangs verwendet wird.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. Später wird der reservierte Speicherplatz verwendet, wenn der Kompensierungsdatensatz tatsächlich geschrieben wird.Later, the reserved space is used when the compensation record is actually written.

Anwendungen können Protokollspeicherplatz zu einem beliebigen Zeitpunkt reservieren oder darauf zugreifen (diese Vorgänge schließen sich gegenseitig aus).Applications can either reserve or access long space at any given time (they are mutually exclusive operations). Wenn ein Commit-Datensatz in das Protokoll geschrieben wurde, kann eine Anwendung Reservierungen für die Kompensierungsdatensätze freigeben.After a commit record is written to the log, an application can free up the reservations for the compensation records. Diese Aktion kann ausgeführt werden, indem die FreeReservation-Methode oder die ReserveAndAppend-Methode aufgerufen wird.This action can be done by calling either the FreeReservation or ReserveAndAppend method. Das Aufrufen der ReserveAndAppend-Methode gewährleistet, dass der Vorgang unteilbar ist, während ein Aufruf der FreeReservation-Methode dies nicht gewährleistet.Calling the ReserveAndAppend method guarantees that the operation is atomic, while calling the FreeReservation method does not.

Wenn Sie Datensätze freigeben, müssen Sie dieselben Datensätze freigeben, die Sie in einem vorherigen Aufruf der ReserveAndAppend-Methode zusammen reserviert haben.When you free records, you must free the same records that you reserved together in a previous call to the ReserveAndAppend method.

Hinweis

Ihre Implementierung von IRecordSequence muss die MakeReservation-Methode und die FreeReservation-Methode implementieren, um die eigentliche Reservierung und Freigabe vorzunehmen.Your implementation of IRecordSequence must implement the MakeReservation and FreeReservation methods to perform the actual reservation allocation and deallocation. Darüber hinaus muss die Implementierung auch ReservationFreed aufrufen, wenn ein Datensatz in reservierten Speicherplatz geschrieben wird.In addition, your implementation must also call ReservationFreed when a record is written into a reserved space.

Konstruktoren

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

Initialisiert eine neue Instanz der ReservationCollection-Klasse.Initializes a new instance of the ReservationCollection class.

Eigenschaften

Count Count Count Count

Ruft die Anzahl der Reservierungen in der Auflistung ab.Gets the number of reservations in the collection.

IsReadOnly IsReadOnly IsReadOnly IsReadOnly

Ruft einen Wert ab, der angibt, ob die Auflistung schreibgeschützt ist.Gets a value that indicates whether the collection is read-only.

Methoden

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

Ordnet eine Reservierung zu und fügt sie der Auflistung hinzu.Allocates a reservation and adds it to the collection. Diese Methode kann nicht vererbt werden.This method cannot be inherited.

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

Gibt alle Reservierungen in der Auflistung frei.Releases all of the reservations in the collection. Diese Methode kann nicht vererbt werden.This method cannot be inherited.

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

Ermittelt, ob eine Reservierung der angegebenen Größe vorgenommen wurde.Determines whether a reservation of the specified size has been made. Diese Methode kann nicht vererbt werden.This method cannot be inherited.

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

Kopiert die gesamte Auflistung in ein kompatibles Array, wobei am angegebenen Index im Zielarray begonnen wird.Copies the entire collection to a one-dimensional array, starting at the specified index of the target array. Diese Methode kann nicht vererbt werden.This method cannot be inherited.

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

Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist.Determines whether the specified object is equal to the current object.

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

Ermöglicht ReservationCollection das Freigeben von Ressourcen, bevor die Zerstörung durch den Garbage Collector stattfindet.Allows the ReservationCollection to free resources before it is destroyed by the garbage collector.

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

Gibt beim Überschreiben in einer abgeleiteten Klasse eine Reservierung der angegebenen Größe frei.When overridden in a derived class, releases a reservation of the specified size.

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

Ruft beim Überschreiben in einer abgeleiteten Klasse die am besten passende Reservierung für eine bestimmte Größe ab.When overridden in a derived class, gets the best matching reservation for a given size.

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

Gibt einen Enumerator zurück, der ReservationCollection durchlaufen kann.Returns an enumerator that can iterate through the ReservationCollection. Diese Methode kann nicht vererbt werden.This method cannot be inherited.

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

Fungiert als Standardhashfunktion.Serves as the default hash function.

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

Ruft den Type der aktuellen Instanz ab.Gets the Type of the current instance.

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

Ordnet beim Überschreiben in einer abgeleiteten Klasse eine Reservierung der angegebenen Größe zu.When overridden in a derived class, allocates a reservation of the specified size.

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

Erstellt eine flache Kopie des aktuellen Object.Creates a shallow copy of the current Object.

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

Gibt eine Reservierung der angegebenen Größe frei, wenn eine Reservierung vorgenommen wurde.Releases a reservation of the specified size, if one has been made. Diese Methode kann nicht vererbt werden.This method cannot be inherited.

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

Gibt beim Überschreiben in einer abgeleiteten Klasse an, dass eine Reservierung freigegeben wurde.When overridden in a derived class, indicates that a reservation has been released.

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

Gibt beim Überschreiben in einer abgeleiteten Klasse an, dass eine Reservierung vorgenommen wurde.When overridden in a derived class, indicates that a reservation has been made.

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

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.Returns a string that represents the current object.

(Inherited from Object)

Explizite Schnittstellenimplementierungen

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

Gibt einen Enumerator zurück, der ReservationCollection durchlaufen kann.Returns an enumerator that can iterate through the ReservationCollection. Diese Methode kann nicht vererbt werden.This method cannot be inherited.

Erweiterungsmethoden

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

Gibt eine DataTable zurück, die Kopien der DataRow-Objekte enthält, wenn ein IEnumerable<T>-Eingabeobjekt vorhanden ist, bei dem der generische Parameter T den Wert DataRow hat.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)

Kopiert DataRow-Objekte in die angegebene DataTable, bei einem IEnumerable<T>-Eingabeobjekt, bei dem der generische Parameter T den Wert DataRow aufweist.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)

Kopiert DataRow-Objekte in die angegebene DataTable, bei einem IEnumerable<T>-Eingabeobjekt, bei dem der generische Parameter T den Wert DataRow aufweist.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)

Wandelt die Elemente eines IEnumerable in den angegebenen Typ umCasts the elements of an IEnumerable to the specified type.

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

Filtert die Elemente eines IEnumerable anhand eines angegebenen TypsFilters the elements of an IEnumerable based on a specified type.

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

Ermöglicht die Parallelisierung einer Abfrage.Enables parallelization of a query.

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

Konvertiert einen IEnumerable in einen IQueryable.Converts an IEnumerable to an IQueryable.

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

Gibt eine Auflistung von Elementen zurück, die die übergeordneten Elemente der einzelnen Knoten in der Quellauflistung enthält.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)

Gibt eine gefilterte Auflistung von Elementen zurück, die die übergeordneten Elemente der einzelnen Knoten in der Quellauflistung enthält.Returns a filtered collection of elements that contains the ancestors of every node in the source collection. Nur Elemente, die über einen übereinstimmenden XName verfügen, sind in der Auflistung enthalten.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>)

Gibt eine Auflistung der Nachfolgerknoten jedes Dokuments und Elements in der Quellauflistung zurück.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>)

Gibt eine Auflistung von Elementen zurück, die die Nachfolgerelemente jedes Elements und Dokuments in der Quellauflistung enthält.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)

Gibt eine gefilterte Auflistung von Elementen zurück, die die Nachfolgerelemente jedes Elements und Dokuments in der Quellauflistung enthält.Returns a filtered collection of elements that contains the descendant elements of every element and document in the source collection. Nur Elemente, die über einen übereinstimmenden XName verfügen, sind in der Auflistung enthalten.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>)

Gibt eine Auflistung der untergeordneten Elemente jedes Elements und Dokuments in der Quellauflistung zurück.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)

Gibt eine gefilterte Auflistung der untergeordneten Elemente jedes Elements und Dokuments in der Quellauflistung zurück.Returns a filtered collection of the child elements of every element and document in the source collection. Nur Elemente, die über einen übereinstimmenden XName verfügen, sind in der Auflistung enthalten.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>)

Gibt eine in Dokumentreihenfolge sortierte Auflistung von Knoten zurück, die alle Knoten in der Quellauflistung enthält.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>)

Gibt eine Auflistung der untergeordneten Knoten jedes Dokuments und Elements in der Quellauflistung zurück.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>)

Entfernt jeden Knoten in der Quellauflistung aus seinem übergeordneten Knoten.Removes every node in the source collection from its parent node.

Gilt für: