Veri Sıkıştırma

SQL Server 2012tablolar ve dizinler için satır ve sayfa sıkıştırma destekler. Bir veritabanı içinde veri sıkıştırma yardımcı olmak ve veritabanının boyutunu azaltmak için veri sıkıştırma özelliğini kullanabilirsiniz. Alanından tasarruf ek olarak, veri sıkıştırma, veri daha az sayfalarında depolanır ve sorguları daha az sayfaların diskten okunma gerekiyor çünkü I/O yoğun iş yüklerini performansını yardımcı olabilir. Ancak, ekstra cpu kaynakları sıkıştırmak ve uygulama ile veri değişimi sırasında verileri genişletmek için veritabanı sunucusunda gereklidir. Veri sıkıştırma aşağıdaki veritabanı nesneleri için yapılandırılabilir:

  • Bir yığın saklanan tüm tabloda.

  • Kümelenmiş bir dizin saklanan tüm tabloda.

  • Bütün kümelendirilmemiş dizini.

  • Tüm dizin oluşturulmuş görünüm.

  • Bölümlenmiş tablolar ve dizinler için sıkıştırma seçeneği her bölüm için yapılandırılabilir ve nesnenin çeşitli bölümleri aynı sıkıştırma ayarını olması gerekmez.

Düşünceleri ne zaman sen kullanma satır ve sayfa sıkıştırma

Satır ve sayfa sıkıştırma kullandığınızda, unutmayın aşağıdaki önemli noktalar:

  • Veri sıkıştırma ayrıntıları hizmet paketleri ya da sonraki sürümleri verilmeden değiştirilebilir.

  • Sıkıştırma her sürümünde kullanılabilir değil SQL Server. Daha fazla bilgi için, bkz. SQL Server 2012 Sürümleri Tarafından Desteklenen Özellikler.

  • Sıkıştırma, sistem tabloları için kullanılamaz.

  • Sıkıştırma, bir sayfada depolanması daha fazla satır izin verebilirsiniz ancak bir tablo ya da dizin en büyük satır boyutunu değiştirmez.

  • En büyük satır boyutunu artı sıkıştırma yükü 8060 baytlık en büyük satır boyutunu aşarsa bir tablo sıkıştırma için etkinleştirilemiyor. Örneğin, sütunu olan bir tablo c1 char(8000)ve c2 char(53)ek sıkıştırma yükü nedeniyle sıkıştırılamaz. Vardecimal depolama biçimi kullanıldığında, biçimi etkinleştirildiğinde satır boyutu denetimi gerçekleştirilir. Nesne başlangıçta sıkıştırılmış ve her satır eklendiğinde veya değiştirildiğinde gibi o zaman ekose desenli için satır ve sayfa sıkıştırma, satır boyutu denetimi gerçekleştirilir. Sıkıştırma aşağıdaki iki kuralı da zorlar:

    • Sabit uzunluklu türü bir güncelleştirme işlemi her zaman başarılı olmalıdır.

    • Veri sıkıştırmasını devre dışı bırakmak her zaman başarılı olmalıdır. Sıkıştırılmış satır az 8060 baytı olduğu anlamına gelir sayfasında uygun bile; SQL Serversıkıştırılmamış olduğunda satır uygun değildir güncelleştirmelerini önler.

  • Bölümlerin listesini belirtilen sıkıştırma türü satır, sayfa veya yok tek tek bölümleri için ayarlanabilir. Bölümler listesinden belirtilmezse, tüm bölümlerin deyiminde belirtilen veri sıkıştırma özelliği ile ayarlanır. Bir tablo veya dizin oluşturulduğunda, veri sıkıştırma yok aksi belirtilmedikçe ayarlanır. Tablo değiştirildiğinde, varolan sıkıştırma, aksi belirtilmediği sürece korunur.

  • Bölüm veya Aralık dışı bir bölüm listesini belirtirseniz, bir hata oluşturulur.

  • Kümelendirilmemiş dizinler tablo sıkıştırma özelliğini devralmaz. Dizinler sıkıştırmak için açıkça dizinler sıkıştırma özelliğini ayarlamanız gerekir. Dizin oluşturulduğunda varsayılan olarak hiçbiri sıkıştırma ayarını dizinler için ayarlar.

  • Bir yığın kümelenmiş bir dizin oluşturduğunuzda bir alternatif sıkıştırma durumu belirtilmediği sürece Kümelenmiş dizin yığın sıkıştırılma durumunu devralır.

  • Bir yığın sayfa düzeyinde sıkıştırma için yapılandırıldığında, sayfaları sayfa düzeyinde sıkıştırma yalnızca aşağıdaki yollarla alırsınız:

    • Etkin toplu optimizasyonları ile alınan toplu verilerdir.

    • INSERT INTO kullanarak veri eklenir... (tablock) sözdizimi.

    • Tablo alter table yürüterek yeniden... Sayfa sıkıştırma seçeneği deyimiyle yeniden oluşturun.

  • Yığın yeniden kadar bir yığın dml işlemleri kapsamında tahsis edilen yeni sayfalar sayfa sıkıştırma kullanmaz. Yığın kaldırmayı ve yeniden sıkıştırma uygulama veya oluşturma ve kaldırma kümelenmiş bir dizin yeniden oluşturun.

  • Bir yığın sıkıştırma ayarını değiştirmek böylece onlar-si olmak işaretçiler yığınındaki yeni satır konumlarını yeniden oluşturulması için tablonun tüm kümelendirilmemiş dizinler gerektirir.

  • Etkinleştirmek veya satır ya da sayfa sıkıştırma çevrimiçi veya çevrimdışı devre dışı bırakabilirsiniz. Bir yığın sıkıştırmayı sağlayan bir çevrimiçi işlem için dişli tek.

  • Etkinleştirme veya satır ya da sayfa sıkıştırma devre dışı bırakmak için disk alanı gereksinimleri oluşturmak veya bir dizin yeniden oluşturma aynıdır. Bölümlenmiş veri için etkinleştirerek veya bir seferde bir bölüm için sıkıştırma devre dışı bırakılması gereken alanı azaltabilirsiniz.

  • Bölüm bölümlenmiş tablo sıkıştırma durumunu belirlemek için query data_compressionsütununda sys.partitionsKatalog görünümü.

  • Dizinler sıkıştırmak zaman, yaprak düzey sayfalar hem satır hem de sayfa sıkıştırması ile sıkıştırılmış olabilir. Non–Leaf düzey sayfalar, sayfa sıkıştırma almazsınız.

  • Boyutlarından dolayı büyük bir değer veri türleri bazen ayrı özel amaçlı sayfaları normal satır veri depolanır. Veri sıkıştırma, ayrı ayrı depolanan verileri kullanılamaz.

  • Tabloları vardecimal depolama uygulanan biçimlendirme SQL Server 2005yükseltildiğinde bu ayarını korur. Vardecimal depolama biçimi olan bir tabloya satır sıkıştırması uygulayabilirsiniz. Ancak, satır sıkıştırması vardecimal depolama biçimi kümesidir, olduğu vardecimal depolama biçimi korumak için bir neden yoktur. Vardecimal depolama biçimi satır sıkıştırması ile birleştirdiğinizde ondalık değerleri ek sıkıştırma elde edilir. Vardecimal depolama biçimi olan bir tabloda sayfa sıkıştırması uygulayabilirsiniz; ancak vardecimal depolama biçimi sütunları muhtemelen ek sıkıştırma elde değil.

    [!NOT]

    SQL Server 2012vardecimal depolama biçimi destekler; Ancak, aynı hedefleri satır düzeyinde sıkıştırma elde çünkü vardecimal depolama biçimi önerilmemektedir. Bu özellik Microsoft SQL Server'ın ilerideki bir sürümünde kaldırılacaktır. Yeni geliştirme işlerinde bu özelliği kullanmaktan kaçının ve bu özelliği kullanmakta olan uygulamalarda değişiklik yapmayı planlayın.

Sıkıştırma bölümlenmiş tablolar ve dizinler nasıl etkiler

Bölümlenmiş tablolar ve dizinler ile veri sıkıştırma kullandığınızda, aşağıdaki noktaları unutmayın:

  • Bölümler, bölüm alter deyimini kullanarak böldüğünüzde iki bölümleri özgün bölüm veri sıkıştırma özniteliği devralır.

  • İki bölüm birleştirildiğinde sonuç bölümü hedef bölüm veri sıkıştırma özniteliği devralır.

  • Bir bölüme geçmek için bölüm veri sıkıştırma özelliğini tablo sıkıştırma özelliği eşleşmesi gerekir.

  • Bölümlenmiş tablo veya dizin durumunu değiştirmek için kullanabileceğiniz iki sözdizimi biçimi vardır:

    • Aşağıdaki sözdizimi yalnızca başvurulan bölüm oluşturur:

      ALTER TABLE <table_name> 
      REBUILD PARTITION = 1 WITH (DATA_COMPRESSION =  <option>)
      
    • Aşağıdaki sözdizimini değil başvurulan tüm bölümler için ayarlama varolan sıkıştırması kullanılarak bütün tablo oluşturur:

      ALTER TABLE <table_name> 
      REBUILD PARTITION = ALL 
      WITH (DATA_COMPRESSION = PAGE ON PARTITIONS(<range>),
      ... )
      

    Bölümlenmiş dizinler alter INDEX kullanarak aynı prensibi izleyin.

  • Kümelenmiş bir dizin bırakılan sürece bölümleme şeması değiştirildiğinde ilgili yığın bölümleri kendi veri sıkıştırma ayarını korur. Tüm bölümler, bölümleme düzeni değişirse, sıkıştırılmamış bir duruma yeniden oluşturulur. Kümelenmiş dizin bırakın ve bölümleme düzeni değiştirmek için aşağıdaki adımları gerektirir:

    1. Kümelenmiş dizin bırakın.

    2. alter table kullanarak tabloyu değiştir... YENİDEN... sıkıştırma seçeneği belirten seçeneği.

    ÇEVRİMDIŞI kümelenmiş bir dizin bırakmak için çok hızlı bir işlem çünkü Kümelenmiş dizinler yalnızca üst düzeyleri kaldırılır. Kümelenmiş bir dizin çevrimiçi bırakılan SQL Serveröbek için adım 2 Adım 1 için bir kez ve bir kez iki kez döndürmelisiniz.

Sıkıştırma çoğaltma nasıl etkiler?

Veri sıkıştırma ile çoğaltma kullandığınızda, aşağıdaki noktaları unutmayın:

  • Snapshot aracı ilk şema komut dosyasını oluşturduğunda, yeni şema, hem tablo hem de kendi dizinleri için aynı sıkıştırma ayarlarını kullanır. Sıkıştırma, yalnızca tablo ve dizin üzerinde etkinleştirilemiyor.

  • Işlem çoğaltma için bağımlı nesneleri ve özellikleri komut dosyası gereken makale şema seçeneği belirler. Daha fazla bilgi için bkz: sp_addarticle.

    Komut uyguladığında dağıtım aracısı için alt düzey aboneleri denetlemez. Sıkıştırma çoğaltma seçilirse, alt düzey tablo oluşturma aboneleri başarısız olur. Bir karma topoloji durumunda, sıkıştırma çoğaltmayı etkinleştirmeyin.

  • Birleştirme çoğaltması, yayın uyumluluk düzeyi şema seçenekleri geçersiz kılar ve komut dosyası şema nesneleri belirler.

    Yeni sıkıştırma seçeneklerini desteklemek için gerekli değildir eğer bir karma topoloji durumunda, yayın uyumluluk düzeyi düşük düzeydeki abone sürümü için ayarlanmalıdır. Gerekiyorsa, onlar oluşturulduktan sonra tablo abone sıkıştırın.

Aşağıdaki tabloda, çoğaltma sırasında sıkıştırmasını kontrol çoğaltma ayarlarını gösterir.

Kullanıcı amacı

Bölüm düzeni için bir tablo veya dizin çoğaltma

Sıkıştırma ayarlarını çoğaltmak

Komut dosyası davranışı

Bölüm düzeni çoğaltmak ve abone bölüm üzerinde sıkıştırmayı etkinleştirmek için.

True

True

Bölüm düzeni ve sıkıştırma ayarlarını komut dosyaları.

-E doğru bölüm düzenini çoğaltır ama abone verileri sıkıştırmak değil.

True

False

Bölüm düzeni ancak değil sıkıştırma ayarları bölümü üzerinden komut dosyaları.

Bölüm düzeni çoğaltma için abone verileri sıkıştırmak değil.

False

False

Bölüm veya sıkıştırma ayarları için komut dosyası değil.

Eğer tüm abone masaya sıkıştırmak için bölümleri yayımcı üzerinde sıkıştırılır, ancak bölüm düzeni çoğaltmak değil.

False

True

Tüm bölümler için sıkıştırma etkin olmadığını denetler.

Komut dosyaları üzerinden sıkıştırma tablosu düzeyinde.

Sıkıştırma, diğer SQL Server bileşenleri nasıl etkiler?

Sıkıştırma depolama motoru oluşur ve verileri diğer bileşenleri çoğu için sunulan SQL Serversıkıştırılmamış durumda. Bu sıkıştırma diğer bileşenleri şu etkileri sınırlar:

  • Toplu alma ve verme işlemleri

    Hatta özgün biçiminde veri aktarıldığında verileri, sıkıştırılmamış satır biçiminde çıktı. Bu önemli kaynak verileri büyük olmak için dışa aktarılan veri dosyasının boyutunu neden olabilir.

    Veri alındığında hedef tablo için sıkıştırma etkinleştirilirse, veri depolama altyapısı tarafından sıkıştırılmış satır biçimine dönüştürülür. Bu sıkıştırılmamış bir tabloya veri alındığında karşılaştırıldığında yüksek cpu kullanımına neden olabilir.

    Yığın yığın sayfa sıkıştırma ile içe aktarılan veri olduğunda, toplu alma işleminin veri eklendiğinde sayfa sıkıştırması verileri sıkıştırmak çalışacağız.

  • Sıkıştırma değil etkileyen yedekleme ve geri yükleme.

  • Sıkıştırma, günlük sevkiyat etkilemez.

  • Veri sıkıştırma seyrek sütunları ile uyumlu değil. Bu nedenle, seyrek sütunları içeren tablolar sıkıştırılamaz veya seyrek sütunlar sıkıştırılmış tabloya eklenebilir.

  • Sıkıştırma etkinleştirildiğide sorgu planları farklı sayıda sayfa ve sayfa başına satır sayısını kullanarak veri depolandığından değiştirmek neden olabilir.

Ayrıca bkz.

Başvuru

PARTITION düzeni (Transact-sql) oluştur

PARTITION FUNCTION (Transact-sql) oluştur

Tablo (Transact-sql) oluştur

ALTER TABLE (Transact-SQL)

Index (Transact-sql) oluştur

ALTER INDEX (Transact-SQL)

Kavramlar

Satır sıkıştırma uygulama

Sayfa sıkıştırma uygulama

Unicode sıkıştırma uygulama