- Kategorien:
Systemfunktionen (Systeminformationen)
SYSTEM$ESTIMATE_AUTOMATIC_CLUSTERING_COSTS¶
Gibt die geschätzten Kosten zurück, die mit der Aktivierung von Automatic Clustering für eine Tabelle verbunden sind. Mit dieser Funktion können Sie Folgendes tun:
Schätzen der Kosten für das erstmalige Clustering einer Tabelle.
Schätzen für Kosten für die Änderung des Gruppierungsschlüssels einer Tabelle.
Wenn möglich, Abschätzen der Kosten, die mit der Wartung der Tabelle verbunden sind, nachdem sie um den angegebenen Schlüssel geclustert wurde. Manchmal benötigt eine Tabelle mehr DML-Verlauf, um die zukünftigen Kosten für die Wartung abzuschätzen.
Wichtig
Die von der Funktion SYSTEM$ESTIMATE_AUTOMATIC_CLUSTERING_COSTS zurückgegebenen Kostenschätzungen werden mit bestmöglichen Bemühungen vorgenommen. Die geschätzten Kosten können allerdings erheblich (bis zu 100 % oder in seltenen Fällen um ein Vielfaches) von den tatsächlich realisierten Kosten abweichen.
Syntax¶
SYSTEM$ESTIMATE_AUTOMATIC_CLUSTERING_COSTS( ' ' ,
[ '( [ , ... ] )' ] )
Argumente¶
- ‚
table_name
‘ Name der Tabelle, für die Sie die geschätzten Clustering-Kosten zurückgeben möchten.
- ‚
(expr1 [ , expr2 ... ])
‘ Der vorgeschlagene Gruppierungsschlüssel für die Tabelle ist, wo jeder Ausdruck in eine Tabellenspalte aufgelöst wird. Die Funktion schätzt die Kosten für das Clustering der Tabelle unter Verwendung dieser Spalten als Gruppierungsschlüssel.
Auch wenn nur ein Spaltenname oder Ausdruck übergeben wird, muss dieser in Klammern gesetzt sein.
Dieses Argument ist für eine Tabelle ohne Gruppierungsschlüssel erforderlich. Ein Fehler wird zurückgegeben, wenn das Argument nicht angegeben wird.
Dieses Argument ist optional für eine Tabelle mit einem Gruppierungsschlüssel. Wenn das Argument weggelassen wird, schätzt die Funktion die Kosten für das Clustering der Tabelle unter Verwendung des aktuellen Gruppierungsschlüssels der Tabelle.
Rückgabewerte¶
Gibt einen Wert vom Typ VARCHAR zurück. Die zurückgegebene Zeichenfolge ist im JSON-Format und enthält die folgenden Name/Wert-Paare:
warning
Zeigt an, ob Bedingungen die Genauigkeit der Kostenschätzung oder die Auswirkungen der Wahl eines Gruppierungsschlüssels beeinflussen könnten.
reportTime
Datum, an dem die Ausgabe der Funktion generiert wurde.
clusteringKey
Spalten, aus denen sich der Gruppierungsschlüssel zusammensetzt.
initial
Beschreibt die voraussichtlichen Kosten für das Clustering der Tabelle um den angegebenen Gruppierungsschlüssel. Die geschätzten Kosten für die Wartung der Tabelle, sobald sie geclustert ist, sind nicht enthalten. Das
initial
JSON-Objekt enthält die folgenden Name/Wert-Paare.unit
Gibt die Einheiten an, in denen die anfänglichen Kosten ausgedrückt werden.
value
Gibt die Kosten für das Clustering der Tabelle an, ausgedrückt in
unit
.comment
Interpretiert die anfänglichen Clustering-Kosten.
maintenance
Beschreibt die voraussichtlichen Kosten für die Wartung einer gut geclusterten Tabelle, nachdem sie erstmalig geclustert wurde. Diese Vorhersage basiert auf der jüngsten DML-Aktivität, denn eine Tabelle wird neu geclustert, wenn sie sich ändert.
Ein leeres Objekt bedeutet, dass Snowflake keine Kostenschätzung für die Wartung erstellen konnte. In den meisten Fällen ist Snowflake nicht in der Lage, einen Schätzung für die Wartung zu erstellen, da die Tabelle nicht über einen ausreichenden DML-Verlauf verfügte oder in der letzten Woche nicht genügend unterstützte DML-Typen zur Verfügung standen, um die Kosten genau vorherzusagen.
unit
Gibt die Einheiten an, in denen die Kosten ausgedrückt werden.
value
Gibt an, wie viel die Wartung der Tabelle nach dem ersten Clustering kosten wird, ausgedrückt in
units
pro Tag.comment
Enthält den Zeitraum, in dem Kosten anfallen, und den Zeitrahmen, auf dem die Schätzung basiert.
Anforderungen an die Zugriffssteuerung¶
Die Berechtigungen, die für die Schätzung der Kosten erforderlich sind, entsprechen denen, die zum Lesen der Tabelle und zum Ändern des Gruppierungsschlüssels erforderlich sind. Sie benötigen die folgenden Berechtigungen:
SELECT- und INSERT-Berechtigungen für die, oder OWNERSHIP-Berechtigung für die Tabelle.
USAGE- oder OWNERSHIP-Berechtigung für das übergeordnete Schema und die übergeordnete Datenbank.
Nutzungshinweise¶
Die Kostenschätzungen, die von der Funktion SYSTEM$ESTIMATE_AUTOMATIC_CLUSTERING_COSTS zurückgegeben werden, basieren auf einer Stichprobe einer Teilmenge von Mikropartitionen aus Ihrer Tabelle und der Erfassung der Clustering-Ausführungszeit. Je nach den untersuchten spezifischen Mikropartitionen und der Systemgeschwindigkeit können die Kostenschätzungen zwischen den Ausführungen der Funktionen abweichen.
Um die bestmögliche Präzision zu erzielen, können Sie SYSTEM$ESTIMATE_AUTOMATIC_CLUSTERING_COSTS mehrmals ausführen und den Durchschnitt der Ergebnisse ermitteln. Die Funktion verwendet Beispiele für Clustering-Jobs und erfasst deren Ausführungszeit. Die angegebenen Kosten können abhängig von der Systemgeschwindigkeit schwanken. Wenn Sie die Funktion mehrmals ausführen und den Durchschnitt der Ergebnisse bilden, können Sie eine genauere Kostenschätzung vornehmen.
Der häufigste Grund für eine ungenaue Schätzung der Wartungskosten ist, dass die DML-Muster der Vergangenheit, die der Schätzung zugrunde liegen, nicht mit den DML-Mustern der Zukunft übereinstimmen.
Snowflake kann in den meisten Fällen eine einmalige Kostenschätzung und in einigen Fällen eine Kostenschätzung für die Wartung erstellen. Wenn die Funktion nicht in der Lage ist, eine Kostenschätzung für die Wartung zu erstellen, gibt Snowflake in der Ausgabe einen Grund dafür an.
Beispiele¶
Gibt die geschätzten Kosten zurück, die mit der Definition der Spalten day
und tenantId
als Gruppierungsschlüssel für die Tabelle myTable
verbunden sind.
SELECT SYSTEM$ESTIMATE_AUTOMATIC_CLUSTERING_COSTS('myTable', '(day, tenantId)');
{
"reportTime": "Fri, 12 Jul 2024 01:06:18 GMT",
"clusteringKey": "LINEAR(day, tenantId)",
"initial": {
"unit": "Credits",
"value": 98.2,
"comment": "Total upper bound of one-time cost"
},
"maintenance": {
"unit": "Credits",
"value": 10.0,
"comment": "Daily maintenance cost estimate provided based on DML history from the
past seven days."
}
}