Windows NT altında SQL Server için performans geliştirmeleri (Bu bağlantı, bir kısmı veya tamamı İngilizce olan içeriğe işaret edebilir.)

Makale çevirileri Makale çevirileri
Makale numarası: 160606 - Bu makalenin geçerli olduğu ürünleri görün.
Bu makale arşivlenmiştir. "Olduğu gibi" sunulmaktadır ve bundan sonra güncelleştirilmeyecektir.
Hepsini aç | Hepsini kapa

Bu Sayfada

Özet

Yeni BIR arabirimi Windows NT altında çalışan SQL Server için bir performans geliştirmesi eklendi. Bu geliştirme, dağılım/toparla g/Ç işlevselliği içerir.

Daha fazla bilgi

Dağılım/toplama nedir?

Dağılım/toparla bazı yüksek g/Ç durumlarda kullanılan standart bir tekniktir. Genellikle, doğrudan bellek erişimi (DMA) aktarımları başvuruyor. Belirli BIR veri bloğu, bellek gibi birkaç ayrı arabellekleri olabilir. Bir bellek ve disk aktarımının, işletim sisteminin bir ayarlama genellikle her arabellek için bir transfer yapmak veya engellemek dağılım/toparla daha büyük tek bir arabelleğe aktarmayı önce taşıyabilirsiniz. Bunların her ikisi de verimsiz. Işletim sistemi/sürücü/donanımı farklı konumlardan bellekteki verileri toplar ve bunları tek bir işlem "yerine" aktarımları daha iyi bir yöntemdir. Benzer şekilde, giriş, diskten veri bloğu doğrudan dağılmış, gerekli konumlar olmadan ara bloğu bellekte taşır ve vb. daha hızlı olduğu.

Belirtimi arabirim

ReadFileScatter

ReadFileScatter işlevi OVERLAPPED yapısındaki dosya konumu olarak belirttiği konumla başlayarak, bir dosyadan veri okur ve bu verileri birden çok kullanıcı arabellekleri dağıtır.
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
   );
				

<a1></a1> Parametreleri

hFile


Okunması gereken dosyayı tanımlar. Dosya tanıtıcısı GENERIC_READ dosyaya erişim ile oluşturulmuş olması gerekir.

Zaman uyumsuz g/Ç ve FILE_FLAG_NO_BUFFERING önbelleğe alınmamış g/Ç belirtmek için FILE_FLAG_OVERLAPPED kullanarak dosyanın açılması gerekir.

aSegmentArray

Bir dizi işaretçileri kesimlerine işaret eder. Aktarılan verinin bir bölümünü nereye yerleştirilmesi gerektiğini ara bellek kesimidir. Segmentleri sistem sayfa boyutu ve sayfa boyutunu sınırında hizalanmış ' dir.

Bellek bölütüne VirtualAllocVlm kullanarak ayrılabilen veya normal 32-bit adres bellek, ancak her ikisini de olabilir.

NNumberOfBytesToRead

Dosyadan okunacak bayt sayısını belirtir.

lpReserved

NULL, rezerve edilmiş olması gerekir.

lpOverlapped

Bir OVERLAPPED yapısı işaret. Bu yapı gereklidir ve geçerli OVERLAPPED yapısına göstermelidir.

Okuma işlemi, OVERLAPPED yapısı içinde belirtilen uzaklığında başlayan ve okuma işlemi tamamlanmıştır önce ReadFileScatter döndürebilir. Bu durumda, ReadFileScatter YANLıŞ verir ve ERROR_IO_PENDING GetLastError işlevini verir. Bu, okuma işlemi tamamlarken devam etmek arama işlemi sağlar. Uygulama ya da GetOverlappedResult/HasOverlappedIoCompleted g/Ç tamamlanma bildirim veya GetQueuedCompletionStatus g/Ç tamamlanma seçmek için seçmek için kullanabilirsiniz.

Dönüş değerleri

Dönüş değeri, işlevin başarılı olursa, sıfır olmayan değeridir. Işlev başarısız olursa, sonuç değeri sıfırdır. Genişletilmiş hata bilgilerini almak için <a0></a0>, GetLastError arayın. ReadFileScatter dosya sonunun okumaya çalışırsa fonksiyon sıfır döndürür ve GetLastError ERROR_HANDLE_EOF verir...

Açıklamalar

Her FILE_SEGMENT_ELEMENT 64 bit uzunluğunda olur. Tüm 64 bitini arabellek işaretçiyi hesaplamak için kullanılır; bu nedenle, sıfır uygulamaları açıkça üst 32 bit 64-bit işaretçileri desteklemeyen sistemlerde öğesinin gerekir.

WriteFileGather

WriteFileGather işlevi, birden çok önbelleklerden verileri toplar ve verileri bir dosyaya yazar. Işlev, zaman uyumsuz işlem için tasarlanmıştır. Işlev OVERLAPPED yapı tarafından belirtilen konumdaki dosyaya veri yazma başlatır.
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
   );
				

<a1></a1> Parametreleri

hFile


Yazılacak dosya tanımlar. Dosya tanıtıcısı GENERIC_WRITE dosyaya erişim ile oluşturulmuş olması gerekir. Zaman uyumsuz g/Ç ve FILE_FLAG_NO_BUFFERING önbelleğe alınmamış g/Ç belirtmek için FILE_FLAG_OVERLAPPED kullanarak dosyanın açılması gerekir.

aSegmentArray

Bir dizi işaretçileri kesimlerine işaret eder. Aktarılan verinin bir bölümünü nereye yerleştirilmesi gerektiğini ara bellek kesimidir. Segmentleri sistem sayfa boyutu ve sayfa boyutunu sınırında hizalanmış ' dir. Bellek bölütüne VirtualAllocVlm kullanarak ayrılabilen veya normal 32 bitlik adres bellek, ancak her ikisini de olabilir.

NNumberOfBytesToWrite

Dosyaya yazma bayt sayısını belirtir.

MS-DOS işletim sisteminin farklı olarak, Windows NT boş yazma işlemi belirten olarak sıfır değeri yorumlar. Boş yazma işlemi, tüm baytları yazma ancak değiştirmek zaman damgasını neden.

lpReserved

NULL, rezerve edilmiş olması gerekir.

LpOverlapped

Bir OVERLAPPED yapısı işaret. Bu yapı gereklidir ve geçerli OVERLAPPED yapısına göstermelidir. Yazma işlemi, OVERLAPPED yapısı içinde belirtilen uzaklığında başlayan ve yazma işlemi tamamlanmıştır önce WriteFileGather döndürebilir. Bu durumda, WriteFileGather YANLıŞ verir ve ERROR_IO_PENDING GetLastError işlevini verir. Bu yazma işlemi tamamlanırken işleme devam etmek arama işlemi sağlar. Uygulama ya da GetOverlappedResult/HasOverlappedIoCompleted g/Ç seçmek için kullanabileceğiniz tamamlanma bildirim veya GetQueuedCompletionStatus g/Ç seçmek için tamamlama.

Dönüş değerleri

Dönüş değeri, işlevin başarılı olursa, sıfır olmayan değeridir. Işlev başarısız olursa, sonuç değeri sıfırdır. Genişletilmiş hata bilgilerini almak için <a0></a0>, GetLastError arayın.

Açıklamalar

Her FILE_SEGMENT_ELEMENT 64 bit uzunluğunda olur. Tüm 64 bitini arabellek işaretçiyi hesaplamak için kullanılır; bu nedenle, sıfır uygulamaları açıkça üst 32 bit 64-bit işaretçileri desteklemeyen sistemlerde öğesinin gerekir.

Dosyanın bir bölümünü başka bir işlem tarafından kilitlendi ve kilitli bölümüne yazma işlemi çakışıyor, bu işlev başarısız olur.

Farklı olarak, MS-DOS işletim sistemi, Windows NT sıfır bayt boş yazma işlemi belirten olarak yazmak için yorumlar ve WriteFileGather değil kesecek veya dosyayı genişletir. Kes veya bir dosyayı genişletmek için SetEndOfFile işlevini kullanın.

Durum

Windows NT 4.0 Service Pack 2, Windows NT altında çalışan SQL Server için bir performans geliştirici olarak davranan yeni bir arabirim kullanılmaya başlandı. Bu geliştirme, dağılım/toplama ve giriş/çıkış işlevselliği içerir.

Windows NT 4.0 için en son hizmet paketini elde etme hakkında ek bilgi için Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
152734En son Windows NT 4.0 hizmet paketi nasıl elde edilir (Bu bağlantı, bir kısmı veya tamamı İngilizce olan içeriğe işaret edebilir.)

Özellikler

Makale numarası: 160606 - Last Review: 1 Şubat 2014 Cumartesi - Gözden geçirme: 1.1
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Windows NT Workstation 4.0 Developer Edition
  • Microsoft Windows NT Server 4.0 Standard Edition
Anahtar Kelimeler: 
kbnosurvey kbarchive kbmt kbnetwork KB160606 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:160606

Geri Bildirim Ver

 

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