Melhoramentos de desempenho para o SQL Server no Windows NT

Traduções de Artigos Traduções de Artigos
Artigo: 160606 - Ver produtos para os quais este artigo se aplica.
Este artigo foi arquivado. Este artigo é oferecido "tal como está" e deixará de ser actualizado.
Expandir tudo | Reduzir tudo

Nesta página

Sumário

Uma nova interface foi adicionada como um melhoramento de desempenho para o SQL Server quando executado no Windows NT. Este melhoramento envolve a funcionalidade de E/s de dispersão/reunir.

Mais Informação

O que é XY/recolher?

Dispersão/reunir é uma técnica padrão utilizada em algumas situações de E/s de alto desempenho. -Refere-se normalmente a transferências de DMA (Direct Memory Access). Pode existir um determinado bloco de dados na memória como várias memórias intermédias discretas. Sem XY/reunir, quando configurar uma transferência para-disco de memória, o sistema operativo frequentemente fará uma transferência para cada memória intermédia ou bloco movê-los para uma única memória intermédia maior antes de iniciar a transferência. Ambos estes são ineficaz. É aconselhável se o sistema operativo/controlador/hardware recolhe os dados de localizações discretas na memória e transfere-los "no local" como uma única operação. Do mesmo modo, na entrada do disco, se o bloco de dados é dispersos directamente para move as localizações necessárias na memória sem bloco intermédio e assim sucessivamente, é mais rápido.

Especificação de interface

ReadFileScatter

A função ReadFileScatter lê dados a partir de um ficheiro, começando na posição indicada pelo desfasamento de ficheiro na estrutura de OVERLAPPED e distribui os dados para várias memórias intermédias de utilizador.
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 o ficheiro a ser lido. O identificador de ficheiro deve ter sido criado com acesso GENERIC_READ o ficheiro.

O ficheiro deve ser aberto utilizando FILE_FLAG_OVERLAPPED para especificar assíncrona E/s e FILE_FLAG_NO_BUFFERING para especificar E/s não colocada em cache.

aSegmentArray

Pontos de uma matriz de ponteiros para segmentos. Um segmento é uma memória intermédia em que parte dos dados transferidos deve ser colocado. Segmentos são página sistema dimensionados e deve ser alinhada num limite de tamanho de página.

O segmento de memória pode ser atribuído utilizando VirtualAllocVlm ou pode ser memória normal endereço de 32 bits mas não ambos.

NNumberOfBytesToRead

Especifica o número de bytes lidos a partir do ficheiro.

lpReserved

Reservado tem de ser NULL.

lpOverlapped

Aponta para uma estrutura OVERLAPPED. Esta estrutura é obrigatório e tem de apontar para uma estrutura OVERLAPPED válida.

A operação de leitura começa no desfasamento especificado na estrutura OVERLAPPED e ReadFileScatter pode reverter anterior foi concluída a operação de leitura. Neste caso, ReadFileScatter devolve FALSE e a função GetLastError devolve ERROR_IO_PENDING. Assim, o processo de chamada para continuar enquanto conclui a operação de leitura. A aplicação pode utilizar qualquer GetOverlappedResult/HasOverlappedIoCompleted a notificação de conclusão de E/s ou GetQueuedCompletionStatus para captar a conclusão de E/s.

valores devolvidos

Se a função tiver êxito, o valor devolvido é diferente de zero. Se a função falhar, o valor devolvido é zero. Para obter informações de erro expandidas, ligue GetLastError. Se ReadFileScatter tenta ler o fim do ficheiro, a função devolve zero e GetLastError devolve ERROR_HANDLE_EOF

comentários

Cada FILE_SEGMENT_ELEMENT é 64 bits de comprimento. Todos os 64 bits são utilizados para calcular o ponteiro de memória intermédia; por conseguinte, as aplicações explicitamente tem zero os 32 bits superiores do elemento em sistemas que não suportem ponteiros de 64 bits.

WriteFileGather

A função WriteFileGather reúne dados de várias memórias intermédias e escreve os dados para um ficheiro. A função foi concebida para operação assíncrona. A função começa a escrever dados no ficheiro na posição especificada pela estrutura 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 o ficheiro seja escrito. O identificador de ficheiro deve ter sido criado com acesso GENERIC_WRITE o ficheiro. O ficheiro deve ser aberto utilizando FILE_FLAG_OVERLAPPED para especificar assíncrona E/s e FILE_FLAG_NO_BUFFERING para especificar E/s não colocada em cache.

aSegmentArray

Pontos de uma matriz de ponteiros para segmentos. Um segmento é uma memória intermédia em que parte dos dados transferidos deve ser colocado. Segmentos são página sistema dimensionados e deve ser alinhada num limite de tamanho de página. O segmento de memória pode ser atribuído utilizando VirtualAllocVlm ou pode ser memória normal endereço de 32 bits, mas não ambos.

NNumberOfBytesToWrite

Especifica o número de bytes a escrever no ficheiro.

Ao contrário do sistema operativo MS-DOS, Windows NT interpreta um valor de zero como especificar uma operação de escrita nulo. Uma operação de escrita nulo não escreve quaisquer bytes mas faz com que o carimbo de data alterar.

lpReserved

Reservado tem de ser NULL.

LpOverlapped

Aponta para uma estrutura OVERLAPPED. Esta estrutura é obrigatório e tem de apontar para uma estrutura OVERLAPPED válida. A operação de escrita começa no desvio do especificado na estrutura OVERLAPPED e WriteFileGather poderá voltar antes de ter completada a operação de escrita. Neste caso, WriteFileGather devolve FALSE e a função GetLastError devolve ERROR_IO_PENDING. Assim, o processo de chamada para continuar o processamento enquanto está a ser concluída a operação de escrita. A aplicação pode utilizar qualquer GetOverlappedResult/HasOverlappedIoCompleted para recolher E/s notificação de conclusão ou GetQueuedCompletionStatus para recolher E/s conclusão.

valores devolvidos

Se a função tiver êxito, o valor devolvido é diferente de zero. Se a função falhar, o valor devolvido é zero. Para obter informações de erro expandidas, ligue GetLastError.

comentários

Cada FILE_SEGMENT_ELEMENT é 64 bits de comprimento. Todos os 64 bits são utilizados para calcular o ponteiro de memória intermédia; por conseguinte, as aplicações explicitamente tem zero os 32 bits superiores do elemento em sistemas que não suportem ponteiros de 64 bits.

Se parte do ficheiro está bloqueado por outro processo e a operação de escrita se sobrepõe a parte bloqueada, esta função falha.

Ao contrário do sistema operativo MS-DOS, Windows NT interpreta zero bytes a escrever como especificar uma operação de escrita nulo e WriteFileGather não truncar ou expandir o ficheiro. Truncar ou expandir um ficheiro, utilize a função SetEndOfFile.

Ponto Da Situação

Windows NT 4.0 Service Pack 2 introduziu uma nova interface que actua como um enhancer de desempenho para o SQL Server quando executado no Windows NT. Este melhoramento envolve a dispersão/reunir e a funcionalidade de entrada/saída.

Para obter informações adicionais sobre como obter o service pack mais recente para o Windows NT 4.0, clique no número de artigo existente abaixo para visualizar o artigo na base de dados de conhecimento da Microsoft:
152734Como obter o Service Pack mais recente do Windows NT 4.0

Propriedades

Artigo: 160606 - Última revisão: 1 de fevereiro de 2014 - Revisão: 1.1
A informação contida neste artigo aplica-se a:
  • Microsoft Windows NT Workstation 4.0 Developer Edition
  • Microsoft Windows NT Server 4.0 Standard Edition
Palavras-chave: 
kbnosurvey kbarchive kbmt kbnetwork KB160606 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 160606

Submeter comentários

 

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