DataSunrise Consegue la Certificazione AWS DevOps Competency per AWS DevSecOps e Monitoraggio, Logging e Performance

Utilizzare lo Schema delle Informazioni di Redshift per Migliorare le Prestazioni del Database

Utilizzare lo Schema delle Informazioni di Redshift per Migliorare le Prestazioni del Database

Introduzione

Questo articolo approfondisce lo schema del database Redshift, concentrandosi specificamente sulla sua implementazione dello schema di informazioni. Esploreremo come si confronta con strumenti simili in altri sistemi di database, come Microsoft SQL Server e PostgreSQL. Alla fine di questa guida, avrà una solida comprensione di come sfruttare le tabelle di sistema di Redshift per ottimizzare le sue strategie di gestione dei dati.

Che Cos’è il Information Schema in MS SQL Server?

Prima di entrare nei dettagli di Redshift, iniziamo con un punto di riferimento familiare: lo schema delle informazioni di Microsoft SQL Server.

Comprendere le Basi

In MS SQL Server, lo schema delle informazioni è un insieme di viste che forniscono metadati sugli oggetti in un database. È un modo standardizzato per accedere alle informazioni su tabelle, colonne, viste e altri oggetti del database.

Per esempio, per visualizzare tutte le tabelle in un database utilizzando lo schema delle informazioni di MS SQL Server, potrebbe usare una query come questa:

SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE';

Questa query restituirebbe un elenco di tutte le tabelle di base nel database corrente.

Schema del Database di Redshift: Strumenti di Informazione

Ora, rivolgiamoci a Redshift, un magazzino di dati su scala petabyte di Amazon Web Services. Sebbene Redshift sia basato su PostgreSQL, ha le sue tabelle di sistema e viste che servono uno scopo simile allo schema delle informazioni in altri sistemi di database.

Tabelle di Sistema in Redshift

Redshift fornisce un insieme di tabelle di sistema che memorizzano i metadati sui dati del cloud, le sue tabelle e altri oggetti. Queste tabelle di sistema sono prefissate con “PG_”, “STL_”, “STV_” o “SVV_”.

Redshift Database Information Schema - System Tables Diagram

Ecco alcune delle principali tabelle di sistema in Redshift:

  1. PG_TABLE_DEF: Contiene informazioni sulle definizioni delle tabelle.
  2. SVV_COLUMNS: Fornisce una vista di tutte le colonne nel database.
  3. SVV_TABLES: Offre una vista di tutte le tabelle nel database.

Vediamo un esempio di come utilizzare queste tabelle:

SELECT tablename, "column", type, encoding
FROM pg_table_def
WHERE schemaname = 'public';

Questa query restituirà informazioni su tutte le colonne nelle tabelle all’interno dello schema ‘public’, inclusi i loro nomi, tipi di dati e codifiche.

Query dello Schema del Database di Redshift

Per ottenere una visione completa del suo schema di database Redshift, può utilizzare query che combinano informazioni da più tabelle di sistema. Ecco un esempio:

SELECT
n.nspname AS schema_name,
c.relname AS table_name,
a.attname AS column_name,
t.typname AS data_type
FROM
pg_catalog.pg_class c
JOIN
pg_catalog.pg_namespace n ON n.oid = c.relnamespace
JOIN
pg_catalog.pg_attribute a ON a.attrelid = c.oid
JOIN
pg_catalog.pg_type t ON t.oid = a.atttypid
WHERE
c.relkind = 'r' -- Solo tabelle regolari
AND n.nspname NOT IN ('pg_catalog', 'information_schema')
AND a.attnum > 0 -- Escludi colonne di sistema
ORDER BY
schema_name, table_name, a.attnum;

Questa query fornisce una vista dettagliata del suo schema di database Redshift, inclusi i nomi degli schemi, i nomi delle tabelle, i nomi delle colonne e i tipi di dati.

Confronto tra Redshift e Strumenti di Informazione di PostgreSQL

Dato che Redshift è basato su PostgreSQL, è naturale chiedersi quali siano le somiglianze e le differenze nei loro strumenti di schema informativo.

Information Schema di PostgreSQL

PostgreSQL, come MS SQL Server, ha un INFORMATION_SCHEMA che è conforme allo standard SQL. Fornisce viste che offrono informazioni su tutti gli oggetti del database.

Per esempio, per elencare tutte le tabelle in PostgreSQL, potrebbe usare:

SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'public';

Redshift vs PostgreSQL

Sebbene Redshift sia basato su PostgreSQL, non include il standard INFORMATION_SCHEMA. Invece, fornisce le sue tabelle di sistema e viste. Questo è dovuto alla natura specializzata di Redshift come magazzino di dati colonnare, che richiede diversi strumenti di ottimizzazione e gestione.

Tuttavia, molti dei concetti sono simili. Per esempio, dove PostgreSQL ha information_schema.tables, Redshift ha SVV_TABLES. Entrambi forniscono metadati sulle tabelle nel database, ma i dettagli su quali informazioni sono disponibili e come vengono accessibili possono differire.

Utilizzare le Tabelle di Sistema di Redshift per Ottimizzare le Prestazioni

Comprendere le tabelle di sistema di Redshift può aiutare a ottimizzare le prestazioni del suo database. Esploriamo alcune applicazioni pratiche.

Identificare il Data Skew

Il data skew si verifica quando i dati sono distribuiti in modo disomogeneo tra i segmenti in Redshift. Questo può causare problemi di prestazioni. È possibile utilizzare le tabelle di sistema per identificare il data skew:

SELECT
trim(name) AS table,
slice,
count(*) AS num_values,
cast(100 * ratio_to_report(count(*)) over () AS decimal(5,2)) AS pct_of_total
FROM svv_diskusage
WHERE name IN ('your_table_name')
GROUP BY name, slice
ORDER BY name, slice;

Questa query mostra la distribuzione dei dati tra i segmenti per una tabella specifica, aiutando a identificare potenziali problemi di skew.

Monitorare le Prestazioni delle Query

Le tabelle STL_QUERY e SVL_QUERY_SUMMARY di Redshift possono aiutarla a monitorare le prestazioni delle query:

SELECT
q.query,
q.starttime,
q.endtime,
q.elapsed/1000000 AS elapsed_seconds,
s.segment,
s.step,
s.maxtime/1000000 AS step_seconds,
s.rows,
s.bytes
FROM stl_query q
JOIN svl_query_summary s ON q.query = s.query
WHERE q.starttime >= DATEADD(hour, -1, GETDATE())
ORDER BY q.query, s.segment, s.step;

Questa query fornisce informazioni dettagliate sulle query eseguite nell’ultima ora, inclusi il loro tempo di esecuzione e l’utilizzo delle risorse.

Best Practices per Utilizzare lo Schema delle Informazioni di Redshift

Per sfruttare al meglio le tabelle e le viste di sistema di Redshift, consideri le seguenti best practices:

  1. Monitori regolarmente le statistiche delle tabelle utilizzando SVV_TABLE_INFO per assicurarsi che le sue tabelle siano ottimizzate.
  2. Utilizzi STL_ALERT_EVENT_LOG per identificare e affrontare proattivamente i problemi di prestazioni.
  3. Faccia uso di SVV_VACUUM_PROGRESS per monitorare e gestire le operazioni di VACUUM.
  4. Utilizzi SVV_DATASHARE_OBJECTS per gestire la condivisione dei dati tra i cluster Redshift.

Ricordi, mentre queste tabelle di sistema forniscono preziose informazioni, interrogarle frequentemente può influire sulle prestazioni. Le utilizzi con giudizio e consideri di memorizzare i risultati in cache dove appropriato.

Conclusione

Comprendere e utilizzare efficacemente gli strumenti dello schema delle informazioni di Redshift è cruciale per gestire e ottimizzare il suo magazzino di dati. Sebbene differisca dallo standard INFORMATION_SCHEMA presente in SQL Server e PostgreSQL, le tabelle e le viste di sistema di Redshift offrono potenti capacità per monitorare, diagnosticare e ottimizzare il suo database.

Sfruttando questi strumenti, può ottenere approfondimenti significativi nel suo schema di database Redshift, monitorare le prestazioni e prendere decisioni informate sulla gestione dei dati e l’ottimizzazione delle query. Come con qualsiasi strumento potente, utilizzi queste capacità saggiamente per bilanciare la raccolta di informazioni con le prestazioni complessive del sistema.

Per chi cerca strumenti avanzati di sicurezza e conformità del database, consideri di esplorare DataSunrise. Le nostre soluzioni user-friendly e flessibili offrono una protezione completa del database. Visiti il nostro sito web per una demo online e scopra come può migliorare la sicurezza del suo database oggi.

Successivo

Cultura della Condivisione dei Dati

Cultura della Condivisione dei Dati

Scopri di più

Ha bisogno del nostro team di supporto?

I nostri esperti saranno lieti di rispondere alle Sue domande.

Informazioni generali:
[email protected]
Servizio clienti e supporto tecnico:
support.datasunrise.com
Richieste di collaborazione e alleanza:
[email protected]