2016-04-04 16 views
4

Veri depolama ile SQL Server Compact Edition tarafından işlenen bir .NET WPF uygulaması geliştirdim. Elde edilen SQL Server CE dosyasını sıkıştırdığımda, genellikle orijinal dosya boyutunun% 5'ine kadar sıkıştırdığımı not ettim.C# SQL Server Compact Edition: Çok Yüksek Sıkıştırma Oranı

Burada önemli bir cehalet gösterme riski altında, bu beklenen davranış mıdır? Görünüşe göre, bu büyük boyutta tasarruf sağlandığında, her kurtardığımda dosyaları sıkıştırmalıyım (henüz bunun performans etkilerini dikkate almadım). Veritabanı boyutu az olsa da, azami 4GB'a kadar birkaç MB'den farklı olabilir. Verilerim verimsiz olarak depolanıyor mu, yoksa sıkıştırdığımda neden bu kadar önemli tasarruflara ulaşıyorum? SQL Server CE dosyasını harici olarak sıkıştırmak zorunda kalmadan, bu yer tasarrufunu elde etmek için yapabileceğim bir şey var mı?

+0

Bu, bekleyeceğim başlangıç ​​sorusu türüdür. Utanılacak bir cehalet yok. Bu, "dokümantasyonda bir sözdizimi aramaktan çekinmiyorum" sorusu değil. Cevap açık - ama yeni başlayanlar için değil, sadece bir veritabanının iç işleyişini bilen biri için. Yani, utanmayın, bu aslında iyi bir soru. – TomTom

cevap

2

Bir veritabanı, sıkıştırma performansını büyük ölçüde etkileyeceğinden sıkıştırılmamalıdır. Sana bir örnek vereceğim.

Bir alan 200 bayt uzunluğundaysa, veritabanı belirli bir satıra bir değer kaydetmek için 200 bayt ayırdı. Tüm alanların uzunluğunu ekleyerek toplam satır boyutunu hesaplayabilir.

Bir sıkıştırma algoritması, içindeki gerçek değeri neredeyse hiçbir şeyden sıkıştırabilir. Ancak, bir veritabanı bunu yaparsa, diskteki konumun hesaplanmasına dayanamazdı (satır numarası * satır boyutu + sütun ofseti). İlk olarak, belirli bir satırdaki belirli bir sütunun değerini almak için her şeyi sıkıştırmak zorundadır. Performans açısından bunu istemiyorsunuz.

+1

Üstte, veritabanlarının çoğu çok fazla boş alana sahiptir. Ekler için bazı rezervlerin ön-ayrılması vb. Örneğin endeksler dolu değildir, böylece bir ek her zaman bir sayfa bölünmesini tetiklemez (ve sayfalar halinde düzenlenir ve tahsis edilir). – TomTom

+0

Bunun için teşekkürler. Bu konuda biraz okuma önerebilir misiniz? SQL mekaniği anlayışım oldukça sınırlıdır. –