Ist es in Ordnung, Felder mit NULL-Wert als Sor- und Distkey zu definieren? Ich erwarte nicht viele Nullen, aber es kann passieren. DankeRedshift: Können Sortkey und Distkey NULL-fähig sein?
Antwort
Ja, sie können beide null sein.
Wir haben beide Null in unserer prod DB, und die Dinge funktionieren gut.
Während Redshift mit NULL-fähigen DIST-Schlüssel arbeiten würde, müssen Sie damit vorsichtig sein.
Wenn viele Zeilen den gleichen Wert (ob NULL oder ein anderer Wert) in der DIST-Schlüsselspalte haben, würden alle diese Zeilen auf demselben Knoten landen. Es wird daher empfohlen, die Spalte zu verwenden, die eine gleichmäßige Verteilung der Werte bietet, da der dist-Schlüssel, dh die Häufigkeit eines Wertes, jedem anderen Wert ähnlich ist.
Wenn Spalte Nullable ist, ist der NULL-Wert häufig im Vergleich zu anderen Werten in Bezug auf die Häufigkeit verzerrt. Dies führt zu einer ungleichmäßigen Verteilung der Last zwischen den Knoten, und im Fall von x1.large-Knoten kann Ihnen auch der Speicherplatz auf diesem Knoten schnell ausgehen.
Also würde ich empfehlen, eine Spalte auszuwählen, die NULLs nicht zulässt, obwohl sie natürlich auch logisch mit dem Muster Ihrer Joins übereinstimmen muss. Wenn Sie keine Joins haben, würde ich in diesem Fall lieber EVEN dist style empfehlen, um sicherzustellen, dass die Last gleichmäßig verteilt ist.