Birincil anahtarı eklemeden önce veya sonra sayfa düzeyinde sıkıştırma eklemeli miyim?


14

Durum

  • Sql Server 2008 Enterprise'da veri ambarı
  • 60+ sütun ile 36+ milyon satır yığını (sorma)
  • Aylık 750 bin kişi eklendi
  • Birincil anahtar tanımlanmadı (şimdi bir tane tanımladım)
  • Sıkıştırma yok

Ne yapmayı düşünüyorum (bu sırayla)

  • Sayfa düzeyinde sıkıştırma ekle
  • PK ekleyin
  • Kümelenmemiş birkaç dizin ekleyin
  • Bunu mümkün olduğunca çabuk yapın

Soru


Şu anda neye yöneliyorum

-- Add page level compression
alter table     dbo.TableName
rebuild with    (data_compression = page)
; 
go

-- Add primary key
alter table             dbo.TableName
add constraint          PK_TableName
primary key clustered   (<Columns>)
;
go

-- Add NC_IXs here
...
...

Buraya (PK oluşturma belgeleri) ve buraya (ALTER TABLE belgeleri) baktım , ancak herhangi bir dizinin tablo sıkıştırma ayarlarını devralıp almama konusunda kesin bir şey göremiyorum. Bu özel sorunun cevabı, burada dba.stackexchange'te bulunan "Hayır, sıkıştırma kalıtsal değildir" dir.

Yanıtlar:


12

Kümelenmiş dizin aslında tablodur. Birincil anahtarınızın kümelenmiş olduğu varsayımına göre, iki adımda yapmaya çalışmak yerine sayfa düzeyinde sıkıştırma ile kümelenmiş bir birincil anahtar oluştururdum.

-- Add primary key
ALTER TABLE             dbo.TableName
ADD CONSTRAINT          PK_TableName
PRIMARY KEY CLUSTERED   (<Columns>)
WITH (DATA_COMPRESSION = PAGE)
;

Ayrıca yaklaşık 100k satır geçici (geçici fiziksel değil # geçici) tabloya kopyalamak ve bazı sınamalar çalıştırmak. Önce sıkıştırmayı, önce kümelenmiş anahtarı çalıştırmayı deneyin, bunları tek adımda yapmayı deneyin. En hızlı neyin çalıştığını görün. Şahsen bir adım olacağını tahmin ediyorum :).


2

Her iki durumda da, sayfa sıkıştırma bir LOT etrafında veri karıştıracaktır. Kümeleme işlemi sıkıştırılmış sayfaları okuyacağından, ilk önce sıkıştırma yapmanın daha az genel G / Ç ile sonuçlanacağını tahmin ediyorum.

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.