Miglioramenti delle prestazioni per SQL Server in Windows NT

Traduzione articoli Traduzione articoli
Identificativo articolo: 160606 - Visualizza i prodotti a cui si riferisce l?articolo.
Questo articolo Ŕ stato archiviato. L?articolo, quindi, viene offerto ?cosý come Ŕ? e non verrÓ pi¨ aggiornato.
Espandi tutto | Chiudi tutto

In questa pagina

Sommario

Una nuova interfaccia Ŕ stata aggiunta come un miglioramento delle prestazioni per SQL Server durante l'esecuzione in Windows NT. Questo miglioramento prevede funzionalitÓ di I/O a dispersione XY o raccolta.

Informazioni

Che cos'Ŕ/XY raccolta?

A dispersione XY o raccolta Ŕ una tecnica standard che utilizzata in alcune situazioni di I/O a elevate prestazioni. In genere fa riferimento per i trasferimenti di accesso diretto alla memoria (DMA). Un blocco di dati specifico pu˛ esistere in memoria come buffer discreti diversi. Senza la raccolta o a dispersione XY, durante l'impostazione di un trasferimento di memoria su disco, il sistema operativo eseguirÓ spesso un trasferimento per ogni buffer, o blocco spostarli in un singolo buffer pi¨ grandi prima di avviare il trasferimento. Entrambi questi sono inefficiente. ╚ preferibile se del sistema operativo/driver/hardware raccoglie i dati dai percorsi distinti in memoria e trasferisce i "in luogo" come una singola operazione. Allo stesso modo, input dal disco, se il blocco di dati Ŕ organizzato direttamente per il necessarie posizioni di memoria senza blocco intermedio sposta e cosý via, Ŕ pi¨ veloce.

Specifica di interfaccia

ReadFileScatter

La funzione ReadFileScatter legge i dati da un file, a partire dalla posizione indicata dall'offset del file nella struttura OVERLAPPED e distribuisce i dati in pi¨ buffer utente.
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
   );
				

parametri

hFile


Identifica il file da leggere. L'handle di file necessario creato con GENERIC_READ accesso al file.

Il file deve essere aperto utilizzando FILE_FLAG_OVERLAPPED per specificare asincrono I/O e FILE_FLAG_NO_BUFFERING per specificare I/O non memorizzato nella cache.

aSegmentArray

Punta di una matrice di puntatori ai segmenti. Un segmento Ŕ un buffer di memoria in cui verranno collocata parte dei dati trasferiti. I segmenti sono dimensioni di pagina di sistema e deve essere allineato a un limite di dimensione di pagina.

Al segmento di memoria da allocare utilizzando VirtualAllocVlm, oppure pu˛ essere normale indirizzo 32-bit memoria ma non entrambi.

NNumberOfBytesToRead

Specifica il numero di byte da leggere dal file.

lpReserved

Riservato deve essere NULL.

lpOverlapped

Punta a una struttura OVERLAPPED. Questa struttura Ŕ obbligatorio e deve puntare a una struttura OVERLAPPED valida.

L'operazione di lettura inizia in corrispondenza dell'offset specificato nella struttura OVERLAPPED e ReadFileScatter potrebbe restituire prima che l'operazione di lettura sia stata completata. In questo caso, ReadFileScatter restituisce FALSE e la funzione GetLastError restituisce ERROR_IO_PENDING. Questo consente di continuare mentre l'operazione di lettura al termine il processo chiamante. L'applicazione Ŕ possibile utilizzare entrambi GetOverlappedResult/HasOverlappedIoCompleted di notifica di completamento I/O o GetQueuedCompletionStatus per prelevare il completamento I/O.

valori restituiti

Se la funzione ha esito positivo, il valore restituito Ŕ diverso da zero. Se la funzione non riesce, il valore restituito Ŕ zero. Per ottenere informazioni dettagliate sull'errore, chiamare GetLastError. Se ReadFileScatter tenta di leggere oltre la fine del file, la funzione restituisce zero e GetLastError restituisce ERROR_HANDLE_EOF

note

Ogni FILE_SEGMENT_ELEMENT Ŕ costituito da 64 bit. Tutti i 64 bit vengono utilizzati per calcolare il puntatore del buffer; di conseguenza, le applicazioni devono zero in modo esplicito i 32 bit superiore dell'elemento nei sistemi che non supportano i puntatori a 64 bit.

WriteFileGather

La funzione WriteFileGather raccoglie i dati dai buffer pi¨ e scrive i dati in un file. La funzione Ŕ progettata per l'operazione asincrona. La funzione Avvia la scrittura dei dati nel file nella posizione specificata dalla struttura OVERLAPPED.
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
   );
				

parametri

hFile


Identifica il file da scrivere. L'handle di file necessario creato con accesso al file GENERIC_WRITE. Il file deve essere aperto utilizzando FILE_FLAG_OVERLAPPED per specificare asincrono I/O e FILE_FLAG_NO_BUFFERING per specificare I/O non memorizzato nella cache.

aSegmentArray

Punta di una matrice di puntatori ai segmenti. Un segmento Ŕ un buffer di memoria in cui verranno collocata parte dei dati trasferiti. I segmenti sono dimensioni di pagina di sistema e deve essere allineato a un limite di dimensione di pagina. Il segmento di memoria pu˛ essere allocato utilizzando VirtualAllocVlm, oppure pu˛ essere memoria indirizzo normale a 32 bit, ma non entrambi.

NNumberOfBytesToWrite

Specifica il numero di byte da scrivere nel file.

A differenza del sistema operativo di MS-DOS, Windows interpreta un valore pari a zero come specificare un'operazione di scrittura null. Un'operazione di scrittura null non scrive i byte, ma di causare il timestamp modificare.

lpReserved

Riservato deve essere NULL.

LpOverlapped

Punta a una struttura OVERLAPPED. Questa struttura Ŕ obbligatorio e deve puntare a una struttura OVERLAPPED valida. L'operazione di scrittura inizia in corrispondenza dell'offset specificato nella struttura OVERLAPPED e WriteFileGather potrebbe restituire prima che l'operazione di scrittura sia stata completata. In questo caso, WriteFileGather restituisce FALSE e la funzione GetLastError restituisce ERROR_IO_PENDING. Questo consente il processo chiamante di continuare l'elaborazione mentre viene completata l'operazione di scrittura. L'applicazione pu˛ utilizzare entrambi GetOverlappedResult/HasOverlappedIoCompleted di I/O notifica di completamento o GetQueuedCompletionStatus per prelevare I/O completamento.

valori restituiti

Se la funzione ha esito positivo, il valore restituito Ŕ diverso da zero. Se la funzione non riesce, il valore restituito Ŕ zero. Per ottenere informazioni dettagliate sull'errore, chiamare GetLastError.

note

Ogni FILE_SEGMENT_ELEMENT Ŕ costituito da 64 bit. Tutti i 64 bit vengono utilizzati per calcolare il puntatore del buffer; di conseguenza, le applicazioni devono zero in modo esplicito i 32 bit superiore dell'elemento nei sistemi che non supportano i puntatori a 64 bit.

Se parte del file Ŕ bloccata da un altro processo e l'operazione di scrittura si sovrappone la parte bloccata, questa funzione non riesce.

A differenza del sistema operativo di MS-DOS, Windows interpreta zero byte da scrivere come specificare un'operazione di scrittura null e WriteFileGather non troncare o estendere il file. Per troncare o estendere un file, utilizzare la funzione di SetEndOfFile.

Status

Windows NT 4.0 Service Pack 2 ha introdotto una nuova interfaccia che agisce come un enhancer delle prestazioni per SQL Server durante l'esecuzione in Windows NT. Questo miglioramento implica a dispersione XY o raccolta e la funzionalitÓ di input/output.

Per ulteriori informazioni su come ottenere il service pack pi¨ recente per Windows NT 4.0, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
152734Come ottenere il pi¨ recente di Windows NT 4.0 Service Pack

ProprietÓ

Identificativo articolo: 160606 - Ultima modifica: venerdý 7 febbraio 2014 - Revisione: 1.1
Le informazioni in questo articolo si applicano a:
  • Microsoft Windows NT Workstation 4.0 Developer Edition
  • Microsoft Windows NT Server 4.0 Standard Edition
Chiavi:á
kbnosurvey kbarchive kbmt kbnetwork KB160606 KbMtit
Traduzione automatica articoli
Il presente articolo Ŕ stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non Ŕ sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, pi¨ o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non Ŕ la sua. Microsoft non Ŕ responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 160606
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

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