DB performansını en üst düzeye çıkarmak için, SQL Server 2008'e SSIS üzerinden büyük miktarda veri yüklendikten sonra hangi komutların çalıştırılması gerektiği


11

Boş bir veritabanına test verileri yüklemek için bir SSIS paketi yazdım. Tabloların bazıları çok büyük (~ 700 milyon satır). SSIS paketi tamamlandıktan sonra, veritabanının performansını en üst düzeye çıkarmak için çalıştırmam gereken herhangi bir komut var mı (çırak DBA olarak!)?

Örneğin, yürüttüm, EXEC sp_updatestatsancak hiçbir dizin güncellenmesi gerektiğini bildirdi.

Büyük miktarda veri yüklendikten sonra yapılacaklar listesi var mı veya SQL Server 2008 sadece sizin için bunların hepsini hallediyor mu?

Yanıtlar:


8

Boş bir veritabanına yüklüyorsanız, yükleme sonrasında ek bakım adımları gerektirmemesi için önlem alabilirsiniz / almalısınız. Parçalanma düşmandır, bundan kaçınmaya çalışıyorsunuz.

  • Yüklemeden önce tüm NC dizinlerini bırakın.
  • Yükleme sonrası, her tablo için NC dizinlerini sırayla ekleyin, yani TableA'ya, sonra TableB'ye, sonra da TableA'ya bir dizin eklemeyin. Bunun parçalanma üzerinde bir etkisi yoktur, ancak çok büyük veri kümelerine dizin eklemek için harcanan zamanı artırabilir (tampon havuzu karmaşasını azaltır).
  • Tabloya kümelenmiş dizin düzeninde veri ekleyebiliyorsanız, kümelenmiş dizini yerinde bırakın. Yapamıyorsanız, verileri bir yığına dökün ve kümelenmiş dizin sonrası yüküne yeniden oluşturun.

Aksine kopya daha yapıştırın, ben bir cevap araya koymak @Marian ETL optimizasyonu için referansların çok kapsamlı bir liste doğru işaret edeceğiz Ben BCP üzerinde sorulan soruya . Bunların birçoğu senaryonuz için aynı derecede geçerlidir.


2
İlginçtir, SQLCAT ve SSIS videolarına bağlantıda bulguları hiçbir zaman bir NC indeksi düşürmedi. Sanırım bu yine de "bağlıdır" başka bir durum
billinkc

2
@billinkc, bu sorunun da ifade ettiği boş veritabanı yerine artımlı yükler için değil miydi? Her iki durumda da, SQLCAT testi tipik organizasyonlarda nadiren görülen bir donanım sınıfını içerir.
Mark Storey-Smith

5

Pencerenizin ne kadarına sahip olduğunuza bağlıdır, ancak genellikle istatistikleri güncellemek ve dizinleri yeniden oluşturmak / yeniden düzenlemek, atmak için iyi bir adımdır. Bunun dışında gerçekten yapmanız gereken başka bir şey olmamalı.

İstatistikler, sorgu optimizer'a bir işlemden kaç satırın etkilendiğini söyler ve bu da SQL'e sorgularınızı çalıştırmak için hangi yaklaşımı kullanacağını söyler. Veri eklemek dağıtımın eğilmesine neden olabilir ve otomatik güncelleme modunda istatistiklerin güncellenmesini tetikleyecek yeterli satır eklemediyseniz kılavuzun yardımcı olması gerekir. Pencereniz varsa, istatistik güncelleme bölümünü koru diyorum.

Veriler eklendikçe dizinler parçalanabilir. Yeniden oluşturma veya Yeniden Düzenleme, verilerinize gerçekten erişilirken performansın yükselmesine neden olabilecek bu durumun azaltılmasına yardımcı olur.


4
Dizinler çizgisi boyunca, SQLCAT'in SSIS videolarından birinde , veri büyümeniz>% 100 ise ve tek bir NCI varsa, bunları bırakın ve yeniden oluşturun. % 10'dan fazla ise ve 2+ NCI varsa, bırak ve yeniden oluştur daha iyi performans sağlar.
billinkc

2
Sadece Bill'in yorumunu açıklığa kavuşturmak için - Sanırım öneri damla-yaratma zamanları için Düşürme Dizini, Veri yükünüzü yapın, sonra indeksinizi yeniden oluşturun demek olduğunu söylüyor. sonra yeniden inşa. Ben zaten öyle düşünüyorum :-) ve evet, harika bir nokta, ben + 1 yorum.
Mike Walsh
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.