Best practice per modelli e dati di ThingWorx > Gestione dei dati > Partizionamento dei dati di runtime > Partizionamento della tabella value_stream in PostgreSQL
Partizionamento della tabella value_stream in PostgreSQL
Una tabella value_stream con una quantità elevata di dati può rallentare le operazioni di eliminazione e le interrogazioni basate sul tempo a causa delle scansioni della tabella, aumentando così il carico complessivo sul server. Implementare partizioni settimanali o mensili, insieme a operazioni di drop-partition corrispondenti, potrebbe mitigare alcuni dei colli di bottiglia attuali.
Per l'inserimento di dati su larga scala, utilizzare la riga di comando partition_value_stream_by_range_setting per partizionare la tabella value_stream. In questo modo, è possibile gestire facilmente gli intervalli di partizionamento, ad esempio per definire quando iniziarlo o terminarlo, nonché ripartizionare i dati meno recenti e modificare l'inizio, la fine o l'intervallo temporale.
* 
Ai fini del ripristino, clonare o eseguire il backup del database prima di avviare il processo di partizionamento.
L'utilizzo della riga di comando partition_value_stream_by_range_setting supporta quanto segue:
1. Aggiunta di nuove partizioni a una tabella o partizione esistente con un tempo di inattività minimo.
2. Ripartizionamento dei dati obsoleti a partire da un momento specifico. Questa operazione può richiedere tempo.
3. Ripartizionamento con un'impostazione di intervallo diversa.
4. Utilizzo della partizione di DEFAULT per memorizzare le informazioni se i dati non appartengono ad alcuna partizione.
Per partizionare la tabella value_stream, creare partizioni periodiche. Utilizzare lo scheduler del database per assicurarsi che tutti i dati inseriti in futuro rientrino nelle partizioni successive.
La riga di comando partition_value_stream_by_range_setting include i parametri seguenti:
Nome parametro
Descrizione
Valore di default
Commento
host
Host del database
Obbligatorio
port
Porta del database
Obbligatorio
database
Nome del database in cui si trova la tabella value_stream
Obbligatorio
username
Utente del database
Obbligatorio
password
Password del database
Obbligatorio
partition_start_date
* 
Se i dati specificati appartengono al passato, potrebbero verificarsi tempi di inattività, a seconda della quantità di dati che è necessario partizionare. Si consiglia di eseguire questa operazione prima in un ambiente di test e analizzare eventuali interruzioni. Se partition_start_date viene lasciato vuoto, non ci saranno tempi di inattività.
Definire il momento a partire dal quale si desidera creare le partizioni. Può essere nel passato o nel futuro.
L'ultimo valore della colonna "time" nella tabella value_stream. In assenza di dati, impostare start date=current.
Facoltativo
Formati possibili:
AAAA-MM-GG
AAAA-MM-GG HH:MM
AAA-MM-GG HH:MM:SS
AAAA-MM-GG HH:MM:SS.MS
partition_end_date
Definire il momento a partire dal quale si desidera interrompere la creazione di partizioni.
Obbligatorio
Formati possibili:
AAAA-MM-GG
AAAA-MM-GG HH:MM
AAA-MM-GG HH:MM:SS
AAAA-MM-GG HH:MM:SS.MS
Deve essere un valore futuro e almeno maggiore dell'ultimo valore della colonna "time" più l'intervallo. In assenza di dati, deve essere maggiore del valore corrente + intervallo.
partition_interval
Intervallo obbligatorio per ogni partizione.
Formati possibili:
1h o hours
1d o 1day
1 month
1y o 1year
future_data_exists
Facoltativo
no
Valori possibili:
yes o no
Se = yes (facoltativo), lo script supporta il partizionamento dei dati in futuro
Dopo l'esecuzione della riga di comando, viene eseguito il partizionamento della tabella value_stream in base ai parametri e i dati vengono inseriti nella partizione corretta.
Per utilizzare la riga di comando partition_value_stream_by_range_setting, attenersi alla procedura descritta di seguito.
1. Accedere al sito PTC Software Download, passare alla cartella ThingWorx PostgreSQL e scaricare lo script partition_value_stream_by_range_setting.sh.
2. Copiare lo script in un server connesso al database ThingWorx.
3. Aprire una riga di comando ed eseguire il comando come desiderato utilizzando i parametri precedenti.
Ad esempio:/partition_value_stream_by_range_setting.sh -host localhost -port 5432 -database thingworx -username DBA -password password -partition_start_date '2024-06-17 00:00:00.000' -partition_end_date '2025-06-17 00:00:00.000' -partition_interval '1 months'
* 
Per evitare di specificare più volte determinati parametri, è possibile modificare lo script e impostare i parametri seguenti: DB_HOST, DB_PORT, DB_NAME, DB_USER, DB_PASSWORD.
4. Gestire le partizioni. Ad esempio, creare uno scheduler per aggiungere partizioni future e archiviare o eliminare quelle precedenti. Un numero elevato di partizioni può tuttavia aumentare in modo significativo il tempo di pianificazione delle interrogazioni, pertanto è consigliabile evitare di utilizzare migliaia di partizioni.
È stato utile?