Leistung-Erweiterungen für SQLServer unter Windows NT

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 160606 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Dieser Artikel wurde archiviert. Er wird im vorliegenden Zustand bereitgestellt und nicht mehr aktualisiert.
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

Eine neue Schnittstelle wurde als eine Verbesserung der Leistung für SQL Server hinzugefügt, wenn unter Windows NT ausgeführt. Diese Verbesserung beinhaltet Scatter/Gather-e/a-Funktionalität.

Weitere Informationen

Was ist XY-sammeln?

Scatter-Gather ist eine standard Technik, die in Situationen e/a-hohe Leistung verwendet wird. Es verweist normalerweise auf Direct Memory Access (DMA) überträgt. Ein bestimmtes Blocks Daten möglicherweise als mehrere diskrete Puffer im Arbeitsspeicher vorhanden. Ohne Scatter/Gather beim Einrichten einer Übertragung Speicher führen das Betriebssystem häufig eine Umbuchung für jeden Puffer oder Block verschieben auf einen einzigen größere Puffer vor dem Initiieren der Übertragung. Diese beiden sind ineffizient. Es ist besser Wenn Betriebssystem/Treiber/Hardware die Daten aus den diskreten Speicherorten im Speicher sammelt und diese als einzelnen Operation "in-Place überträgt". Ebenso bei der Eingabe von der Festplatte, wenn der Datenblock direkt zu verstreut sind die erforderlichen Standorte im Speicher ohne intermediate Block verschiebt und usw., es ist schneller.

Interface Specification

ReadFileScatter

Die Funktion ReadFileScatter liest Daten aus einer Datei, beginnend an der Position, die von der Dateioffset in die OVERLAPPED-Struktur und verteilt die Daten in mehrere Benutzer Puffer.
BOOL ReadFileScatter(
<WWBLOCKQUOTE>
    HANDLE hFile,                         // handle of file to read
    FILE_SEGMENT_ELEMENT aSegmentArray[], // array of buffer segments that
receives data
    DWORD nNumberOfBytesToRead,           // number of bytes to read
    LPDWORD lpReserved,                   // reserved must be NULL
    LPOVERLAPPED lpOverlapped             // address of structure for data
   );
				

Parameter

hFile


Identifiziert die Datei gelesen werden. Das Dateihandle muss mit GENERIC_READ Zugriff auf die Datei erstellt wurden.

Die Datei muss mit FILE_FLAG_OVERLAPPED angegeben asynchrone e/a- und FILE_FLAG_NO_BUFFERING nicht zwischengespeicherte e/a-anzugeben, geöffnet werden.

aSegmentArray

Zeigt ein Array von Zeigern auf Segmente. Ein Segment ist ein Speicherpuffer, in dem Teil der übertragenen Daten platziert werden soll. Segmente sind System Seite angepasst und auf einer Seitenbegrenzung Größe ausgerichtet werden muss.

Memory-Segment mit VirtualAllocVlm zugewiesen werden kann oder normalen 32-Bit-Adresse Speicher jedoch nicht beides sein.

NNumberOfBytesToRead

Gibt die Anzahl der Bytes, die aus der Datei gelesen werden sollen.

lpReserved

Reservierte muss NULL sein.

lpOverlapped

Verweist auf eine OVERLAPPED-Struktur. Diese Struktur ist erforderlich und muss auf eine gültige OVERLAPPED-Struktur zeigen.

Der Lesevorgang beginnt am Offset in die OVERLAPPED-Struktur angegeben, und ReadFileScatter möglicherweise zurück, bevor der Lesevorgang abgeschlossen ist. In diesem Fall ReadFileScatter gibt FALSE zurück, und die GetLastError-Funktion ERROR_IO_PENDING zurückgibt. Dies ermöglicht den aufrufenden Prozess fortzusetzen, während der Lesevorgang beendet ist. Die Anwendung kann entweder GetOverlappedResult/HasOverlappedIoCompleted verwenden, um e/a-Abschluss Benachrichtigung oder GetQueuedCompletionStatus e/a-Abschluss abholen abholen.

Rückgabewerte

Wenn die Funktion erfolgreich ist, ist der Rückgabewert ungleich 0 (null). Wenn die Funktion fehlschlägt, ist der Rückgabewert 0 (null). Um erweiterte Fehlerinformationen abzurufen, rufen Sie GetLastError. Wenn ReadFileScatter versucht, hinter dem Ende der Datei zu lesen, die Funktion gibt 0 (null) zurück und GetLastError ERROR_HANDLE_EOF zurück

Beschreibung

Jeder FILE_SEGMENT_ELEMENT ist 64 Bit lang. Alle 64 Bits werden verwendet, um die Pufferzeiger berechnen; Anwendungen müssen daher explizit NULL die oberen 32 Bits des Elements auf Systemen, die keine 64-Bit-Zeiger Unterstützung bieten.

WriteFileGather

WriteFileGather Funktion sammelt Daten von mehreren Puffern und schreibt die Daten in eine Datei. Die Funktion ist für den asynchronen Vorgang vorgesehen. Die Funktion startet Schreiben von Daten in die Datei an der Position durch die OVERLAPPED-Struktur angegeben.
BOOL WriteFileGather(
    HANDLE hFile,                // handle to file to write to
    FILE_SEGMENT_ELEMENT aSegmentArray [], // array of buffer segments
containing the data
    DWORD nNumberOfBytesToWrite,    // number of bytes to write
    LPDWORD lpReserved,             // Reserved must be NULL
    LPOVERLAPPED lpOverlapped       // pointer to structure needed for
overlapped I/O
   );
				

Parameter

hFile


Identifiziert die Datei in geschrieben werden. Das Dateihandle muss mit GENERIC_WRITE Zugriff auf die Datei erstellt wurden. Die Datei muss mit FILE_FLAG_OVERLAPPED angegeben asynchrone e/a- und FILE_FLAG_NO_BUFFERING nicht zwischengespeicherte e/a-anzugeben, geöffnet werden.

aSegmentArray

Zeigt ein Array von Zeigern auf Segmente. Ein Segment ist ein Speicherpuffer, in dem Teil der übertragenen Daten platziert werden soll. Segmente sind System Seite angepasst und auf einer Seitenbegrenzung Größe ausgerichtet werden muss. Memory-Segment mit VirtualAllocVlm zugewiesen werden kann oder normalen 32-Bit-Speicher, aber nicht beides sein.

NNumberOfBytesToWrite

Gibt die Anzahl der Bytes, die Datei geschrieben.

Im Gegensatz zu MS-DOS-Betriebssystems interpretiert Windows NT den Wert 0 wie die Angabe null Schreibvorgang. Ein null-Schreibvorgang führt schreibt keine Bytes aber den Zeitstempel ändern.

lpReserved

Reservierte muss NULL sein.

LpOverlapped

Verweist auf eine OVERLAPPED-Struktur. Diese Struktur ist erforderlich und muss auf eine gültige OVERLAPPED-Struktur zeigen. Der Schreibvorgang beginnt am Offset in die OVERLAPPED-Struktur angegeben, und WriteFileGather möglicherweise zurück, bevor der Schreibvorgang abgeschlossen ist. In diesem Fall WriteFileGather gibt FALSE zurück, und die GetLastError-Funktion ERROR_IO_PENDING zurückgibt. Dadurch kann der aufrufenden Prozess weiterhin verarbeiten, während der Schreibvorgang ausgeführt werden wird. Die Anwendung kann entweder GetOverlappedResult/HasOverlappedIoCompleted verwenden, um abholen e/a-Abschluss Benachrichtigung oder GetQueuedCompletionStatus zum Abholen von e/a-Abschluss.

Rückgabewerte

Wenn die Funktion erfolgreich ist, ist der Rückgabewert ungleich 0 (null). Wenn die Funktion fehlschlägt, ist der Rückgabewert 0 (null). Um erweiterte Fehlerinformationen abzurufen, rufen Sie GetLastError.

Beschreibung

Jeder FILE_SEGMENT_ELEMENT ist 64 Bit lang. Alle 64 Bits werden verwendet, um die Pufferzeiger berechnen; Anwendungen müssen daher explizit NULL die oberen 32 Bits des Elements auf Systemen, die keine 64-Bit-Zeiger Unterstützung bieten.

Wenn Teil der Datei von einem anderen Prozess gesperrt ist und der Schreibvorgang im gesperrten Bereich überschneidet, kann diese Funktion.

Anders als das Betriebssystem MS-DOS Windows NT interpretiert 0 (null) Bytes, wie die Angabe null Schreibvorgang geschrieben und WriteFileGather nicht abschneiden oder Erweitern Sie die Datei. Abschneiden oder erweitern eine Datei, verwenden Sie die SetEndOfFile-Funktion.

Status

Windows NT 4.0 Service Pack 2 wurde eine neue Schnittstelle, die als eine Leistung Enhancer für SQL Server, dient Wenn unter Windows NT ausgeführt. Diese Erweiterung umfasst Scatter-Gather und Eingabe/Ausgabe-Funktionalität.

Weitere Informationen zum Beziehen des neuesten Service Packs für Windows NT 4.0 finden folgendem Artikel der Microsoft Knowledge Base:
152734So erhalten Sie das neueste Windows NT 4.0 Service Pack

Eigenschaften

Artikel-ID: 160606 - Geändert am: Montag, 3. Februar 2014 - Version: 1.1
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Windows NT Workstation 4.0 Developer Edition
  • Microsoft Windows NT Server 4.0 Standard Edition
Keywords: 
kbnosurvey kbarchive kbmt kbnetwork KB160606 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 160606
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com