SQL Server 2014 toplu işlem modunda tam olarak ne yapabilir?


21

Bir columntore endeksi sorguda kullanıldığında, SQL Server toplu modunu kullanabilir. Belgeler toplu işlem modunda nelerin çalıştırılabileceği ve neyin olamayacağı konusunda incedir. Lütfen toplu modda (yeşil) şaşırtıcı sayıda işlemin gerçekleştirildiği aşağıdaki (motive edici) sorgu planına bakın:

görüntü tanımını buraya girin

(Bu tahmini bir plandır. Gerçek uygulama modunun gerçekten toplu olduğunu doğrulamak için gerçek planı kullandım.)

T1'in yalnızca derleme tarafında bir columntore dizini kullandığına dikkat edin. Tüm prob girişleri (T2 ve T3) satırlardır. Verileri toplu moda geçiş gibi görünüyor. Toplu iş modunun yalnızca prob tarafında çalışan veri akışı için kullanıldığını her zaman düşündüm.

Sütun deposu dizininden gelmese bile verilerin toplu moda geçebileceği görülüyor. Şu soruyu sorar: Neden SQL Server yalnızca satır saklayıcı sorguları için toplu iş modunu kullanmaz? Bazıları için faydalı olabilir. Bir sütun deposu dizini kullanmak, SQL Server'ın toplu iş modunu değerlendirmesini sağlamak için gerekli olan resmi bir gereksinim midir? Parti kipini başlatmak ve performans kazanımlarını gerçekleştirmek için bir sütun deposu dizini içeren sıfır sıralı bir kukla tablo ekleyebilir miyiz?

SQL Server 2014'ten itibaren toplu halde tam olarak ne çalıştırabilir?


5
SQL Server neden yalnızca satır deposu sorguları için toplu mod kullanmıyor? Çünkü CS şu an için sadece toplu modu destekliyor. Bazıları için faydalı olabilir. Bir sütun deposu dizini kullanmak, SQL Server'ın toplu iş modunu değerlendirmesini sağlamak için gerekli olan resmi bir gereksinim midir? Evet CS bir zorunluluktur. Neugebauer tarafından açılan Satır Mağazası için hala Toplu Uygulama Modu Desteği uygulayan bir connect öğesi var .
Kin Shah,

2
2016 yılında toplu modu BTW kabul olsun yeni olası numara var sqlmag.com/sql-server/...
Martin Smith

Yanıtlar:


30

SQL Server 2014'ten itibaren toplu halde tam olarak ne çalıştırabilir?

SQL Server 2014, toplu iş modu işleçlerinin orijinal listesine aşağıdakileri ekler:

  • Karma Dış birleştirme (tam birleştirme dahil)
  • Karma Yarı Birleşme
  • Hash Anti Yarı Katılma
  • Tümünü Sendika (Yalnızca Birleştirme)
  • Skaler karma agrega (gruplamaya göre değil)
  • Toplu Karma Tablo Oluşturma kaldırıldı

Sütun deposu dizininden gelmese bile verilerin toplu moda geçebileceği görülüyor.

SQL Server 2012, toplu işleçlerin kullanımında çok sınırlıydı. Toplu iş kipi planları sabit bir şekle sahipti, sezgisellere dayanıyordu ve sıra kipi işlemine geçiş yapıldıktan sonra toplu iş kipini başlatamıyordu.

SQL Server 2014, yürütme modunu (toplu iş veya satır) sorgu iyileştiricinin genel özellik çerçevesine ekler; bu, planın herhangi bir noktasında toplu iş moduna geçiş yapmayı düşünebilir. Geçişler, plandaki görünmez yürütme modu bağdaştırıcıları tarafından gerçekleştirilir. Bu adaptörler, optimizasyon sırasında tanıtılan geçiş sayısını sınırlamak için bunlarla ilişkili bir maliyete sahiptir. Bu yeni esnek model Karışık Mod Yürütme olarak bilinir.

Yürütme modu bağdaştırıcıları, belgelendirilmemiş TF 8607 ile iyileştiricinin çıktısında (ne yazık ki kullanıcı tarafından görülebilen uygulama planlarında olmasa da) görülebilir. Örneğin, bir satır deposundaki satır sayma sorguları için aşağıdakiler yakalandı:

Row to Batch to Row adaptörleri

Bir sütun deposu dizini kullanmak, SQL Server'ın toplu iş modunu değerlendirmesini sağlamak için gerekli olan resmi bir gereksinim midir?

Bugün, evet. Bu kısıtlamanın olası bir nedeni, parti modu işlemeyi doğal olarak Enterprise Edition ile sınırlandırmasıdır.

Toplu iş modunu başlatmak için bir sütun deposu dizini içeren sıfır satırlı boş bir tablo ekleyebilir miyiz?

Evet, bu işe yarıyor. Ben de bu sebeple tek sıralı kümelenmiş bir sütun deposu endeksine çapraz katılan insanları gördüm. Solda yaptığınız yorumlarda yaptığınız öneri sahte olarak kukla bir sütun deposu masasına katılmak.

-- Demo the technique (no performance advantage in this case)
--
-- Row mode everywhere
SELECT COUNT_BIG(*) FROM dbo.FactOnlineSales AS FOS;
GO
-- Dummy columnstore table
CREATE TABLE dbo.Dummy (c1 int NULL);
CREATE CLUSTERED COLUMNSTORE INDEX c ON dbo.Dummy;
GO
-- Batch mode for the partial aggregate
SELECT COUNT_BIG(*) 
FROM dbo.FactOnlineSales AS FOS
LEFT OUTER JOIN dbo.Dummy AS D ON 0 = 1;

Sahte sol dış birleşim ile planlayın:

Yapay tablo ile toplu modu

Belgeleme ince

Doğru.

En iyi resmi bilgi kaynakları, Kolon Deposu Dizinleri ve SQL Server Kolon Deposu Performans Ayarlaması'dır .

SQL Server MVP Niko Neugebauer'in genel olarak burada depo alanında müthiş bir dizisi var .

Bu, resmi ürün belgeleri olmamasına rağmen Microsoft Araştırma belgesindeki 2014 değişiklikleri, SQL Server Sütun Depolarındaki İyileştirmeler (pdf) hakkında bazı iyi teknik detaylar var .

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.