对于下 Windows NT SQL Server 性能增强

文章翻译 文章翻译
文章编号: 160606 - 查看本文应用于的产品
本文已归档。它按“原样”提供,并且不再更新。
展开全部 | 关闭全部

本文内容

概要

新的接口已在 Windows NT 下运行时为 SQL Server 性能增强为添加。此增强功能包括散点图/收集 I/O 功能。

更多信息

散点图/集合是什么?

散点图/聚集是一种标准的技术,在某些高性能 I/O 的情况下使用。它通常是指直接内存访问 (DMA) 传输。为多个离散的缓冲区,给定的数据块可能存在于内存中。 将不散点图/收集的情况下时内存到磁盘传输操作系统的设置通常将每个的缓冲区中的操作的传输或阻止它们移动到一个更大的缓冲区之前启动传输。这些都是效率低下。如果操作系统/驱动程序/硬件收集数据从内存中独立的位置,并将它们作为单个操作传输"中的位置",则更好。同样上输入从磁盘,, 如果直接对分散的数据块不中间块的内存中所需的位置移动,这样打开它,但速度更快。

接口规范

ReadFileScatter

ReadFileScatter 函数从一个文件中指示的文件偏移量 OVERLAPPED 结构中的位置开始读取数据,并将数据分发到多个用户缓冲区。
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
   );
				

参数

hFile


标识要读取该文件。文件句柄必须已使用 GENERIC_READ 访问该文件中创建。

必须指定异步 I/O 和 FILE_FLAG_NO_BUFFERING 指定非缓存的 I/O 使用 FILE_FLAG_OVERLAPPED 打开该文件。

aSegmentArray

数组的指针指向段。一段是传输的数据的一部分的放置位置的内存缓冲区。段是系统页大小和必须在页的大小边界上对齐。

内存段可以使用 VirtualAllocVlm,分配,也可以是正常的 32 位地址的内存,但不是能同时。

NNumberOfBytesToRead

指定要从文件读取的字节数。

lpReserved

保留必须为 NULL。

lpOverlapped

指向一个 OVERLAPPED 结构。此结构是必需的并且必须指向有效的 OVERLAPPED 结构。

读取的操作开始 OVERLAPPED 结构中指定的偏移量,ReadFileScatter 可能会返回之前已完成读取的操作。在这种情况下 ReadFileScatter 返回 FALSE 并 GetLastError 函数返回 ERROR_IO_PENDING。这允许继续读取的操作完成时调用的进程。应用程序可以使用任一 GetOverlappedResult/HasOverlappedIoCompleted 拿 I/O 完成通知,或 GetQueuedCompletionStatus 拾取 I/O 完成。

返回值

如果此函数成功,返回的值不为零。如果将失败函数返回值为零。为了扩展的错误信息调用 GetLastError。如果 ReadFileScatter 读取该文件的末尾,此函数返回零,并 GetLastError 返回 ERROR_HANDLE_EOF

说明

每个 FILE_SEGMENT_ELEMENT 为 64 位长。所有的 64 位用于计算缓冲区指针 ; 因此,应用程序必须显式零系统不支持 64 位指针上元素的高 32 位。

WriteFileGather

WriteFileGather 函数从多个缓冲区中收集的数据,并将数据写到文件。 该函数是为异步操作而设计的。 在函数开始将数据写入该文件在指定的位置由 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
   );
				

参数

hFile


标识要写入文件。文件句柄必须已使用 GENERIC_WRITE 访问该文件中创建。必须指定异步 I/O 和 FILE_FLAG_NO_BUFFERING 指定非缓存的 I/O 使用 FILE_FLAG_OVERLAPPED 打开该文件。

aSegmentArray

数组的指针指向段。一段是传输的数据的一部分的放置位置的内存缓冲区。段是系统页大小和必须在页的大小边界上对齐。内存段可以使用 VirtualAllocVlm,分配,也可以是正常的 32 位地址的内存,但不是能同时。

NNumberOfBytesToWrite

指定要写入的文件的字节数。

与 MS-DOS 操作系统不同 Windows NT 将解释为与指定空的写入操作的零值。空的写入操作不会写入任何字节,但确实会导致更改时间戳。

lpReserved

保留必须为 NULL。

LpOverlapped

指向一个 OVERLAPPED 结构。此结构是必需的并且必须指向有效的 OVERLAPPED 结构。写操作开始 OVERLAPPED 结构中指定的偏移量处,WriteFileGather 可能会返回之前已完成写入操作。在这种情况下 WriteFileGather 返回 FALSE 并 GetLastError 函数返回 ERROR_IO_PENDING。这使调用进程继续处理而完成写操作。应用程序可以使用任一 GetOverlappedResult/HasOverlappedIoCompleted 拿 I/O 完成通知或 GetQueuedCompletionStatus 拾取 I/O 完成。

返回值

如果此函数成功,返回的值不为零。如果将失败函数返回值为零。为了扩展的错误信息调用 GetLastError。

说明

每个 FILE_SEGMENT_ELEMENT 为 64 位长。所有的 64 位用于计算缓冲区指针 ; 因此,应用程序必须显式零系统不支持 64 位指针上元素的高 32 位。

如果由另一进程锁定文件的一部分,并且写入操作重叠锁定的部分此函数将失败。

与 MS-DOS 操作系统不同 Windows NT 解释编写,因为指定空的写入操作的零字节和 WriteFileGather 不会截断或扩展文件。若要截断或扩展文件,请使用 SetEndOfFile 函数一次。

状态

Windows NT 4.0 Service Pack 2 引入了新的界面,在 Windows NT 下运行时,就像为 SQL Server 的性能 enhancer。此增强功能包括散点图/收集和输入/输出功能。

有关获取最新的 service pack,对于 Windows NT 4.0 的附加信息,请单击下面文章编号,以查看 Microsoft 知识库中相应的文章:
152734如何获取最新的 Windows NT 4.0 服务包

属性

文章编号: 160606 - 最后修改: 2013年10月4日 - 修订: 1.1
这篇文章中的信息适用于:
  • Microsoft Windows NT Workstation 4.0 开发员版
  • Microsoft Windows NT Server 4.0 Standard Edition
关键字:?
kbnosurvey kbarchive kbmt kbnetwork KB160606 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 160606
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

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