2013-10-17 29 views
5

Redshift verimli bir şekilde (yani ikili arama) A = sütununda A sütununda sıralanan ve A =? Örnek olarak, ~ 500m sıralı, ~ 50 alanlı, A alanında dağıtılmış ve sıralanmış bir tablo T olsun. A alanının yüksek bir kardinalitesi vardır - yani yaklaşık 4,5 m farklı A değeri vardır, tam olarak aynıdır. T: satır başına satır sayısı: ~ 100 satır başına değer.
Tek bir XL düğümü olan kırmızıya kayma kümesini varsayalım.
A Alanı sıkıştırılmamış. Diğer tüm alanlar ANALYZE COMPRESSION tarafından önerildiği gibi bazı form sıkıştırma özelliklerine sahiptir. Sıkıştırılmamış bir tabloya kıyasla 1:20 oranında bir oran verilmiştir. Amazon Redshift Eşitlik filtresi performansı ve sıralama tuşları

önemsiz bir sorgu Verilen:

select avg(B),avg(C) from 
(select B,C from T where A = <val>) 

VAKUMLU sonra ve açıklamak aşağıdaki planı verilir ANALİZ:

XN Aggregate (cost=1.73..1.73 rows=1 width=8) 
-> XN Seq Scan on T (cost=0.00..1.23 rows=99 width=8) 
Filter: (A = <val>::numeric) 

Bu sorgu tamamlamak için 39 saniye sürer.
Ana soru şu: Bu, redshift'in beklenen davranışı mı? Choosing the best sortkey de belgelere göre

. Sık sık aralık filtreleme veya bir sütun üzerinde filtreleme eşitliği yaparsanız
", sıralama anahtarı olarak bu sütunu belirtmek Redshift bunun nedeni bu sütun için veri bloklarını okurken atlayabilirsiniz her blokta depolanmış minimum takip ve maksimum sütun değerlerini tutar ve yüklem aralığına geçerli değildir blokları atlayabilirsiniz "

Choosing sort keys yılında:
". sıralanmış verilere bağlıdır başka optimizasyon verimli kullanım olduğunu aralık kısıtlamalı yüklemler. Amazon Redshift 1 MB disk bloklarında sütun verileri depolar. Her blok için min ve maksimum değerler meta verilerin bir parçası olarak saklanır. Aralık kısıtlamalı bir sütun bir sıralama anahtarıysa, sorgu işlemcisi, tablo taramaları sırasında çok sayıda bloğu hızla atlamak için minimum ve maksimum değerleri kullanabilir. Örneğin, bir çizelge beş yıllık verileri tarihe göre sıralarsa ve bir sorgu bir aylık bir tarih aralığını belirtirse, disk bloklarının% 98'ine kadarı taramadan kaldırılabilir. Veriler sıralanmazsa, disk bloklarının çoğunun (muhtemelen hepsinin) taranması gerekir. Bu en iyileştirmeler hakkında daha fazla bilgi için, bkz. Dağıtım anahtarlarını seçme. "

İkincil soruları:? Bir çeşit tuş üzerinde yukarıda bahsedilen atlama tarama karmaşıklığı nedir
mı onu lineer (O (n)) veya ikili aramasının bazı varyant (O (logn))
ise? anahtar sıralanır? -?? kullanılabilen tek optimizasyonu atlama olduğunu
ne açıklamak planda bunun gibi "atlama" optimizasyon bakmak
yukarıdaki Bu sorgu için en iyi olası bir açıklamaya mı olur
ne en hızlı sonuç kırmızıya kayma olduğunu Bu senaryoyu vermesi beklenebilir mi?
Vanilya ParAccel farklı mı? Bu kullanım durumunda davranış?

cevap