value_stream-Tabelle in PostgreSQL partitionieren
Eine value_stream-Tabelle mit vielen Daten kann dazu führen, dass zeitbasierte Abfragen und Bereinigungsoperationen aufgrund der resultierenden Tabellenscans viel Zeit in Anspruch nehmen und die Gesamtlast des Servers erhöhen. Wöchentliche oder monatliche Partitionen und entsprechende drop-partition-Operationen könnten einige dieser aktuellen Engpässe optimieren.
Verwenden Sie für eine umfangreiche Datenerfassung die Befehlszeile partition_value_stream_by_range_setting, um die value_stream-Tabelle zu partitionieren und so die Partitionierungsbereiche problemlos zu steuern, indem Sie z.B. Start- und Endzeit der Partitionierung und die Partitionierungsintervalle festlegen. Dazu gehören die Neupartitionierung alter Daten und das Ändern der Start-, End- oder Intervallzeit.
* 
Klonen oder sichern Sie die Datenbank, bevor Sie den Partitionierungsprozess initiieren, damit sie später wiederhergestellt werden kann.
Bei Verwendung der Befehlszeile partition_value_stream_by_range_setting wird Folgendes unterstützt:
1. Hinzufügen neuer Partitionen zu einer vorhandenen Tabelle oder Partition mit minimaler Ausfallzeit.
2. Neupartitionierung alter Daten ab einem bestimmten Zeitpunkt. Dies kann einige Zeit in Anspruch nehmen.
3. Neupartitionierung mit einer anderen Bereichseinstellung.
4. Verwendung der DEFAULT-Partition zum Speichern von Informationen, wenn die Daten zu keiner Partition gehören.
Erstellen Sie zum Partitionieren Ihrer value_stream-Tabelle regelmäßige Partitionen. Verwenden Sie das Datenbank-Scheduler-Tool, um sicherzustellen, dass alle zukünftigen erfassten Daten in die nächsten Partitionen geschrieben werden.
Für die Befehlszeile partition_value_stream_by_range_setting sind die folgenden Parameter verfügbar:
Parametername
Beschreibung
Standardwert
Kommentar
host
Datenbank-Host
Obligatorisch
Port
Datenbank-Port
Obligatorisch
database
Name der Datenbank, in der sich die value_stream-Tabelle befindet
Obligatorisch
username
Datenbankbenutzer
Obligatorisch
password
Datenbank-Passwort
Obligatorisch
partition_start_date
* 
Wenn die bereitgestellten Daten in der Vergangenheit liegen, kann es abhängig von der Datenmenge, die partitioniert werden muss, zu Ausfallzeiten kommen. Es wird empfohlen, den Vorgang zuerst in einer Testumgebung auszuführen und mögliche Ausfallzeiten zu analysieren. Wenn partition_start_date leer gelassen wird, gibt es keine Ausfallzeiten.
Legen Sie fest, ab welchem Zeitpunkt Sie Partitionen erstellen möchten. Das Datum kann in der Vergangenheit oder in der Zukunft liegen.
Der letzte Wert der Spalte "time" in der value_stream-Tabelle. Wenn keine Daten vorhanden sind, wird als Startdatum "current" verwendet.
Optional
Mögliche Formate:
JJJJ-MM-TT
JJJJ-MM-TT HH:MM
JJJ-MM-TT HH:MM:SS
JJJJ-MM-TT HH:MM:SS.MS
partition_end_date
Definieren Sie, ab welchem Zeitpunkt Sie keine Partitionen mehr erstellen möchten.
Obligatorisch
Mögliche Formate:
JJJJ-MM-TT
JJJJ-MM-TT HH:MM
JJJ-MM-TT HH:MM:SS
JJJJ-MM-TT HH:MM:SS.MS
Muss in der Zukunft liegen und mindestens größer als der letzte Wert der Spalte "time" plus das Intervall sein. Wenn keine Daten vorhanden sind, müssen die Daten größer als "current" + Intervall sein.
partition_interval
Obligatorisches Intervall für jede Partition
Mögliche Formate:
1h oder Stunden
1d oder 1 Tag
1 Monat
1y oder 1 Jahr
future_data_exists
Optional
no
Mögliche Werte:
yes oder no
Wenn "yes" (optional), dann unterstützt das Skript zukünftige Datenpartitionierungen.
Nach dem Ausführen der Befehlszeile wird die value_stream-Tabelle entsprechend den Parametern partitioniert, und Daten werden an die richtige Partition übertragen.
Gehen Sie wie folgt vor, um die Befehlszeile partition_value_stream_by_range_setting zu verwenden:
1. Wechseln Sie zur Site PTC Software-Download, navigieren Sie zum Ordner "ThingWorx PostgreSQL", und laden Sie das Skript partition_value_stream_by_range_setting.sh herunter.
2. Kopieren Sie das Skript auf einen Server, der mit der ThingWorx Datenbank verbunden ist.
3. Öffnen Sie eine Befehlszeile, und führen Sie den Befehl wie gewünscht mit den obigen Parametern aus.
Beispiel:/partition_value_stream_by_range_setting.sh -host localhost -port 5432 -database thingworx -username DBA -password Passwort -partition_start_date '2024-06-17 00:00:00.000' -partition_end_date '2025-06-17 00:00:00.000' -partition_interval '1 Monat'
* 
Sie können das Skript bearbeiten und die folgenden Parameter festlegen, um zu verhindern, dass bestimmte Parameter wiederholt angegeben werden müssen: DB_HOST, DB_PORT, DB_NAME, DB_USER DB_PASSWORD.
4. Pflegen Sie Ihre Partitionen. Erstellen Sie beispielsweise einen Scheduler, um zukünftige Partitionen hinzuzufügen und alte zu archivieren oder zu löschen. Eine große Anzahl von Partitionen kann jedoch die Zeit für die Abfrageplanung erheblich erhöhen. Vermeiden Sie daher die Verwendung von vielen tausend Partitionen.
War dies hilfreich?