SQL Server 2008'de maksimum tablo kapasitesi


11

Bir masaya yılda 1 milyardan fazla satır ekleyen bir uygulamam var. Bu tabloda bazı içeriyor varcharve bigintsütun ve bir damla sütunu de.

1 milyar satır izleme amacıyla tutulan geçmiş verilerinden oluşur. Bu yüzden, bu tablodaki maksimum tablo boyutu hakkında bu MSDN makalesine göre devam edersem, bir masa kapasitesi sınırlaması olup olmayacağını merak ediyordum .

Bu bağlantıda bahsedilen veri dosyası boyutu tablo veri dosyası grubuna karşılık geliyor mu?


@ marc_s bunu yakaladığınız için teşekkürler. diğer şeylerin yanı sıra, bunlara toplu olarak dikkat çektiğimiz The Heap'te bize katılmaktan çekinmeyin
JNK

Her satırın maksimum boyutu nedir?
Nick Chammas

Yanıtlar:


6

Disk alanı dışında pratik bir sınır yoktur. Bağlantı kurduğunuz tabloyu tamamen okudum ve kontrol ettim.

16 TB'ın üzerine çıkmanız gerekiyorsa birden fazla dosyaya ihtiyacınız vardır (basit bir prosedür).


Sanırım bu tabloyu bölümlere ayırıp farklı dosya gruplarını kullanmak için bölümlere ayırma ile elde edilebilir, eğer doğruysam?
GAP

1
Bu bile gerekli değil. Yeni bir dosya ekleyin (mevcut dosya grubuna). SQL Server, tüm dosyaları eşit olarak doldurmaya başlar. Bir dosya artık büyüyemezse, diğer dosya büyür.
usr

2

sql server 2008'de bir tablo çok sayıda kayıt işleyebilir ve @usr belirtildiği gibi disk alanına bağlıdır, ancak tablonuzda çok sayıda satır varsa ve Bölünmüş Tablo http://technet.microsoft kullandığınızda büyümeye devam etmesi önerilir . com / tr-tr / kütüphane / dd578580 (v = SQL.100) .aspx

Bir veritabanı tablosunun boyutu yüzlerce gigabayt veya daha fazla büyüdüğünde, yeni verileri yüklemek, eski verileri kaldırmak ve dizinleri korumak daha zor hale gelebilir

hakkında daha fazla bilgi

http://msdn.microsoft.com/en-us/library/ms190787.aspx

ve nasıl uygulanacağı http://blog.sqlauthority.com/2008/01/25/sql-server-2005-database-table-partitioning-tutorial-how-to-horizontal-partition-database-table/


Ancak bölümleme konusunda gerçekten dikkatli olmalısınız. İşlev ve tuşun yanı sıra kullanım durumu da dikkatle değerlendirilmelidir. Bölümlenecek mantıksal alan hiçbir zaman performansı öldürecek sorguların hiçbirinde kullanılamaz.
JNK

Tek bir tablodaki milyarlarca satır aynı zamanda performansı da etkileyecek, ayrıca birçok tablodaki ur verilerini ayırma seçeneği de var, her yıl için ayrı bir tablo örneği ve u tüm verileri görüntülemek istiyorsanız u A görünümünü kullanabilirsiniz ancak en azından unsert ve güncelleme her masada daha hızlı olacak
AmmarR

büyük bir tablodaki ekler mutlaka yavaş değildir, anahtarlara ve dizinlere bağlıdır. 700m mevcut satır içeren bir tabloya aylık 30m satırlık yükler yüklüyorum ve bölümleme yapmıyoruz. Bölümlemeyi denedim ama çözdüğünden daha fazla soruna neden oldu. Eğer kontrol etmek istiyorsanız bu aslında bir sorudur.
JNK

Geçmiş verilerimi ayrı bir tabloya taşımak ve bu yüzden sorgu geçmişi + sistemde var sorguların yaklaşık% 25 daha az olan en son veriler gerektiğinde uygulama tarafından kullanılabilmesi için bir birlik görünümü oluşturmak düşünüyordum. Bu, verileri en son olarak işaretleyen sütuna dayanarak birden çok veri dosyasına sahip olmaktan veya tabloyu ayırmaktan daha verimli mi olacak? ES operasyonlarından hangisi daha verimli olacak? çünkü her iki çözümde de IO açısından aynı olacak.
GAP

Eğer herhangi bir yaklaşım iyi ya da kötü yapmak için en iyi uygulamaları vardır, yani birçok tablo varsa sorgunuzun karmaşık olacak ve korumak zor olacak, bir tablonuz varsa ve tablo bölümleme kullanmak gibi farklı hususlar vardır sql sürümünüz kurumsal vb olmalıdır, birçok veri dosyasına sahip olmak daha iyi IO işlemleri için önerilir, ancak en iyi uygulamaları da vardır, sql performansı için doğrudan bir yol yoktur ...
AmmarR

0

Belki de Bölümlenmiş Bir Görüş işe yarayacaktır.

Gönderen kullanma Kisimlandirilmis Görüntüle MSDN Madde :

Bölümlenmiş görünümler, büyük bir tablodaki verilerin daha küçük üye tablolarına bölünmesine izin verir. Veriler, sütunlardan birindeki veri değerlerinin aralıklarına göre üye tabloları arasında bölünür. Her üye tablosu için veri aralıkları, bölümleme sütununda belirtilen bir CHECK kısıtlamasında tanımlanır. Tüm üye tablolarının seçimlerini tek bir sonuç kümesinde birleştirmek için UNION ALL'u kullanan bir görünüm tanımlanır. Görünüme başvuran SELECT deyimleri bölüm sütununda bir arama koşulu belirlediğinde, sorgu iyileştiricisi hangi üye tablosunun satır içerdiğini belirlemek için CHECK kısıtlama tanımlarını kullanır.

AmmarR'ın cevabında bilgi verdiği Paritioned Table'dan nasıl farklı olduğundan emin değilim.

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.