Tek bir dosya grubunda bölümleme


10

Veritabanımda bazı çok büyük tablolar var, ama bu verilerin önemli bir yığın "eski".

Kontrolüm dışındaki koşullar nedeniyle, bu "eski" verileri kaldırmama izin verilmiyor. Diğer sınırlama veritabanı değiştiremezsiniz, yani dosya grupları eklemek anlamına gelir. İşlerin şu andaki duruşu, her şey PRIMARYdosya grubunda bulunuyor.

Bu tabloları "yeni", "eski", "arşivlenmiş" ve benzeri gibi birkaç bölüme ayırmayı düşünüyordum. Bu amaçla kullanmak istediğim bir "durum" sütunum var.

Açıklanan senaryo ve sınırlamalar göz önüne alındığında, bölümlemenin burada bir anlamı olup olmadığını merak ediyordum. Diğer bir deyişle, tablom bu şekilde bölümlenmişse, ancak tüm bölümler aynı dosya grubunda bulunuyorsa, SQL Server, temel dosyada "yeni" verilerimin bulunduğu özel alanı bulabilecek ve eski "veriler" alanı?

Başka bir deyişle, verilerimin% 80'inin "eski" olduğunu varsayalım. SQL Server, temel dosyalara% 100 erişim ve "yeni" veri içeren sadece% 20 erişim önlemek için bir mekanizma var mı (tabii ki, WHEREsorgulama bölümünde benim bölümleme sütun belirtmek varsayalım).

Sanırım buna cevap vermek için, bölümlemenin dahili olarak nasıl uygulandığını anlamak gerekir. Herhangi bir göstergeyi takdir ediyorum.

Yanıtlar:


6

Bir tabloyu aynı dosya grubunda bölümlendirmenin iki avantajı vardır:

  1. Büyük bir dizinin bölümlerinin kademeli olarak yeniden oluşturulmasına izin vererek daha verimli bakım sağlar. İnceleme ALTER INDEX [foo] REBUILD PARTITION=nDaha fazla ayrıntı için.
  2. Sorgu bakımını iyileştirmek için bölüm eliminasyonundan ve (muhtemelen) bölüm düzeyi kilitlemesinden yararlanma. Ben bu tartışmak bloguma .

Bölümleme yapıyorsanız aklınızda bulundurmanız gereken birkaç nokta vardır.

  • Tablonuzda kümelenmiş bir dizin varsa (ve gerçekten de olması gerekiyorsa), bölümleme anahtarınızın kümelenmiş dizinin bir parçası olması gerekir .
  • Performans sorunlarını önlemek için bölümlerinizi hizalamanız gerekir. Bu, tüm dizinlerinizin, içerme anahtarı olarak veya dizinin kendisinin bir parçası olarak bölüm anahtarınızı içermesi gerektiği anlamına gelir.
  • Bölümler için dizin yeniden oluşturma SQL Server'ın (2005-2012) geçerli sürümlerinde çevrimdışıdır. Bölümleriniz büyükse ve bölümlere göre yeniden oluşturuyorsanız, bu engelleme sorunlarına yol açabilir.

Uygulamadan önce bölümleme konusunda ayrıntılı araştırmalar yapmanızı öneririm. Kendra Little, başlayabileceğiniz mükemmel bir kaynak listesine sahiptir .


Kümelenmiş dizini bölümlediysem, kümelenmemiş dizinlerin tümü zaten bölümleme sütununu bir satır bulucu olarak içermiyor mu?
Zikato

0

Cevap Evet". Herhangi bir sorguda bölümleri tanımlamak için kullanılan mantığa göre girdileri filtreleyen bir mekanizma vardır.

Bununla birlikte, uygun filtreye sahip olmanız gerekir, aksi takdirde tüm bölüm taranacaktır. Bu genellikle bölümü seçmek için tarih filtrelerine (sizin durumunuzda) sahip olmayı içerir.

Bunu zorlamanın bir yolu, görünümde doğru mantıkla yalnızca bir bölüme erişen görünümlere sahip olmaktır.


Ben aynı fiziksel diske bölümleme için performans kazanç ne kadar olacağını merak ediyorum ..
sotn
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.