Best practice per modelli e dati di ThingWorx > Gestione dei dati > Partizionamento dei dati di runtime
Partizionamento dei dati di runtime
Partizionamento della tabella value_stream in PostgreSQL (BETA)
Una tabella value_stream con un volume elevato 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.
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 meno recenti a partire da un momento specifico oppure di tutti i dati. 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
repartition_all_data
Obbligatorio
no
Valori possibili:
yes o no
Se = yes (facoltativo), lo script ignorerà la data d'inizio e ripartizionerà tutti i dati
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. Scaricare lo script partition_value_stream_by_range_setting.sh. Richiedere il percorso di download da support.ptc.com.
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?