Performans ayarlama ve tam metin dizinleri iyileştirmesi

Performans için tam metin dizin oluşturma ve tam metin sorguları bellek, disk hızı, cpu hızı ve makine mimarisi gibi donanım kaynakları etkilediği.Tam metin dizin oluşturma performansını düşük ana nedeni donanım kaynak sınırlarını gösterir.

  • cpu kullanımı tarafından filtre arka plan programı işlemi (fdhost.exe) barındıran, ya da SQL Server (sqlservr.exe) işlemi için yüzde 100'e yakın, cpu performans sorunu.

  • Ortalama bekletme disk sırası uzunluğu iki katından fazla sayıda disk kafalarını ise, disk üzerinde performans sorunu vardır.Ayrıdır tam-metin katalogları oluşturmak için birincil geçici çözümü olan SQL Server veritabanı dosyaları ve günlükleri.Günlükleri, veritabanı dosyaları ve tam-metin katalogları ayrı disklerde yerleştirin.Satın alma daha hızlı diskleri ve RAID kullanma de dizin oluşturma performansını artırmaya yardımcı olabilir.

  • Fiziksel bellek (3 gb sınırını) azalması ise, bellek performans sorunu olabilir.Tüm sistemlerde kullanılabilir fiziksel bellek kısıtlamaları ve 32-bit sistemlerde tam metin dizinlemeyi kapalı sanal bellek baskısı yavaşlatabilir.

    Not

    İçinde başlayan SQL Server 2008, tam-metin arama motoru, awe bellek kullanabilir, çünkü tam-metin arama motoru parçasıdır sqlservr.exe.

Sistem hiçbir donanım sorunları varsa, tam metin araması dizin oluşturma performansını çoğunlukla aşağıdakilere bağlıdır:

  • Ne kadar SQL Server oluşturma toplu işlemi tam metin.

  • Filtre arka plan programı, bu toplu işlemi ne kadar çabuk tüketebilir.

Not

Tam popülasyonu artan, el ile ve otomatik değişiklik popülasyon izleme hız elde etmek için donanım kaynaklarını en üst düzeye çıkarmak için tasarlanmamıştır.Bu nedenle, bu ayarlama önerileri için tam metin dizin oluşturma performansını artırmak.

Bir popülasyon tamamlandığında, son birleştirme işlemi ana tam metin dizini dizin parçaları birbirine birleştiren tetiklenir.Bu sonuçlar beri yalnızca ana dizin dizin parça sayısı yerine Sorgulanacak gerekiyor ve daha iyi skor istatistikleri kullanılabilir ilgi sıralaması için geliştirilmiş sorgu performans.Büyük miktarda veri yazılmış ve gerekir ne zaman dizini parça birleştirilir, yok olsa da okumak için ana birleştirme g/Ç yoğunluğuna olabileceğini unutmayın blok gelen sorguları.

Önemli notÖnemli

Asıl büyük miktarda veri birleştirme, işlem günlüğünün kesilmesi sırasında denetim noktası ertelenmesine neden uzun süren bir işlem oluşturabilirsiniz.Bu durum, tam kurtarma modeli altında işlem günlüğü önemli ölçüde büyüme.En iyi yöntem, tam kurtarma modeli kullanan bir veritabanı içinde büyük bir tam metin dizini yeniden düzenleme önce Hareket günlüğünüzün uzun süren işlem için yeterli alan bulunduğundan emin olun.Daha fazla bilgi için bkz: İşlem günlüğü dosyasının boyutunu yönetme.

Tam metin dizinlerini performansını ayarlama

Tam metin dizinleri performansını en üst düzeye çıkarmak için aşağıdaki en iyi yöntemleri uygulayın:

  • To use all processors or cores to the maximum, set sp_configure ‘max full-text crawl ranges’ to the number of CPUs on the system.Bu yapılandırma seçeneği hakkında daha fazla bilgi için bkz: en çok tam metin gezinme aralık seçeneği.

  • Temel tablo kümelenmiş dizin olduğundan emin olun.Kümelenmiş dizin ilk sütun için bir tamsayı veri türünü kullanın.Birincisi GUID'ler kullanmaktan kaçının sütun kümelenmiş dizin.Kümelenmiş dizin üzerinde multi-aralık bir nüfusun en yüksek popülasyon hızını üretebilir.Sütun tam metin olarak hizmet veren öneririz anahtar bir tamsayı veri türü olmalıdır.

  • Temel tablo istatistiklerini kullanarak güncelleştirmek update STATISTICS deyim.Daha da önemlisi, kümelenmiş dizin veya tam metin istatistikleri güncelleştirme anahtar tam bir popülasyon için.Bu tablo iyi bölümler oluşturmak için multi-aralık bir popülasyon yardımcı olur.

  • İkincil dizin oluşturmanıza bir timestamp sütun varsa, istediğiniz performansını artırmakartımlı popülasyon.

  • Tam bir popülasyon büyük multi-cpu bilgisayarda gerçekleştirmeden önce ayarlayarak Arabellek havuzu boyutunu geçici olarak sınırlamak öneririz max server memory değerine bırakın yeterli bellek fdhost.exe işlemi ve işletim sistemi kullanılıyor.Daha fazla bilgi için bkz: "Filtre arka plan programı ana bilgisayar işlemi (fdhost.exe), bellek gereksinimlerini tahmin etme" Bu konuda daha sonra.

Tam popülasyonu performans sorunlarını giderme

Performans sorunlarını tanılamak için tam metin gezinme günlükleri arayın.Gezinme günlükleri hakkında daha fazla bilgi için bkz: Tam metin doldurma (gezinme) hataları giderme).

Tam yerleştirme performansını tatmin edici değilse, sorun giderme aşağıdaki sırayla izlenmesi önerilir.

Fiziksel bellek kullanımı

Tam metinli sırasında popülasyon, fdhost.exe veya sqlservr.exe bellek miktarı azalmaya veya yetersiz bellek olabilir.Tam metin gezinme günlük fdhost.exe sık sık yeniden başlatılıyor veya hata kodu 8007008 bu işlemler gelir döndürülüyor bellek yetersiz çalışıyor gösterir.Fdhost.exe dökümleri, özellikle de büyük multi-cpu oluşturmuyor, bilgisayarlar, onu çalıştırıyor bellek yetersiz.

Not

Tam metin gezinme tarafından kullanılan bellek arabellekleri hakkında bilgi edinmek için bkz: sys.dm_fts_memory_buffers (Transact-sql).

Olası nedenleri şunlardır:

  • Tam bir popülasyon sırasında kullanılabilir fiziksel bellek miktarı sıfırsa, SQL Server Arabellek havuzu sistemi fiziksel belleğin çoğunu tüketen

    Sqlservr.exe işlemi için arabellek havuzu yapılandırılmış en fazla sunucu belleği kadar tüm kullanılabilir bellek yakalayın çalışır.If the max server memory allocation is too large, out-of-memory conditions and failure to allocate shared memory can occur for the fdhost.exe process.

    Not

    Tam metinli sırasında popülasyon 64-yollu IA64 bilgisayar gibi bir çok cpu bilgisayarda Arabellek havuzu bellek için bir Çekişme fdhost.exe veya sqlservr.exe arasında ortaya çıkabilir.Paylaşılan bellek nedenleri toplu iş iş deneme, bellek yıpranmasına ve dökümleri fdhost.exe işlemi tarafından elde edilen eksikliği.

    Yaparak bu sorunu çözebilirsiniz. en fazla sunucu belleği değeri SQL Server arabellek havuzu uygun şekilde.Daha fazla bilgi için bkz: "Filtre arka plan programı ana bilgisayar işlemi (fdhost.exe), bellek gereksinimlerini tahmin etme" Bu konuda daha sonra. Tam metin dizinlemesi için kullanılan toplu iş boyutunu küçültme de yardımcı.

  • Disk belleği sorunu

    Yetersiz sayfa-dosya boyutu, gibi küçük bir sistemde sayfa dosya ile sınırlı büyüme, fdhost.exe veya yetersiz bellek için sqlservr.exe de neden olabilir.

    Gezinme günlükleri herhangi bellekle ilgili hataları belirtmezseniz, sayfalama nedeniyle yavaş çalıştığını olasıdır.

Filtre arka plan programı ana bilgisayar işlemi (fdhost.exe) bellek gereksinimlerini tahmin etme

Bir popülasyon için fdhost.exe işlemi için gereken bellek miktarını esas olarak tam metin gezinme aralıkları kullanır, gelen paylaşılan bellek (ISM) boyutunu ve en fazla sayıda ISM kopyasının bağlıdır.

Filtre arka plan programı ana bilgisayar tarafından tüketilen bellek miktarı (bayt cinsinden) aşağıdaki formülü kullanarak kabaca tahmin edilebilir:

number_of_crawl_ranges * ism_size * max_outstanding_isms * 2

Yukarıdaki formül değişkenlerin varsayılan değerleri aşağıdaki gibidir:

Değişken

Varsayılan değer

number_of_crawl_ranges

CPU sayısı

ism_size

X 86 bilgisayarlar için 1 mb

4 mb, 8 mb veya x toplam fiziksel bellek bağlı 64 bilgisayarlar için 16 mb

max_outstanding_isms

x 86 bilgisayarlar için 25

x 64 bilgisayarlar için 5

Aşağıdaki tablo fdhost.exe bellek gereksinimlerini tahmin etme konusunda yönergeler sunar.Bu formüller tablo aşağıdaki değerleri kullanın:

  • F, bir tahmin bellek (mb) cinsinden fdhost.exe tarafından gerekli olduğu.

  • T, toplam fiziksel bellek (mb) cinsinden sistemde kullanılabilir olduğu.

  • M, hangisinin en iyi olduğunu en fazla sunucu belleği ayarı.

Önemli notÖnemli

Formüller hakkında önemli bilgiler için bkz: 1, 2, ve 3, aşağıdaki.

Platform

Fdhost.exe MB bellek gereksinimleri hesaplanıyor —F1

En fazla sunucu belleği hesaplamak için formül —M2

devre dışı awe ile x 86

F=Number of crawl ranges* 50

M=minimum(T, 2000)–F 500

awe etkinleştirilmiş ile x 86

F=Number of crawl ranges* 50

M=TF 500

x 64 veya IA643

F=Number of crawl ranges* 10 * 8

M=TF 500

1 Birden çok tam yerleştirme sürüyor, her fdhost.exe bellek gereksinimlerini hesaplamak ayrı ayrı olarak F1, F2ve diğerleri.Then calculate M as T**–** sigma**(Fi)**.

2 500 mb ise sistemdeki diğer işlemler tarafından gerekli bellek tahmini.Bu değer, sistem ek iş yaptığını, buna göre artırın.

3 .ism_size kabul olması için 8 mb x 64 platformları.

Örnek: Fdhost.exe bellek gereksinimlerini tahmin etme

Bu örnek 8 gm ram ve 4 çift çekirdekli işlemcilere sahip bir AMD64 için bilgisayardır.İlk hesaplama tahminleri bellek tarafından fdhost.exe— gerekliF.Gezinme aralıkları sayısı 8.

F = 8*10*8=640

The next calculation obtains the optimal value for max server memory—M.The total physical memory available on this system in MB—T—is 8192.

M = 8192-640-500=7052

Örnek: En fazla sunucu belleği ayarlama

This example uses the sp_configure and RECONFIGURE Transact-SQL statements to set max server memory to the value calculated for M in the preceding example, 7052:

USE master;
GO
EXEC sp_configure 'max server memory', 7052;
GO
RECONFIGURE;
GO

İçin küme en fazla sunucu belleği yapılandırma seçeneği

cpu tüketimi azaltan Etkenler

Biz ortalama cpu tüketimi yaklaşık yüzde 30 düşük olduğu zaman tam yerleştirme performansını en iyi olmadığından bekler.Bu bölümde, cpu tüketimi etkileyen bazı Etkenler anlatılmaktadır.

  • Sayfalar yüksek bekle

    Sayfa bekleme saat yüksek olup olmadığını anlamak için aşağıdaki yürütmek Transact-SQL deyim:

    Execute SELECT TOP 10 * FROM sys.dm_os_wait_stats ORDER BY wait_time_ms DESC;
    

    Aşağıdaki tablo faiz burada bekleme türlerini açıklar.

    Türü bekleyin

    Açıklama

    Olası çözüm

    PAGEIO_LATCH_SH (_ex veya _up)

    Bu, bir GÇ performans gösterebilir durum genellikle yüksek ortalama disk sıra uzunluğu da görür.

    Tam metin dizini farklı bir dosya grubu için farklı bir diskte taşıma GÇ sıkışıklık azaltılmasına yardımcı.

    pagelatch_ex (veya _up)

    Bu, çok sayıda aynı yazmaya çalıştığınız iş parçacıkları arasında Çekişme kaynaklanıyor olabilir veritabanı dosyası.

    Full-Text Index bulunduğu dosya grubu dosyaları ekleme gibi çekişme çözmenize yardımcı.

    Daha fazla bilgi için bkz: sys.dm_os_wait_stats (Transact-sql).

  • Temel tablo tarama verimsiz

    Tam bir popülasyon toplu işlemi oluşturmak için temel tablo tarar.Bu tablo tarama aşağıdaki senaryolarda verimsiz olabilir:

    • Temel tablo tam metin sütunları satır dışı yüksek miktarda varsa, toplu işlemi oluşturmak için temel tablo dizine alınmış, tarama engeli olabilir.Bu durum, daha küçük veri içinde satır kullanarak taşıma varchar(max) veya nvarchar(max) olabilir Yardım.

    • Temel tablo çok parçalanmış, tarama verimsiz olabilir.Satır giden veri ve dizin parçalanmasının bilgisayar kullanımı hakkında bilgi için bkz: sys.dm_db_partition_stats (Transact-sql) ve sys.dm_db_index_physical_stats (Transact-sql).

      Parçalanmayı azaltmak için yeniden düzenlemek veya kümelenmiş dizin yeniden oluşturma.Daha fazla bilgi için bkz: Yeniden düzenleme ve dizinler yeniden oluşturuluyor.