Amélioration des performances pour SQL Server sous Windows NT

Traductions disponibles Traductions disponibles
Numéro d'article: 160606 - Voir les produits auxquels s'applique cet article
Cet article a été archivé. Il est proposé « en l'état » et ne sera plus mis à jour.
Agrandir tout | Réduire tout

Sommaire

Résumé

Une nouvelle interface a été ajoutée comme une amélioration des performances pour SQL Server lors de l'exécution sous Windows NT. Cette amélioration implique la fonctionnalité de ventilation/regroupement.

Plus d'informations

Qu'est-ce que le nuage de points/Gather ?

Ventilation/regroupement est une technique standard utilisée dans certaines situations d'e/S hautes performances. Il fait généralement référence à des transferts d'accès direct à la mémoire (DMA). Un bloc de données donné peut-être exister dans la mémoire comme plusieurs tampons discrètes. Sans ventilation/regroupement, lorsque vous paramétrez un transfert de mémoire sur disque, le système d'exploitation peut faire souvent un transfert pour chaque tampon ou bloc de les déplacer vers un seul tampon plus grand avant de lancer le transfert. Ces deux sont inefficaces. Il est préférable si le système d'exploitation/pilote/matériel rassemble les données à partir d'emplacements discrètes de la mémoire et les transfère «en place» en une seule opération. De même, à l'entrée à partir du disque, si le bloc de données est disséminée directement aux nécessaires emplacements en mémoire sans bloc intermédiaire déplace et ainsi de suite, il est plus rapide.

Spécification d'interface

ReadFileScatter

La fonction ReadFileScatter lit les données à partir d'un fichier, en commençant à la position indiquée par l'offset dans le fichier dans la structure OVERLAPPED et distribue les données dans plusieurs mémoires tampons utilisateur.
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
   );
				

Paramètres

hFile


Identifie le fichier à lire. Le handle de fichier doit avoir été créé avec GENERIC_READ l'accès au fichier.

Le fichier doit être ouvert à l'aide de FILE_FLAG_OVERLAPPED pour spécifier asynchrone e/S et FILE_FLAG_NO_BUFFERING spécifier e/S non mise en cache.

aSegmentArray

Désigne un tableau de pointeurs segments. Un segment est une mémoire tampon où une partie des données transférées doit être placée. Page système en taille réelle et doit être alignée sur une limite de taille de page sont des segments.

Le segment de mémoire peut être alloué à l'aide de VirtualAllocVlm ou peut être normal 32-bit adresser la mémoire mais pas les deux.

NNumberOfBytesToRead

Spécifie le nombre d'octets à lire à partir du fichier.

lpReserved

Réservé doit être NULL.

lpOverlapped

Pointe vers une structure OVERLAPPED. Cette structure est obligatoire et doit pointer vers une structure OVERLAPPED valide.

L'opération de lecture démarre au décalage spécifié dans la structure OVERLAPPED et ReadFileScatter peut renvoyer avant la fin de l'opération de lecture. Dans ce cas, ReadFileScatter renvoie la valeur FALSE et la fonction GetLastError renvoie ERROR_IO_PENDING. Cela permet au processus appelant de continuer pendant que l'opération de lecture. L'application peut utiliser soit GetOverlappedResult/HasOverlappedIoCompleted pour notification d'achèvement d'e/S ou GetQueuedCompletionStatus en mains propres de terminaison d'e/S.

Valeurs de retour

Si la fonction réussit, la valeur de retour est différent de zéro. Si la fonction échoue, la valeur de retour est zéro. Pour obtenir des informations d'erreur étendues, appeler GetLastError. Si ReadFileScatter tente de lecture au-delà de la fin du fichier, la fonction renvoie zéro et GetLastError renvoie ERROR_HANDLE_EOF

Remarques

Chaque FILE_SEGMENT_ELEMENT est de 64 bits. Les 64 bits sont utilisés pour calculer le pointeur de la mémoire tampon ; par conséquent, les applications doivent zéro explicitement les derniers 32 bits de l'élément sur les systèmes qui ne prennent pas en charge les pointeurs 64 bits.

WriteFileGather

La fonction WriteFileGather regroupe les données provenant de plusieurs mémoires tampons et écrit les données dans un fichier. La fonction est conçue pour l'opération asynchrone. La fonction commence à écrire des données dans le fichier à la position spécifiée par la structure 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
   );
				

Paramètres

hFile


Identifie le fichier à écrire dans. Le handle de fichier doit avoir été créé avec accès GENERIC_WRITE au fichier. Le fichier doit être ouvert à l'aide de FILE_FLAG_OVERLAPPED pour spécifier asynchrone e/S et FILE_FLAG_NO_BUFFERING spécifier e/S non mise en cache.

aSegmentArray

Désigne un tableau de pointeurs segments. Un segment est une mémoire tampon où une partie des données transférées doit être placée. Page système en taille réelle et doit être alignée sur une limite de taille de page sont des segments. Le segment de mémoire peut être alloué à l'aide de VirtualAllocVlm ou peut être normal 32-bit adresser la mémoire, mais pas les deux.

NNumberOfBytesToWrite

Spécifie le nombre d'octets à écrire dans le fichier.

Contrairement au système d'exploitation MS-DOS, Windows NT interprète la valeur de zéro que la spécification d'une opération d'écriture null. Une opération d'écriture null n'écrit pas tous les octets mais provoque l'horodatage à modifier.

lpReserved

Réservé doit être NULL.

LpOverlapped

Pointe vers une structure OVERLAPPED. Cette structure est obligatoire et doit pointer vers une structure OVERLAPPED valide. L'opération d'écriture commence à l'offset spécifié dans la structure OVERLAPPED et WriteFileGather peut retourner avant la fin de l'opération d'écriture. Dans ce cas, WriteFileGather renvoie la valeur FALSE et la fonction GetLastError renvoie ERROR_IO_PENDING. Cela permet au processus appelant poursuivre le traitement pendant que l'opération d'écriture en cours terminée. L'application peut utiliser soit GetOverlappedResult/HasOverlappedIoCompleted pour collecter les e/S notification d'achèvement ou GetQueuedCompletionStatus pour chercher des e/S achèvement.

Valeurs de retour

Si la fonction réussit, la valeur de retour est différent de zéro. Si la fonction échoue, la valeur de retour est zéro. Pour obtenir des informations d'erreur étendues, appeler GetLastError.

Remarques

Chaque FILE_SEGMENT_ELEMENT est de 64 bits. Les 64 bits sont utilisés pour calculer le pointeur de la mémoire tampon ; par conséquent, les applications doivent zéro explicitement les derniers 32 bits de l'élément sur les systèmes qui ne prennent pas en charge les pointeurs 64 bits.

Si la partie du fichier est verrouillé par un autre processus et l'opération d'écriture superpose à la partie verrouillée, cette fonction échoue.

Contrairement au système d'exploitation MS-DOS, Windows NT interprète les zéro octets à écrire que la spécification d'une opération d'écriture null et WriteFileGather ne pas tronquer ou étendre le fichier. Pour tronquer ou étendre un fichier, utilisez la fonction SetEndOfFile.

Statut

Windows NT 4.0 Service Pack 2 a introduit une nouvelle interface qui agit comme un amplificateur de performances pour SQL Server lors de l'exécution sous Windows NT. Cette amélioration implique la ventilation/regroupement et la fonctionnalité d'entrée/sortie.

Pour plus d'informations sur l'obtention du dernier service pack pour Windows NT 4.0, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la base de connaissances Microsoft :
152734Comment faire pour obtenir le dernier Pack de Service Windows NT 4.0

Propriétés

Numéro d'article: 160606 - Dernière mise à jour: mercredi 12 février 2014 - Version: 1.1
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Windows NT Workstation 4.0 Édition Développeur
  • Microsoft Windows NT Server 4.0 Standard Edition
Mots-clés : 
kbnosurvey kbarchive kbmt kbnetwork KB160606 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 160606
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

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