Kesme / büyük uçtan sonra dizini yeniden oluşturmalı mıyım?


10

Yeni veri eklemeden önce (diğer tablolar, hesaplamalar vb. Verileri temel alarak), her birinde yaklaşık 1.75M satır içeren bazı tabloları kesen saklı bir yordam var.

Temel taslak çok basit:

  • Tabloları Kes
  • Her seferinde yaklaşık 75.000 'grup' halinde 1.75M satır ekleyin.

Bu süreçte herhangi bir zamanda açıkça dizinleri yeniden oluşturmak gerekir merak ediyorum? Örneğin

  • Tabloları Kes
  • ALTER INDEX ALL ON xxx REBUILD WITH (FILLFACTOR=90) [Veya benzeri]
  • 1,75 milyon satır ekle

ya da belki

  • ALTER INDEX ALL ON xxx DISABLE
  • Tabloları Kes
  • 1,75 milyon satır ekle
  • ALTER INDEX ALL ON xxx REBUILD WITH (FILLFACTOR=90) [Veya benzeri]

Herhangi bir yardım takdir ... bir DBA değil - DB oldukça iyi bilen bir Dev daha doğru!


Tablo yapısı, bugün mevcut olan dizinler ve eklenen verilerin görünümü hakkında daha fazla bilgi (belirli bir sırada mı? Bu kümelenmiş dizinle hizalanıyor mu?) Yardımcı olacaktır. Ayrıca bu işlem tamamlanıncaya kadar bu tablo kullanılamaz mı? Toplu içe aktarma seçenekleri olduğunu bilmek güzel.
Mike Walsh

Belki de tablo ekini kısaltmalı ve ihtiyacınız olup olmadığını görmek için dizin parçalanmanızın ne olduğuna bir göz atmalısınız.
Zane

v: 2008 Standardı. Kaynak veri, csv, excel, Oracle ve diğer SQL db'lerden bu veri yüklemelerinden önce çoklu aşama tablolarıdır. Tablo yapılarının tümü bu aşamada aynıdır: 6 karakterlik ID, 3 karakterlik kod, 10 sütun ondalık (20,5). Birincil anahtar ID + Kod'dur. Veri üzerinden yüklenen insert intove şu anda bir order bycümle yok , ama yardımcı olur, bunu ekleyebilir miyim? Kimlik ve Kod da ayrı olarak dizine eklenir.
BlueChippy

Yanıtlar:


6

Bu tür soruların çoğunda olduğu gibi, duruma bağlıdır. İlgili tüm dizinler için verileri "doğru" sırayla eklemeniz pek olası değildir; bu, tüm bu dizinlerin ekleme işlemi sırasında çok fazla sayfa bölünmesiyle karşılaşacağı anlamına gelir. Öyleyse, kümelenmiş dizin sırasına eklediğinizi varsayalım. Kümelenmemiş tüm dizinleri devre dışı bırakabilir, kesebilir, ekinizi yapabilir ve sonra kümelenmemiş tüm dizinlerinizi yeniden oluşturabilirsiniz. Tabii ki, her iki yaklaşımı denemek, arkasındaki teori ne olursa olsun gerçeğini daha hızlı söyleyecektir. :)


1

Tüm dizinler etkinken Plan Basic yavaş olabilir ve parçalanmaya neden olabilir.

ALTER INDEX REBUILD, kesilmiş ve bu nedenle boş bir tabloda hiçbir amaca hizmet etmez, bu nedenle Plan A'nızı değiştirmeniz gerekir.

  • KESILMESINDEN
  • Ekle
  • ALTER ENDEKSİ YENİLEME

Yavaş olabilir, ama en azından keskin endeksler alıyorsunuz.

Plan B iyidir. Üçünü de test edin ve hangisinin en hızlı olduğunu ve hangisinin en az dizin parçalanmasını verdiğini görün. Sonra yeniden inşa etmeye değer olup olmadığına karar verin.

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.