Aracılığıyla paylaş


BIRLEŞTIRME ekstresi performansı en iyi duruma getirme

Içinde SQL Server 2008, birden çok veri işleme dili (DML) işlemleri tek bir gerçekleştirebileceğiniz deyim BIRLEŞTIRMEYI kullanarak deyim. Örneğin, iki tablo ekleme, güncelleştirme veya temel farklar diğer bir tabloda bulunan bir tablodaki satırların silinmesi eşitlemeye gerekebilir.Genellikle, bu saklı yordam veya tek tek INSERT, UPDATE ve DELETE deyimlerini içeren bir toplu iş yürütülerek yapılır.Ancak, kaynak ve hedef tablodaki verilerin değerlendirilir ve birden çok kez; her biri için en az bir kez işlenir yani deyim.

BIRLEŞTIRME deyimini kullanarak, tek tek DML deyimlerini, tek bir deyim ile değiştirebilirsiniz.Operasyonlar, kaynak ve hedef tablodaki verilerin işlenme sayısını en aza tek bir deyim içinde bu nedenle, gerçekleştirilir, çünkü bu sorgu performansını iyileştirebilir.Ancak, performans artışı doğru dizinleri birleştirme ve diğer konuları yere sahip bağlıdır.Bu konu, kullanırken en iyi performansı sağlamak amacıyla en iyi uygulama önerilerini sağlar BİRLEŞTİRME ekstresi.

En iyi uygulamalar dizini

BIRLEŞTIRME deyim performansını artırmak için , aşağıdaki dizin yönergeleri öneririz:

  • Birleştirme sütunlarında kaynak dizin oluşturma tablo benzersiz ve covering olmasıdır.

  • Hedef birleştirmek sütunlarda benzersiz bir kümelenmiş dizin oluşturma tablo.

Bu dizinler, birleştirmek anahtarlarının benzersiz olması ve tablolardaki veriler sıralanır emin olun.sorgu iyileştiricisi bulun ve yinelenen satırları işleme ek doğrulama gerçekleştirmek gerekli değildir ve ek sıralama işlemi gerekli olduğundan, sorgu performansı artırıldı.

Örneğin, aşağıdaki deyim, kaynak tablo BIRLEŞTIR dbo.Purchases, hedef tablonun ve dbo.FactBuyingHabits, sütunların birleştirilir ProductID ve CustomerID. Bu deyim performansını artırmak için , benzersiz veya birincil anahtar dizinini oluşturacak (kümelenmiş veya kümelenmemiş) üzerindeki ProductID ve CustomerID sütunlarda dbo.Purchases Tablo ve kümelenmiş dizin ProductID ve CustomerID sütunlarda dbo.FactBuyingHabits TABLO. Bu tablolar oluşturmak için kullanılan kodu görüntülemek için bkz: Ekleme, güncelleştirme ve BIRLEŞTIRME kullanarak veri silme.

En iyileme işlemleri birleştirmek

birleştirmek deyim performansını ve sağlamak için doğru sonuçlar elde edilen, aşağıdaki yönergeleri birleştirmek öneririz:

  • Yalnızca, arama koşulu belirleme ON <merge_search_condition> Veri kaynak ve hedef tablolardaki eşleşen ölçütleri belirleyen yan tümce. Diğer bir deyişle, yalnızca hedef sütunlarından belirtin tablo, kaynağın karşılık gelen sütunları karşılaştırılır tablo.Sabit gibi diğer değerlere karşılaştırmaları dahil etmeyin.

Kaynak veya hedef tablodaki satırlara filtre için , aşağıdaki yöntemlerden birini kullanın.

  • Satır uygun olan WHEN süzme için arama koşulu belirleme yan tümce.Örneğin, WHEN NOT MATCHED AND S.EmployeeName LIKE 'S%' THEN INSERT....

  • Kaynak veya hedef Süzülen satırları döndüren bir görünüm tanımlamak ve görünümü, kaynak veya hedef tablo olarak başvuru.Görünümün Hedef tabloda tanımlanır, herhangi bir eylem, karşı görünümlerini güncelleştirmek için gerekli koşulları yinelenip yinelenmeyeceği.Bir görünüm kullanarak veri güncelleştirme hakkında daha fazla bilgi için bkz: Bir görünümü kullanarak verileri değiştirme.

  • ILE kullanın. <Sık kullanılan tablo ifade> Kaynak veya hedef tablodaki satırlara filtre yan tümce. Bu yöntem ON yan tümcesinde ek arama ölçütleri belirtmek için benzer ve yanlış sonuçlar oluşturabilir.Bu yöntem kullanmaktan kaçının veya uygulamadan önce sınamanız önerilir.

Daha fazla bilgi için bkz: Ekleme, güncelleştirme ve BIRLEŞTIRME kullanarak veri silme.

Birleşimler'ın sorgu iyileştirme

birleştirmek işlemi birleştirmek deyimindeki deyim içinde bir birleştirmek aynı şekilde getirilmiştir.Diğer bir deyişle, ne zaman SQL Server birleştirmeler, işler sorgu iyileştiricisi birleştirmek işlemi en verimli yöntem (dışında birkaç olasılıktan) seçer. Birleşimler hakkında daha fazla bilgi için bkz: Temelleri katılın. ve Gelişmiş Query kavramları ayarlama. Kaynak ve hedef benzer boyutu olan ve daha önce 'Dizini en iyileme işlemleri' bölümünde açıklanan dizin yönergeleri, kaynak ve hedef tablo için uygulanan bir birleştirmek birleştirmek en etkin sorgu planını işleçtir.Bunun nedeni, her iki tabloda bir kez taranır ve verileri sıralamak gerek olmasıdır.Kaynak hedef küçük olduğunda tablo, bir iç içe geçmiş döngüler işleç tercih edilir.

Belirterek, belirli bir birleştirmek kullanımını zorlayabilir OPTION (<query_hint>) birleştirmek yan tümcende deyim. Bu birleştirmek türünü dizinleri kullanmadığından, karma birleştirmek gibi bir sorgu ipucu birleştirmek deyimleri için kullanmamanız önerilir.Sorgu ipuçları hakkında daha fazla bilgi için bkz: Sorgu ipuçları (Transact-SQL). Aşağıdaki örnek, iç içe geçmiş bir döngü birleştirmek SEÇENEĞINI belirtir yan tümce.

Parameterization en iyi yöntemler

Parametreler olmadan, bir SELECT, INSERT, UPDATE veya DELETE deyim gerçekleştirildiğinde, SQL Server sorgu iyileştiricisi deyim dahili parameterize seçebilirsiniz. Bu sorguda bulunan tüm hazır bilgi değerleri ile parametrelerini yerine başka anlamına gelir.Örneğin, deyim INSERT dbo.MyTable (Col1, Col2) VALUES (1, 10), dahili olarak uygulanabilir INSERT dbo.MyTable (Col1, Col2) VALUES (@p1, @p2). Adı verilen bu işlem, Basit parameterization, ilişkisel altyapı yeni bir SQL deyimi, önceden derlenmiş yürütme planları ile'eşleşen yeteneğini artırır.Sorgu derleme ve yeniden sıklığı sınırlı olduğundan sorgu performansı geliştirilmiş.sorgu iyileştiricisi için BIRLEŞTIRME ifadeleri basit parameterization işlemi için geçerli değildir.Bu nedenle, hazır bilgi değerleri içeren BIRLEŞTIRME ifadeleri değil tek tek INSERT yaný sýra, UPDATE gerçekleştirmek veya BIRLEŞTIRME deyim yürütüldüğünde, her saat yeni bir plan derlenmiş olduğundan ifadeleri DELETE.

Sorgu performansını artırmak için , aşağıdaki yönergeleri parameterization öneririz:

  • Tüm hazır bilgi değerleri parameterize ON <merge_search_condition> yan tümce ve WHEN yan tümceleri ', BIRLEŞTIRME deyim. Örneğin BIRLEŞTIRME katabilirler deyim içine uygun giriş parametreleriyle hazır bilgi değerleri değiştirme saklı bir yordam.

  • deyim parameterize olamaz, Tür TEMPLATE bir plan kılavuz oluşturmak ve planı kılavuzda PARAMETERIZATION ZORLANMıŞ sorgu ipucu belirtin.Daha fazla bilgi için bkz:Plan Kılavuzları'nı kullanarak sorgu Parameterization davranışı belirleme.

  • BIRLEŞTIRME ifadeleri, veritabanını sık sık çalıştırılır, FORCED için veritabanı üzerinde PARAMETERIZATION seçeneği ayarı göz önünde bulundurun.Bu seçenek ayarlarken dikkatli olun.Bir veritabanı düzey ayarı PARAMETERIZATION seçenektir ve etkileri nasıl tüm sorgular veritabanına göre işlenir.Daha fazla bilgi için bkz:Zorlanmış Parameterization.

TOP yan tümce en iyi yöntemler

Birleştirmede deyim, TOP yan tümce belirtir veya yüzde kaynak tablo ve hedef tablonun birleştirilen sonra etkilenen satırların ve sonrasında bir ekleme, geçerli olmayan bir satır güncelleştirme ya da eylem silmek kaldırılır.TOP yan tümce daha birleştirilen satır sayısı, belirtilen değere azaltır ve ekleme, güncelleştirme ve silme eylemleri sıralanmamış bir biçimde birleştirilen kalan satırlara uygulanır.Diğer bir deyişle, satırları WHEN yan tümcelerini tanımlanan eylemler arasında dağıtılmış hiçbir sipariş yok.Örneğin, TOP (10), 10 satır etkiler; bu satırlar 7 güncelleştirildi ve 3 eklenen ya da 1 silinebilir belirterek, 5 güncelleştirildi, ve 4 vb. eklenir.

Veri düzenleme dili (DML) işlemleri üzerinde büyük bir TOP yan tümce kullanan daha yaygındır tablo toplu.TOP yan tümce, bu amaç için BIRLEŞTIRME deyiminde kullanırken, aşağıdaki etkilerini anlamak önemlidir.

  • G/Ç performansı etkilenebilir.

    BIRLEŞTIRME deyim, kaynak ve hedef tablo bir tam bir tablo taraması gerçekleştirir.Toplu işler olarak işlem bölme, toplu iş gerçekleştirilen yazma işlemlerinin sayısını azaltır; ancak, her toplu iş, kaynak ve hedef tablo bir tam bir tablo taraması gerçekleştirir.Sonuç okuma aktivite, sorgu performansını etkileyebilir.

  • Yanlış sonuçlar ortaya çıkabilir.

    Tüm birbirini izleyen toplu yeni bir satır ya da yanlış da yinelenen satırlar tartget ekleme gibi istenmeyen bir davranış hedef emin olmak önemlidir tablo oluşabilir.Kaynak tabloyu hedef toplu iş iş işlemde değil, ancak genel hedef tabloda olan bir satır bulunduğunda bu durum oluşabilir.

    Doğru sonuçlar sağlamak için :

    • Varolan hedef satırların hangi kaynak satırları etkiler ve genuinely yeni olan belirlemek için ON yan tümcesini kullanın.

    • ZAMAN içinde ek bir koşulunu MATCHED yan tümce, hedef satırdaki zaten önceki bir toplu iş tarafından güncelleştirilip güncelleştirilmediğini belirlemek için.

    TOP yan tümce bu yan tümceleri uygulandıktan sonra yalnızca uygulandığından, her yürütme genuinely eşleşmeyen bir satır ekler veya varolan bir satırı güncelleştirir.Aşağıdaki örnek, bir kaynak ve hedef tablo oluşturur ve sonra hedef toplu iş iş işlemleri değiştirmek için TOP yan tümce kullanarak doğru yöntem sunar.

    Aşağıdaki örnek, TOP yan tümce uygulamak için yanlış bir yöntem gösterir.Denetimi is_current sütun birleştirmek koşulu kaynak tablo ile belirtilir. Yani, "bir istenmeyen sonuçlanan sonraki toplu iş iş işindeki eşleşti.", işlem ekleme gibi toplu iş iş işlemde kullanılan bir kaynak satırı kabul edilecektir.

    Aþaðýdaki örnek, yanlış bir yöntem de gösterir.Toplu iş için okuma satır sayısını sınırlamak için ortak bir tablo ifade (CTE) kullanarak, dışında biri tarafından TOP(1) seçili olan hedef satır eşleşti tüm kaynak satır "eşleşen yok", bir istenmeyen ekleme işlemi sonuçlanan ele.Buna ek olarak, bu yöntem, yalnızca güncelleştirilen satır sayısını sınırlar; her toplu iş iş iş tüm "eşleşmeyen" kaynak satırları eklemek yeniden deneyecek.

Toplu yükleme en iyi yöntemler

BIRLEŞTIRME deyim, verimli bir şekilde yükleme veri kaynağı veri dosyasından tablo kaynak olarak OPENROWSET(BULK…) yan tümce belirterek hedef tabloya toplu olarak kullanılabilir.Bunu yaptığınızda, dosyanın tamamını tek bir toplu iş işlenir.

Toplu mektup birleştirme işlemi performansını artırmak için , aşağıdaki yönergeleri öneririz:

  • Birleştirme sütunları hedef kümelenmiş dizin oluşturmak tablo.

  • ORDER ve UNIQUE ipuçları OPENROWSET(BULK…) yan tümcesinde kaynak veri dosyasını nasıl sıralanır belirtmek için kullanın.

    Varsayılan olarak, toplu işlem veri dosyasını sıralanmamış varsayılmıştır.Bu nedenle, kaynak verileri için kümelenmiş dizin hedef göre sıralanan önemlidir tablo ve ORDER ipucu, böylece sorgu iyileştiricisi daha verimli bir sorgu planı oluşturabilir, siparişi belirtmek için kullanılır.Ipuçları, çalışma zamanında doğrulandığı; veri akışı için belirtilen ipuçlarını uyumlu değilse, bir hata ortaya çıkar.

Bu yönergeleri birleştirmek anahtarlarının benzersiz olması ve hedefi kaynak dosyadaki verileri sıralama düzeni düzenini eşleşen sağlamak tablo.Ek sıralama işlemi gerekli değildir ve gereksiz veri kopyaları gerekli olduğundan, sorgu performansı artırıldı.Aşağıdaki örnekte, toplu yükleme verileri için BIRLEŞTIRME deyimini kullanır. StockData.txt, düz dosyaya, hedef tablo dbo.Stock. Üzerinde birincil anahtar kısıtlaması tanımlama StockName Hedef tablo, kümelenmiş dizin kaynak verileri için kullanılan bir sütun oluşturulur. ORDER ve UNIQUE ipuçları uygulanan Stock Kümelenmiş dizin anahtar sütunu Hedef tablosundaki eşleştiren veri kaynağındaki sütun.

Bu örnek çalıştırmadan önce klasör C:\SQLFiles\ StockData.txt' adlı bir metin dosyası oluşturun.Dosya, iki veri sütunları, virgülle ayrılmış olmalıdır.Örneğin, aşağıdaki verileri kullanın.

Alpine dağ bisikleti, 100

Fren kümesi, 22

Cushion, 5

Sonra klasör C:\SQLFiles\ BulkloadFormatFile.xml' adlı xml biçimli bir dosya oluşturun.Aşağıdaki bilgileri kullanın.

<? xml sürüm = "1.0"?>

<BCPFORMAT xmlns="https://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-örnek">

<KAYIT>

<ALAN KIMLIĞI "1" xsi: type = "CharTerm" SONLANDıRıCı = = "," MAX_LENGTH "25" = />

<ALAN KIMLIĞI "2" xsi: type = "CharTerm" SONLANDıRıCı = "\r\n" MAX_LENGTH = "5" = />

</ KAYDET>

<SATIR>

<SÜTUN KAYNAK "1" NAME = "Stok"'xsi: type = "SQLNVARCHAR" = />

<SÜTUN KAYNAK "2" NAME = "Delta"'xsi: type = "SQLSMALLıNT" = />

</ SATIR>

</ bcpformat>

Ölçme ve Tanılama performans BIRLEŞTIRME

Ölçme ve BIRLEŞTIRME ekstrelerinin performans tanılama yardımcı olmak, aşağıdaki özellikler kullanılabilir.

  • Use birleştirme stmt sayacısys.dm_exec_query_optimizer_info BIRLEŞTIRME raporlardan olan sorgu iyileştirme sayısını döndürmek için dinamik Yönetimi.

  • Use merge_action_type özniteliğisys.dm_exec_plan_attributes dinamik yönetimi işlev, bir mektup BIRLEŞTIRME işleminin sonucu olarak kullanılan, tetiğin yürütme planı türünü döndürmek için deyim.

  • SQL izleme, diğer veri işleme dili (DML) deyimleri için yaptığınız biçimde BIRLEŞTIRME raporu için sorun giderme verilerini toplamak için kullanın.Daha fazla bilgi için bkz:SQL izleme tanıtma.