В настоящее время вы работаете в автономном режиме; ожидается повторное подключение к Интернету

Повышение производительности SQL Server в Windows NT

ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.

Эта статья на английском языке:160606
Аннотация
Новый интерфейс был добавлен как улучшение производительности для SQL Server при работе в системе Windows NT. Это усовершенствование включает в себя функциональные возможности разбросом ввода-вывода.
Дополнительная информация

Что такое Точечная/сбор?

Разбивки/сборки — это стандартный прием, используемый в некоторых ситуациях высокой производительности операций ввода-вывода. Обычно относится к передаче прямого доступа К памяти (DMA). Данного блока данных может существовать в памяти как несколько отдельных буферов.Без разбросом при настройке перемещения диска и памяти, операционная система часто будет выполнять перенос для каждого буфера или блок переместить их в один большой буфер перед запуском процесса перемещения. Они оба являются неэффективным. Это лучше, если собирает данные из отдельных участках памяти операционной системы и драйверов и оборудования и передает их «на месте» как одну операцию. Точно так же, на ввод данных с диска, если блок данных рассеяны непосредственно к необходимости участках памяти без промежуточных блока перемещается и т. д., он работает быстрее.

Спецификация интерфейса

ReadFileScatter

Функция ReadFileScatter считывает данные из файла, начиная с позиции, указанной в структуре OVERLAPPED, смещение файла и распределяет данные в несколько буферов пользователя.
BOOL ReadFileScatter(<WWBLOCKQUOTE>    HANDLE hFile,                         // handle of file to read    FILE_SEGMENT_ELEMENT aSegmentArray[], // array of buffer segments thatreceives data    DWORD nNumberOfBytesToRead,           // number of bytes to read    LPDWORD lpReserved,                   // reserved must be NULL    LPOVERLAPPED lpOverlapped             // address of structure for data   );				

Аргументы:

hFile


Указывает файл для чтения. Дескриптор файла должен быть создан с помощью GENERIC_READ доступ к файлу.

Файл должен быть открыт с помощью FILE_FLAG_OVERLAPPED для указания асинхронного ввода-вывода, а FILE_FLAG_NO_BUFFERING без кэширования ввода-вывода.

aSegmentArray

Указывает массив указателей на сегменты. Сегмент является буфер памяти, куда следует поместить часть передаваемых данных. Сегменты являются размера страницы системы и должны быть выровнены по границе размер страницы.

Сегмент памяти может выделяться VirtualAllocVlm или может быть обычное 32-битной адресации памяти, но не оба одновременно.

NNumberOfBytesToRead

Указывает количество байтов, считываемых из файла.

lpReserved

Зарезервированные должен иметь значение NULL.

lpOverlapped

Указатель на структуру OVERLAPPED. Эта структура является обязательным и должно указывать допустимый структуры OVERLAPPED.

Начинается операция чтения, заданного смещением в структуре OVERLAPPED в и ReadFileScatter может возвращать до завершения операции чтения. В этом случае возвращает FALSE, ReadFileScatter и функция GetLastError возвращает ERROR_IO_PENDING. Это позволяет вызывающим процессом продолжить работу во время завершения операции чтения. Приложение может использовать либо GetOverlappedResult/HasOverlappedIoCompleted для получения уведомления о завершении ввода/вывода или GetQueuedCompletionStatus забрать завершения ввода/вывода.

Возвращаемые значения

Если функция успешно выполнена, возвращается ненулевое значение. Если операция завершается ошибкой, возвращаемое значение равно нулю. Чтобы получить расширенные сведения об ошибке, вызовите GetLastError. Если ReadFileScatter предпринимается попытка чтения за пределами конца файла, функция возвращает ноль и GetLastError возвращает ERROR_HANDLE_EOF

Заметки.

Каждый FILE_SEGMENT_ELEMENT составляет 64 бита в длинные. Все 64 бита используются для расчета буфера указателя; таким образом, приложения должны явно нуля верхние 32 бита самого большого элемента на системах, которые не поддерживает 64-разрядные указатели.

WriteFileGather

Функция WriteFileGather собирает данные из нескольких буферов и записывает данные в файл. Функция предназначена для асинхронной операции.Функция начинается запись данных в файл с позиции, указанной в структуре OVERLAPPED.
BOOL WriteFileGather(    HANDLE hFile,                // handle to file to write to    FILE_SEGMENT_ELEMENT aSegmentArray [], // array of buffer segmentscontaining the data    DWORD nNumberOfBytesToWrite,    // number of bytes to write    LPDWORD lpReserved,             // Reserved must be NULL    LPOVERLAPPED lpOverlapped       // pointer to structure needed foroverlapped I/O   );				

Аргументы:

hFile


Указывает файл для записи. Дескриптор файла должен быть создан с помощью GENERIC_WRITE доступ к файлу. Файл должен быть открыт с помощью FILE_FLAG_OVERLAPPED для указания асинхронного ввода-вывода, а FILE_FLAG_NO_BUFFERING без кэширования ввода-вывода.

aSegmentArray

Указывает массив указателей на сегменты. Сегмент является буфер памяти, куда следует поместить часть передаваемых данных. Сегменты являются размера страницы системы и должны быть выровнены по границе размер страницы. Сегмент памяти может выделяться VirtualAllocVlm или может быть обычное 32-битный адрес памяти, но не оба.

NNumberOfBytesToWrite

Указывает число байтов для записи в файл.

В отличие от операционной системы MS-DOS Windows NT интерпретирует значение 0 как пустой записи. Операция записи значение null не записывает все байты, но нарушают штампа времени для изменения.

lpReserved

Зарезервированные должен иметь значение NULL.

LpOverlapped

Указатель на структуру OVERLAPPED. Эта структура является обязательным и должно указывать допустимый структуры OVERLAPPED. Операция записи начинается со смещением, указанный в структуре OVERLAPPED и WriteFileGather может возвращать до завершения операции записи. В этом случае возвращает FALSE, WriteFileGather и функция GetLastError возвращает ERROR_IO_PENDING. Это позволяет продолжать обработку во время завершения операции записи вызывающего процесса. Приложение может использовать либо GetOverlappedResult/HasOverlappedIoCompleted снимков ввод-вывод уведомления о завершении или GetQueuedCompletionStatus забрать ввода/вывода завершения.

Возвращаемые значения

Если функция успешно выполнена, возвращается ненулевое значение. Если операция завершается ошибкой, возвращаемое значение равно нулю. Чтобы получить расширенные сведения об ошибке, вызовите GetLastError.

Заметки.

Каждый FILE_SEGMENT_ELEMENT составляет 64 бита в длинные. Все 64 бита используются для расчета буфера указателя; таким образом, приложения должны явно нуля верхние 32 бита самого большого элемента на системах, которые не поддерживает 64-разрядные указатели.

Если часть файла заблокирована другим процессом и заблокированные часть накладывается на операцию записи, эта функция не выполняется.

В отличие от операционной системы MS-DOS Windows NT интерпретирует 0 байт, записываемое как значение null, записи и WriteFileGather не усечения или расширения файла. Для усечения или расширения файла, используйте функцию SetEndOfFile.
Статус
Windows NT 4.0 с пакетом обновления 2 (SP2) представила новый интерфейс, который действует как enhancer производительности для SQL Server при работе в системе Windows NT. Это усовершенствование включает в себя функции ввода вывода и разбивки/сборки.

За дополнительной информацией о получении последнего пакета обновления для Windows NT 4.0 щелкните следующий номер статьи базы знаний Майкрософт:
152734Как получить последний пакет обновления для Windows NT 4.0
prodnt SQL

Внимание! Эта статья переведена автоматически

Свойства

Номер статьи: 160606 — последний просмотр: 11/14/2010 04:00:00 — редакция: 2.0

Microsoft Windows NT Workstation 4.0 Developer Edition, Microsoft Windows NT Server 4.0 Standard Edition

  • kbnetwork kbmt KB160606 KbMtru
Отзывы и предложения