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 |
---|
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 |
---|
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=T–F– 500 |
x 64 veya IA643 |
F=Number of crawl ranges* 10 * 8 |
M=T–F– 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.
Ayrıca bkz.