Mejoras de rendimiento para SQL Server en Windows NT

Seleccione idioma Seleccione idioma
Id. de artículo: 160606 - Ver los productos a los que se aplica este artículo
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Expandir todo | Contraer todo

En esta página

Resumen

Una nueva interfaz se agregó como una mejora de rendimiento para SQL Server cuando se ejecuta en Windows NT. Esta mejora incluye funcionalidad de E/s por dispersión y recopilación.

Más información

¿Qué es dispersión y recopilación?

Dispersión y recopilación es una técnica estándar que se utiliza en algunas situaciones de E/s de alto rendimiento. Normalmente hace referencia a las transferencias del acceso directo a memoria (DMA). Un bloque de datos determinado puede existir en memoria como varios búferes discretos. Sin dispersión y recopilación, al configurar una transferencia de disco de memoria, el sistema operativo hará a menudo una transferencia para cada búfer o bloque de moverlos a un único búfer mayor antes de iniciar a la transferencia. Ambas son ineficaces. Es mejor si el sistema operativo o controlador o hardware recopila los datos desde las ubicaciones discretas en la memoria y transfiere "en contexto" como una sola operación. Del mismo modo, en la entrada desde disco, si el bloque de datos está dispersa por directamente a las ubicaciones necesarias en la memoria sin bloque intermedio mueve y etc., es más rápido.

Especificación de interfaz

ReadFileScatter

La función ReadFileScatter lee datos de un archivo, empezando en la posición indicada por el desplazamiento de archivo en la estructura OVERLAPPED y distribuye los datos en varios búferes de usuario.
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
   );
				

parámetros

hFile


Identifica el archivo que se va a leer. El identificador de archivo debe creado con GENERIC_READ acceso al archivo.

Abrir el archivo utilizando FILE_FLAG_OVERLAPPED para especificar asincrónica E/s y FILE_FLAG_NO_BUFFERING especificar E/s sin almacenamiento en caché.

aSegmentArray

Señala una matriz de punteros a segmentos. Un segmento es un búfer de memoria donde debe ubicarse parte de los datos transferidos. Segmentos son el tamaño de página del sistema y debe estar alineada en un límite de tamaño de página.

Segmento de memoria VirtualAllocVlm puede distribuirse, o puede ser normal direcciones de 32 bits de la memoria pero no ambos.

NNumberOfBytesToRead

Especifica el número de bytes que leer el archivo.

lpReserved

Reservada debe ser NULL.

lpOverlapped

Señala a una estructura OVERLAPPED. Esta estructura es necesaria y debe señalar a una estructura OVERLAPPED válida.

La operación de lectura se inicia en el desplazamiento especificado en la estructura OVERLAPPED y puede devolver ReadFileScatter antes de que ha finalizado la operación de lectura. En este caso, ReadFileScatter devuelve FALSE y la función GetLastError devuelve ERROR_IO_PENDING. Esto permite el proceso de llamada continuar mientras termina la operación de lectura. La aplicación puede utilizar cualquier GetOverlappedResult/HasOverlappedIoCompleted para recoger la notificación de finalización de E/s o GetQueuedCompletionStatus para recoger la finalización de E/s.

valores devueltos

Si la función tiene éxito, el valor devuelto es distinto de cero. Si la función falla, el valor devuelto es cero. Para obtener información ampliada del error, llame a GetLastError. Si ReadFileScatter intenta leer más allá del final del archivo, la función devuelve cero, y GetLastError devuelve ERROR_HANDLE_EOF

notas

Cada FILE_SEGMENT_ELEMENT es de 64 bits de largos. Todos los 64 bits se utilizan para calcular el puntero de búfer; por lo tanto, las aplicaciones deben cero explícitamente los 32 bits superiores del elemento en sistemas que no admiten punteros de 64 bits.

WriteFileGather

La función WriteFileGather recopila datos de varios búferes y escribe los datos en un archivo. La función está diseñada para la operación asincrónica. La función inicia escribir datos en el archivo en la posición especificada por la estructura 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
   );
				

parámetros

hFile


Identifica el archivo que se va a escribir. El identificador de archivo debe creado con GENERIC_WRITE acceso al archivo. Abrir el archivo utilizando FILE_FLAG_OVERLAPPED para especificar asincrónica E/s y FILE_FLAG_NO_BUFFERING especificar E/s sin almacenamiento en caché.

aSegmentArray

Señala una matriz de punteros a segmentos. Un segmento es un búfer de memoria donde debe ubicarse parte de los datos transferidos. Segmentos son el tamaño de página del sistema y debe estar alineada en un límite de tamaño de página. Segmento de memoria VirtualAllocVlm puede distribuirse, o puede ser normal direcciones de 32 bits de la memoria, pero no ambos.

NNumberOfBytesToWrite

Especifica el número de bytes a escribir en el archivo.

A diferencia del sistema operativo MS-DOS, Windows NT interpreta un valor de cero como especificación de una operación de escritura null. Una operación de escritura null no escribe los bytes pero hace que la marca de tiempo cambiar.

lpReserved

Reservada debe ser NULL.

LpOverlapped

Señala a una estructura OVERLAPPED. Esta estructura es necesaria y debe señalar a una estructura OVERLAPPED válida. La operación de escritura se inicia en el desplazamiento especificado en la estructura OVERLAPPED y puede devolver WriteFileGather antes de que ha finalizado la operación de escritura. En este caso, WriteFileGather devuelve FALSE y la función GetLastError devuelve ERROR_IO_PENDING. Esto permite el proceso de llamada continuar procesando mientras se completa la operación de escritura. La aplicación puede utilizar cualquier GetOverlappedResult/HasOverlappedIoCompleted para recoger E/s notificación de finalización o GetQueuedCompletionStatus para recoger E/s finalización.

valores devueltos

Si la función tiene éxito, el valor devuelto es distinto de cero. Si la función falla, el valor devuelto es cero. Para obtener información ampliada del error, llame a GetLastError.

notas

Cada FILE_SEGMENT_ELEMENT es de 64 bits de largos. Todos los 64 bits se utilizan para calcular el puntero de búfer; por lo tanto, las aplicaciones deben cero explícitamente los 32 bits superiores del elemento en sistemas que no admiten punteros de 64 bits.

Si parte del archivo está bloqueado por otro proceso y la operación de escritura se superpone a la parte bloqueada, esta función no funcionará.

A diferencia del sistema operativo MS-DOS, Windows NT interpreta cero bytes a escribir como se especifica una operación de escritura null y WriteFileGather no truncar o ampliar el archivo. Para truncar o ampliar un archivo, utilice la función SetEndOfFile.

Estado

Windows NT 4.0 Service Pack 2 introdujo una nueva interfaz que actúa como un enhancer de rendimiento para SQL Server cuando se ejecuta en Windows NT. Esta mejora implica dispersión y recopilación y funcionalidad de entrada y salida.

Para obtener información adicional acerca de cómo obtener el service pack más reciente para Windows NT 4.0, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
152734Cómo obtener el Service Pack más reciente de Windows NT 4.0

Propiedades

Id. de artículo: 160606 - Última revisión: viernes, 31 de enero de 2014 - Versión: 1.1
La información de este artículo se refiere a:
  • Microsoft Windows NT Workstation 4.0 Developer Edition
  • Microsoft Windows NT Server 4.0 Standard Edition
Palabras clave: 
kbnosurvey kbarchive kbmt kbnetwork KB160606 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 160606

Enviar comentarios

 

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