

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Bewährte Methoden für das Entwerfen von Amazon Redshift Redshift-Tabellen
<a name="best-practices-tables"></a>

Dieser Abschnitt bietet einen Überblick über bewährte Methoden für das Entwerfen von Datenbanktabellen. Wir empfehlen Ihnen, diese bewährten Methoden zu befolgen, um eine optimale Abfrageleistung und Effizienz zu erzielen.

## Verstehen Sie, wie Sortierschlüssel funktionieren
<a name="sort-keys"></a>

Amazon Redshift speichert die Daten auf der Festplatte in sortierter Form gemäß dem Sortierschlüssel. Der Amazon-Redshift-Abfrageoptimierer verwendet die Sortierfolge bei der Bestimmung optimaler Abfragepläne. Um Sortierschlüssel effektiv zu verwenden, empfehlen wir Ihnen, wie folgt vorzugehen:
+ Sortieren Sie die Tabelle so weit wie möglich.
+ Verwenden Sie `VACUUM` sort, um die optimale Leistung wiederherzustellen.
+ Vermeiden Sie es, die Spalte mit den Sortierschlüsseln zu komprimieren.
+ Wenn der Sortierschlüssel komprimiert ist und das `sortkey1_skew` Verhältnis sehr hoch ist, erstellen Sie die Tabelle neu, ohne die Komprimierung des Sortierschlüssels zu aktivieren.
+ Vermeiden Sie es, eine Funktion auf die Sortierschlüsselspalten anzuwenden. In der folgenden Abfrage wird die `trans_dt : TIMESTAMPTZ` Sortierschlüsselspalte beispielsweise nicht verwendet, wenn Sie sie wie folgt umwandeln`DATE`:

  ```
  select order_id, order_amt
  from sales
  where trans_dt::date = '2021-01-08'::date
  ```
+ Führen Sie `INSERT` Operationen in der Reihenfolge der Sortierschlüssel aus.
+ Verwenden Sie nach Möglichkeit Sortierschlüssel in der `GROUP BY` Klausel.

### Tipps zur Abfrageoptimierung
<a name="tuning-tips"></a>

Wir empfehlen Ihnen, Ihre Abfragen wie folgt zu optimieren:
+ Ordnen Sie zusammengesetzte Sortierschlüssel immer von der niedrigsten Kardinalität zur höchsten Kardinalität an, um eine optimale Effektivität zu erzielen.
+ Wenn der führende Schlüssel in einem zusammengesetzten Sortierschlüssel relativ eindeutig ist (d. h. er hat eine hohe Kardinalität), vermeiden Sie es, Ihrem Sortierschlüssel zusätzliche Spalten hinzuzufügen. Das Hinzufügen zusätzlicher Spalten hat nur geringe Auswirkungen auf die Abfrageleistung, erhöht jedoch die Wartungskosten.

## Bewerten Sie die Effektivität der Sortierschlüssel
<a name="sort-key-effectiveness"></a>

Um Ihre Abfragen zu optimieren, müssen Sie in der Lage sein, die Effektivität Ihrer Abfragen zu bewerten. Es wird empfohlen, die Ansicht [SVL\_QUERY\_SUMMARY](https://docs.aws.amazon.com/redshift/latest/dg/r_SVL_QUERY_SUMMARY.html) zu verwenden, um allgemeine Informationen über die Ausführung einer Abfrage zu finden. In dieser Ansicht können Sie das Attribut verwenden, `IS_RRSCAN` um festzustellen, ob ein `EXPLAIN` Planschritt einen bereichsbeschränkten Scan verwendet. Sie können das Attribut auch verwenden`rows_pre_filter`, um die Selektivität eines Sortierschlüssels zu bestimmen.

Sie können auch eine Admin-Ansicht mit dem GitHub Namen [v\_my\_last\_query\_summary](https://github.com/awslabs/amazon-redshift-utils/blob/master/src/AdminViews/v_my_last_query_summary.sql) verwenden. In der Ansicht werden Informationen für die letzte Abfrage angezeigt, die ausgeführt wurde.

Die folgende Anweisung zeigt, wie Sie allgemeine Informationen zur Ausführung einer Abfrage finden.

```
select lpad(' ',stm+seg+step) || label as label, 
       rows, 
       bytes, 
       is_diskbased, 
       is_rrscan, 
       rows_pre_filter 
from svl_query_summary 
where query = pg_last_query_id() 
order by stm, seg, step;
```

Die vorherige Abfrage gibt die folgende Beispielausgabe zurück.



![Beispielausgabe der vorherigen Abfrage.](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/query-best-practices-redshift/images/query-output.png)


## Kenne deine Tabelle
<a name="know-table"></a>

Es ist wichtig, die kritischen Eigenschaften Ihrer Tabelle zu verstehen. Gehen Sie wie folgt vor, um mehr über Ihre Tabelle zu erfahren:
+ Verwenden Sie [PG\_TABLE\_DEF, um Informationen zu Tabellenspalten](https://docs.aws.amazon.com/redshift/latest/dg/r_PG_TABLE_DEF.html) anzuzeigen.
+ Verwenden Sie [SVV\_TABLE\_INFO](https://docs.aws.amazon.com/redshift/latest/dg/r_SVV_TABLE_INFO.html), um umfassendere Informationen über eine Tabelle anzuzeigen, einschließlich Datenverteilungsverzerrung, Schräglage der Schlüsselverteilung, Tabellengröße und Statistiken.

## Wählen Sie den richtigen Tabellenverteilungsstil
<a name="distribution-style"></a>

Wenn sie eine Abfrage ausführen, führt der Abfrageoptimierer nach Bedarf eine Neuverteilung der Zeilen zu den Datenverarbeitungsknoten durch, um Join- oder Aggregierungsoperationen durchführen zu können. Das Ziel bei der Auswahl eines Tabellenverteilungsstils besteht darin, die Auswirkungen des Umverteilungsschritts zu minimieren, indem die Daten dort platziert werden, wo sie benötigt werden, bevor Sie die Abfrage ausführen. 

Wir empfehlen den folgenden Ansatz zur Auswahl des richtigen Tabellenverteilungsstils:
+ Vermeiden Sie Broadcasting und Redistribution in einem Abfrageausführungsplan, indem Sie die Zeilen innerhalb desselben Knotens zusammenlegen. Wenn Sie beispielsweise eine `DISTKEY` auswählen, können Sie die Faktentabelle und die eindimensionale Tabelle auf ihre gemeinsamen Spalten verteilen. Wählen Sie die größte Dimension auf der Grundlage der Größe des gefilterten Datasets. Nur die in dem Join verwendeten Zeilen müssen verteilt werden. Berücksichtigen Sie daher die Größe des Datensatzes nach der Filterung und nicht die Größe der Tabelle.
+ Stellen Sie sicher, dass die Spalte, in der der Verteilungsschlüssel erstellt wird, nicht schief ist. Andernfalls könnte ein Rechenknoten mehr Arbeit leisten als andere. Wenn Sie eine Schiefe feststellen, sollten Sie in Erwägung ziehen, die Spalte mit dem Verteilungsschlüssel zu ändern. Eine Spalte kann als Kandidat für einen Verteilungsschlüssel in Betracht gezogen werden, wenn es sich bei ihren Werten um gleichmäßig verteilte Werte oder um hohe Kardinalwerte handelt.
+ Wenn die in der Join-Bedingung verwendete Tabelle klein ist (weniger als 1 GB), sollten Sie den Verteilungsstil `ALL` berücksichtigen.
+ Sie können den Verteilungsschlüssel komprimieren, müssen jedoch die Komprimierung der Sortierschlüsselspalte (insbesondere der ersten Spalte des Sortierschlüssels) vermeiden.

**Anmerkung**  
Wenn Sie die automatische Tabellenoptimierung verwenden, müssen Sie den Verteilungsstil Ihrer Tabelle nicht wählen. Weitere Informationen finden Sie unter [Arbeiten mit automatischer Tabellenoptimierung](https://docs.aws.amazon.com/redshift/latest/dg/t_Creating_tables.html) in der Amazon Redshift Redshift-Dokumentation. Wenn Amazon Redshift den geeigneten Verteilungsstil auswählt, geben Sie `AUTO` für den Verteilungsstil an.