Tam metin dizinlerini performansını
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ı etkilenir.
Bu Konuda
Performans sorunlarının ortak nedenleri
Tam metin dizinlerini performansını ayarlama
Tam yerleştirme performans sorunlarını giderme
Filtreler nedeniyle dizin performans sorunlarını giderme
Performans sorunlarının ortak nedenleri
Azaltılmış tam metin dizin oluşturma performansını ana donanım-özkaynak sınırları nedeni:
cpu kullanımına göre filtre arka plan programı işlemi (fdhost.exe) barındırmak, ya da SQL Serversüreci (sqlservr.exe) yüzde 100'e yakın, cpu tıkanıklık.
Ortalama disk-Bekleyen kuyruk uzunluğu iki katından fazla disk kafa sayısı ise, disk üzerinde bir tıkanıklık olduğunu. Ayrı tam metin kataloglar oluşturmak için birincil geçici olduğunu SQL Serververitabanı dosyaları ve günlükleri. Günlükleri veritabanı dosyaları ve tam-metin katalogları ayrı disklerde koydu. Satın alma daha hızlı diskleri ve RAID kullanma da dizin oluşturma performansını artırmaya yardımcı olabilir.
Fiziksel bellek (3 gb Limitli) sıkıntısı ise, bellek performans sorunu olabilir. Tüm sistemlerde olası fiziksel bellek kısıtlamaları ve 32-bit sistemlerde tam metin dizinlemesi aşağı sanal bellek baskısı yavaşlatabilir.
[!NOT]
Yılında başlayan SQL Server 2008, tam metin alt yapısı sqlservr.exe parçası olduğundan tam metin altyapısı awe belleği kullanabilir.
Sistem hiçbir donanım sorunları varsa, tam metin arama dizin oluşturma performansını çoğunlukla aşağıdakilere bağlıdır:
Ne kadar sürede SQL Servertam metin toplu işlemi oluşturmak için.
Filtre arka plan, bu toplu işlemi nasıl hızla tüketebilir.
[!NOT]
Tam bir popülasyon, artımlı, Manuel ve otomatik değişiklik izleme popülasyon daha hızlı ulaşmak 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 değil.
Nüfusu tamamlandığında son mektup birleştirme işlemi bir ana tam metin dizini birlikte dizin parçaları birleştiren tetiklenir. Bu Gelişmiş Sorgu performans beri yalnızca ana dizin dizin parçaları bir dizi yerine sorgulanacak ihtiyacı ve daha iyi istatistikler puanlama ilgi sıralaması için kullanılabilir olur. Çünkü büyük miktarda veri yazılı olmalı ve dizin parçaları birleştirildiğinde, gelen sorguları engellemez ama okumak I/O yoğun, ana birleştirme olabileceğini de unutmayın.
Önemli |
---|
Büyük miktarda veri birleştirme ana uzun süren bir işlem, işlem günlüğünün kesilmesi sırasında denetim noktası geciktirerek oluşturabilirsiniz. Bu durumda tam kurtarma modeli altında hareket günlüğü önemli ölçüde büyümesi. En iyi yöntem, tam kurtarma modeli kullanan bir veritabanı içinde büyük bir tam metin dizini yeniden düzenleme önce işlem uzun süren işlem için yeterli alan içerdiğinden emin olun. Daha fazla bilgi için, bkz. İşlem günlüğü dosyasının boyutunu yönetme. |
[YUKARI]
Tam metin dizinlerini performansını ayarlama
Tam metin dizinlerini performansını en üst düzeye çıkarmak için aşağıdaki en iyi yöntemleri uygulayın:
Tüm işlemcileri veya çekirdek en kullanmak için sp_configure'max full-text crawl ranges' sistem CPU sayısı. Bu yapılandırma seçeneği hakkında daha fazla bilgi için bkz: en çok tam metin gezinme aralığı sunucu yapılandırma seçeneği.
Temel tablo kümelenmiş bir dizin olduğundan emin olun. Bir tamsayı veri türü için ilk sütun kümelenmiş dizin kullanın. Kümelenmiş dizin ilk sütun GUID kullanmaktan kaçının. Kümelenmiş dizin üzerinde multi-range nüfusu en yüksek nüfus hızını üretebilir. Sütun tam metin anahtarını bir tamsayı veri türü olarak hizmet veren öneririz.
Temel tablo istatistiklerini kullanarak güncelleştirmek update STATISTICS deyimi. Daha da önemlisi, kümelenmiş dizin veya tam bir popülasyon için tam metin anahtarını üzerinde istatistikleri güncelleştirin. Bu multi-range nüfusu iyi bölümleri tablo oluşturmak için yardımcı olur.
İkincil dizin oluşturma bir timestampartımlı popülasyon performansını artırmak istiyorsanız sütun.
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 memoryfdhost.exe işlemi ve işletim sistemi kullanmak için yeterli bellek bırakmak değer. Daha fazla bilgi için bkz "Filtre arka plan programı ana bilgisayar işlemi (fdhost.exe), bellek gereksinimleri hesaplanıyor" Bu konudaki.
[YUKARI]
Tam yerleştirme 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 dizinlerini doldurma.
Tam yerleştirme performans tatmin edici değilse, sorun giderme aşağıdaki sırayı takip edilmesi önerilir.
Fiziksel bellek kullanımı
Bir tam metin popülasyon sırasında fdhost.exe veya bellek düşük çalıştırmak veya yetersiz bellek sqlservr.exe mümkündür. Tam metin gezinme günlüğü fdhost.exe sık sık yeniden başlatılıyor veya hata kodu 8007008 bu işlemlerden biri demek iade edilen, bellek yetersiz çalışan gösterir. Fdhost.exe dökümleri, özellikle de büyük multi-cpu üretiyor, bilgisayarlar çalışan 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:
Sıfır, tam bir popülasyon sırasında kullanılabilir fiziksel bellek miktarı ise, SQL Serverarabellek havuzu sistemi fiziksel belleğin çoğunu tüketen.
Sqlservr.exe işlemi, tüm kullanılabilir bellek arabellek havuzu, yapılandırılmış en fazla sunucu belleği kadar kapmak çalışır. Eğer max server memoryTahsisat ise çok büyük, bellek içi koşulları ve paylaşılan bellek ayırma hatası fdhost.exe işlemi oluşabilir.
[!NOT]
Multi-cpu bilgisayarda tam metin popülasyon sırasında fdhost.exe veya sqlservr.exe çekişme için arabellek havuzu oluşabilir. Paylaşılan bellek nedenleri toplu deneme, bellek dayak ve dökümleri fdhost.exe işlemi tarafından elde edilen eksikliği.
Ayarlayarak bu sorunu çözebilir max server memorydeğeri SQL Serverarabellek havuzu uygun. Daha fazla bilgi için bkz "Filtre arka plan programı ana bilgisayar işlemi (fdhost.exe), bellek gereksinimleri hesaplanıyor" Bu konudaki. Tam metin dizinlemesi için kullanılan toplu iş boyutunu azaltmaya da yardımcı olabilir.
Bir disk belleği sorunu
Bir sistemde, kısıtlı büyüme, küçük bir sayfa dosya gibi yetersiz sayfa dosya boyutunu fdhost.exe veya yetersiz bellek sqlservr.exe de neden olabilir.
Gezinme günlükleri herhangi bellekle ilgili hataları belirtmezseniz, performans nedeniyle aşırı disk belleği yavaş olasıdır.
[YUKARI]
Filtre arka plan programı ana bilgisayar işlemi (fdhost.exe) bellek gereksinimleri hesaplanıyor
Nüfusu fdhost.exe işlemi için gereken bellek miktarı 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 (bayt cinsinden) miktarını kabaca aşağıdaki formülü kullanarak 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 64 bilgisayarlar, toplam fiziksel bellek bağlı için 16 mb |
max_outstanding_isms |
x 86 bilgisayarlar için 25 x 64 bilgisayarlar için 5 |
Aşağıdaki tabloda fdhost.exe bellek gereksinimlerini tahmin etme hakkında yönergeler sunar. Bu tablodaki formüller aşağıdaki değerleri kullanın:
F, tahmini bellek (mb) olarak fdhost.exe tarafından gerekli olduğu.
T, olan toplam fiziksel bellek sistemi (mb) kullanılabilir.
M, en iyi olduğu max server memoryayarı.
Önemli |
---|
Formüller hakkında temel bilgi için bkz: 1, 2, ve 3, aşağıda. |
Platformu |
Fdhost.exe MB bellek gereksinimleri hesaplanıyor —F1 |
En fazla sunucu belleği hesaplamak için formül —M2 |
---|---|---|
x 86 |
F = Number of crawl ranges * 50 |
M = minimum(T, 2000) – F – 500 |
x64 |
F = Number of crawl ranges * 10 * 8 |
M = T – F – 500 |
1 Birden fazla tam yerleştirme Sürüyor, her fdhost.exe bellek gereksinimleri hesaplamak ayrı ayrı olarak F1, F2, ve benzeri. Then calculate M as T – sigma**(Fi)**.
2 500 mb ise sistemde başka işlemler tarafından gerekli bellek tahmini. Bu değer, sistem ek iş yapıyor, buna göre artırın.
3 . ism_sizex 64 platformları için 8 mb olduğu varsayılır.
Örnek: fdhost.exe bellek gereksinimleri hesaplanıyor
Bu örnek, 8 gm 4 çift çekirdekli işlemci ve ram içeren bir AMD64 bilgisayar içindir. İlk hesaplama tahminleri fdhost.exe— tarafından gerekli bellekF. Tarama aralığı sayısı 8.
F = 8*10*8=640
İleri hesaplama için en iyi değeri elde max server memory—M. To toplam fiziksel bellek içinde mb bu sistemde kullanılabilir —T— olduğunu 8192.
M = 8192-640-500=7052
Örnek: en fazla sunucu belleği ayarlama
Bu örnek sp_configure ve yeniden Transact-SQL ayarlamak için ifadeler max server memoryiçin hesaplanan değeri MYukarıdaki örnekte, 7052:
USE master;
GO
EXEC sp_configure 'max server memory', 7052;
GO
RECONFIGURE;
GO
En fazla sunucu belleği yapılandırma seçeneğini ayarlamak için
[YUKARI]
Can azaltmak cpu tüketim faktörleri
Ortalama cpu tüketimi yaklaşık yüzde 30 düşük olduğu zaman tam yerleştirme performansını en uygun olmadığını bekliyoruz. Bu bölümde, cpu tüketimi etkileyen bazı faktörler ele alınmaktadır.
Sayfalar yüksek bekle
Sayfa bekleme süresi yüksek olup olmadığını öğrenmek için aşağıdaki yürütme Transact-SQLdeyimi:
Execute SELECT TOP 10 * FROM sys.dm_os_wait_stats ORDER BY wait_time_ms DESC;
Aşağıdaki tabloda, faiz burada bekleme türlerini açıklar.
Türü bekleyin
Açıklama
Olası çözüm
PAGEIO_LATCH_SH (_ex veya _up)
Bu bir GÇ sıkışıklık gösterebilir, bu durumda, genellikle de yüksek ortalama disk sırası uzunluğu görürdünüz.
Tam metin dizini farklı bir disk üzerinde farklı bir filegroup taşıma GÇ sıkışıklık azaltılmasına yardımcı.
pagelatch_ex (veya _up)
Bu aynı veritabanı dosyasına yazma çalıştığınız iş parçacıkları arasında çekişme çok gösterebilir.
Fulltext dizin bulunduğu filegroup için dosyaları ekleme gibi çekişme hafifletmeye yardımcı olabilir.
Daha fazla bilgi için, bkz. sys.dm_os_wait_stats (Transact-sql).
Temel tablo tarama yetersizlikler
Tam bir popülasyon toplu işler üretmek için temel tablo tarar. Bu tablo tarama aşağıdaki senaryolarda verimsiz olabilir:
Temel tablo tam metin dışarı satır sütun yüksek oranda varsa toplu işler üretmek için temel tablo dizine, tarama darboğaz olabilir. Bu durumda, daha küçük veri satır kullanarak hareket varchar(max)ya nvarchar(max)yardımcı olabilir.
Temel tablo çok parçalanmış, tarama verimsiz olabilir. Out-of-satır veri ve dizin parçalanma hakkında daha fazla bilgi için bkz: sys.dm_db_partition_stats (Transact-sql)ve sys.dm_db_index_physical_stats (Transact-sql).
Parçalanma 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şturma.
[YUKARI]
Filtreler nedeniyle dizin performans sorunlarını giderme
Bir tam metin dizini doldururken, iki tür filtre tam metin altyapısı kullanır: çok iş parçacıklı ve tek iş parçacıklı. Bazı belgeler, gibi MicrosoftWord belgeleri, çok iş parçacıklı bir filtre kullanarak filtre. Adobe Acrobat taşınabilir belge biçimi (pdf) belgeleri gibi diğer belgeler, tek iş parçacıklı bir filtre kullanarak filtre uygulanır.
Güvenlik nedenleriyle, filtreleri filtre arka plan programı ana bilgisayar işlemlerini tarafından yüklenir. Sunucu örneği, tüm parçacıklı filtreler ve tüm tek iş parçacıklı filtre için bir tek iş parçacıklı işlem parçacığı işlemi kullanır. Ne zaman bir çok iş parçacıklı filtresini kullanan bir belge, tek iş parçacıklı bir filtre kullanan katıştırılmış bir belge içeren, tam metin altyapısı katıştırılmış bir belge için bir tek iş parçacıklı işlem başlattı. Örneğin, bir pdf belgesini içeren bir Word belgesini karşılaşıyor, tam metin altyapısı Word içerikten çok iş parçacıklı işlem kullanır ve pdf içeriği için bir tek iş parçacıklı işlem başlattı. Tek iş parçacıklı bir filtre de bu ortamda çalışmayabilir ancak ve filtre uygulama işlemi istikrarsızlaştırmak. Böyle gömme ortak olduğu bazı durumlarda, istikrarsızlaştırma süzme işlemi çöküyor neden olabilir. Bu durumda, tam metin altyapısı için tek iş parçacıklı filtre uygulama işlemi başarısız olan herhangi bir belgeye (örneğin, gömülü pdf içeriği içeren bir Word belgesi) re-routes. Uçuşlarında sık sık oluşuyorsa, bu performansında azalma tam metin dizin oluşturma işleminin sonuçlar.
Bu sorunu gidermek için (bu durumda Word) kapsayıcı belge filtresini tek iş parçacıklı bir filtre olarak işaretle. Belirtilen filtre tek iş parçacıklı bir filtre olarak işaretlemek için filtre kayıt defteri değerini değiştirebilirsiniz. Filtre tek iş parçacıklı bir filtre olarak işaretlemek için ayarlamanız gerekir ThreadingModelkayıt defteri değeri için filtre Daire dişli. Tek iş parçacıklı daireler hakkında daha fazla bilgi için bkz: Beyaz Kağıt anlama ve com iş parçacığı modelleri kullanarak.
[YUKARI]
Ayrıca bkz.
Görevler
Tam metin dizin oluşturma ile ilgili sorunları giderme
Başvuru
sys.dm_fts_memory_buffers (Transact-sql)
sys.dm_fts_memory_pools (Transact-sql)
Kavramlar
Sunucu bellek sunucu yapılandırma seçenekleri
en çok tam metin gezinme aralığı sunucu yapılandırma seçeneği