netezza appliance - di. · pdf filenetezza appliance danilo de benedictis...
TRANSCRIPT
![Page 2: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/2.jpg)
PROSSIMI ARGOMENTI:
GESTIONE TABELLE
CLUSTERED BASED TABLES
JOIN TRA TABELLE
![Page 3: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/3.jpg)
GESTIONE TABELLE
PERFORMANCE SU RDBMS TRADIZIONIALI Utilzzo degli Indici
Partitioning, ma utlizzo di Indici all’interno di ciascuna Partition
NETEZZA PARTITION Con Netezza le performance estreme sono raggiunte
tramite parallelizzazione massiva dei table scan sugliStorage Server
Utilizzo ZoneMap
Per ogni query di estrazione dati… Select colA, colB
from tableA where colC > 38 ;
…la query è inviata alle 100+ SPU, ed ogni SPU esegueun Full Table Scan per costruire il Result Set
Al termine i Result Set vengono uniti e restituiti al Client.
![Page 4: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/4.jpg)
GESTIONE TABELLE
INTRODOTTE CON TWINFIN LE CLUSTERED BASED TABLE (CBT): COSA SONO CREATE TABLE ... [ORGANIZE ON {(<column>) | NONE}]
1..4 organizing key: sono campi scelti per il clustering dei record di tabella.
I dati ‘organizzati’ vengono salvati nella stessa data-slice (o vicine)
Vengono create le Zone-Map per le ORG K.
Esempio: tabella CBT ordinata per: TRANSACTION_DATE
poi ORGANIZED per: TRANSACTION_TYPE
(stesso colore):
![Page 5: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/5.jpg)
GESTIONE TABELLE
CLUSTERED BASED TABLE (CBT): COME
SCEGLIERE:
Le Organized keys aiutano a reperire più
velocemente i dati, grazie alle Zone Maps,
quindi...
...le Organized keys vanno scelte in base ai filtri
maggiormente utilizzati dalle query.
Nell’esempio precedente, il filtro maggiormente
utilizzato è per TRANSACTION_TYPE.
![Page 6: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/6.jpg)
GESTIONE TABELLE
CLUSTERED BASED TABLE (CBT): BENEFICI Le CBT supportano le Multidimension Lookups:
da 1 a 4 campi
Le Organize Keys impongo ulteriori Zone Maps i.e. Migliori performance, se il datatype dei campi è supportato dalle Zone Maps: ZM default: date, timestamp, byteint, smallint, integer,
bigint
ZM x M.VIEW ORDER BY o ORG.K: char, varchar, nchar, nvarchar (solo i primi 8 bytes vengono utilizzati), numeric, float, double, bool, time, timetz, interval.
CBT riducono la necessita di pre-ordinare i dati prima del caricamento.
CBT non replica dati, o alloca ulteriore spazio, come invece fanno indici, Mview.
![Page 7: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/7.jpg)
GESTIONE TABELLE
CLUSTERED BASED TABLE (CBT) VS
ZONE MAPS:
Le ZM riassumono il RANGE dei dati di una
colonna presenti nel disco.
Le ORG.K. restringono i tempi di estrazione dei
dati ‘avvicinando’ le righe che hanno uguali valori
nei campi selezionati, riducendo i tempi del full-
table-scan.
![Page 8: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/8.jpg)
GESTIONE TABELLE
CLUSTERED BASED TABLE (CBT): UTILIZZO
Tipicamente, se una tabella è interrogata per un campo FIELD_1 di tipo DATE, caricarla ORDER BY FIELD_1, per sfruttare a pieno le Zone Maps.
Se le query filtrano per più campi diversi (multi-dimension) usare la ORGANIZE.
Dopo l’aggiunta (ALTER TABLE) di campi ORGANIZEd, Netezza NON riorganizza: lanciare la GROOM TABLE:
![Page 9: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/9.jpg)
GESTIONE TABELLE
GROOME TABLE <table_name> Organizza i record secondo la definizione della
ORGANIZE, avvicinando i record che partecipano alla ORGANIZE: stesso disk extent oppure vicino.
Rimuove lo spazio deleted o outdated (nzreclaim).
No lock sulla tabella.
nzreclaim deprecated dalla 6.0: usare GROOME.
GENERATE STATISTICS Collect info sulle tabelle, in modo da creare
EXECUTION PLAN ottimali
Best practice: eseguire dopo ogniLOAD/INS/UPD/DEL
![Page 10: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/10.jpg)
GESTIONE TABELLE
DELETE FROM <table> WHERE …
Cancella righe da una tabella, lasciano allocato lo
spazio vuoto che non viene recuperato.
TRUNCATE TABLE <table>
Cancella tutto il contenuto della tabella, liberando lo
spazio su disco che al successivo clean-up
[GROOME] viene reso disponibile.
Non può essere eseguito in una TRAN
DROP TABLE <table>
Elimina una tabella, liberando lo spazio su disco che
al successivo clean-up [GROOME] viene reso
disponibile.
![Page 11: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/11.jpg)
GESTIONE TABELLE
ALTER (VARCHAR(LEN)), DROP COLUMN
ALTER TABLE t3 MODIFY COLUMN (col1
VARCHAR(6));
Varchar Len -< up to 64000
RENAME
TABLE fornitori RENAME COLUMN indirizzo TO citta;
![Page 12: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/12.jpg)
JOIN TRA TABELLE
INNER JOIN
equivale a select .. from tab1 , tab2
Esempio:
SELECT COUNT(1)
FROM TAB1 T1
INNER JOIN TAB2 T2
ON T1.FIELD_A = T2.FIELD_A
![Page 13: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/13.jpg)
JOIN TRA TABELLE
LEFT OUTER JOIN
Esempio:SELECT T1.AAA, T1.BBB, T2.CCC
FROM TAB1 T1
LEFT OUTER JOIN TAB2 T2
ON T1.FIELD_A = T2.FIELD_A
TUTTE LE RIGHE DI T1 T1.AAA, T1.BBB SEMPRE VALORIZZATI
DOVE MATCH, LE RIGHE DI T2NOT MATCH => T2.CCC = NULL
MATCH => T2.CCC VALORIZZATO
![Page 14: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/14.jpg)
JOIN TRA TABELLE
RIGHT OUTER JOIN (simmetrica di LOJ)
Esempio:SELECT T1.AAA, T1.BBB, T2.CCC
FROM TAB1 T1
RIGHT OUTER JOIN TAB2 T2
ON T1.FIELD_A = T2.FIELD_A
TUTTE LE RIGHE DI T2 T2.CCC SEMPRE VALORIZZATO
DOVE MATCH, LE RIGHE DI T1NOT MATCH => T1.AAA, T1.BBB = NULL
MATCH => T1.AAA, T1.BBB VALORIZZATI
![Page 15: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/15.jpg)
JOIN TRA TABELLE
SELF-JOIN
JOIN DI UNA TABELLA CON SE’ STESSA
Esempio (città con intervalli temperatura più ‘larghi’ delle altre città):SELECT
W1.city, W1.temp_lo AS low, W1.temp_hi AS high,
W2.city, W2.temp_lo AS low, W2.temp_hi AS high
FROM weather W1, weather W2
WHERE W1.temp_lo < W2.temp_lo
AND W1.temp_hi > W2.temp_hi;
![Page 16: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/16.jpg)
JOIN TRA TABELLE
FULL OUTER JOIN
RESTITUISCE TUTTE LE RIGHE DELLE
TABELLE IN JOIN
SELECT *
FROM cows_one
FULL OUTER JOIN cows_two
ON cows_one.cnumber = cows_two.cnumber;
![Page 17: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/17.jpg)
COMPARAZIONE CON LOGICHE FUZZY
Levenshtein Edit Distance:
<int4 value> = le_dst(<str_1>, <str_2>)
Esempio: le_dst('sow','show') = 1
‘h’ in più
Esempio: le_dst('hello','Hollow') = 3
H maiuscola
‘o’ al posto di ‘e’
‘w’ in più
![Page 18: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/18.jpg)
COMPARAZIONE CON LOGICHE FUZZY
Damerau-Levenshtein Edit Distance:
<int4 value> = dle_dst (<str_1>, <str_2>)
Simile al precedente, ma la trasposizione di
caratteri vale 1 non 2:
Esempio:
select le_dst('two','tow') = 2
select dle_dst(‘two',‘tow') = 1
![Page 19: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/19.jpg)
PROSSIMI ARGOMENTI:
COMBINE TRA TABELLE
TRANSACTION ISOLATION
![Page 20: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/20.jpg)
COMBINE TRA TABELLE
UNION
Unione dei risultati di 2+ query
Eliminazione dei risultati ridondati
UNION OR
UNION ALL
Mostra tutte le righe, anche quelle ridondate
{0,1,2,2,2,2,3,N,N} UNION ALL {1,2,2,3,5,5,N,N,N}
= {0,1,1,2,2,2,2,2,2,3,3,5,5,N,N,N,N,N}
![Page 21: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/21.jpg)
COMBINE TRA TABELLE
INTERSECT
Intersezione dei risultati di 2+ query
INTERSECT AND
INTERSECT ALL
In caso di righe ridondate, mostra tutte le righe
con minore cardinalità.
{0,1,2,2,2,2,3,N,N} INTERSECT ALL
{1,2,2,3,5,5,N,N,N}
= {1,2,2,3,N,N}
![Page 22: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/22.jpg)
COMBINE TRA TABELLE
EXCEPT / MINUS
Delta tra i risultati di 2 query (Q1 – Q2)
Eliminazione dei risultati ridondati {0,1,2,2,2,2,3,N,N} EXCEPT {1,2,2,3,5,5,N,N,N}
= {0}
EXCEPT / MINUS ALL
In caso di righe ridondate, mostra tutte le righe IN Più DELLA PRIMA TABELLA. {0,1,2,2,2,2,3,N,N} EXCEPT ALL{1,2,2,3,5,5,N,N,N}
= {0,2,2}
![Page 23: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/23.jpg)
COMBINE TRA TABELLE
PRECEDENZE: UNION ED EXCEPT/MINUS HANNO LA STESSA
PRIORITA’: VENGONO ESEGUITE IN ORDINE LEFT -> RIGHT
INTERCEPT HA PRIORITA’ SU UNION E EXCEPT/MINUS. S1 UNION S2 EXCEPT S3 UNION S4 =>
(((S1 UNION S2) EXCEPT S3) UNION S4)
S1 UNION S2 INTERSECT S3 MINUS S4 =>
((S1 UNION (S2 INTERSECT S3)) MINUS S4)
PER EVITARE CONFUSIONE O FORZARE PRIORITA’ DESIDERATE: USARE LE PARENTESI. (S1 UNION S2) INTERSECT (S3 MINUS S4)
![Page 24: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/24.jpg)
COMBINE TRA TABELLE
GESTIONE NULL:
NELLA COMPARE TRA CAMPI, UN CAMPO
CONTENENTE NULL NON E’ UGUALE AD UN
ALTRO CAMPO CONTENENTE NULL:
(NULL = NULL) => UNKWOWN
NELLA COMBINE TRA TABELLE, NULL E’
TRATTATO UGUALMENTE AGLI ALTRI
VALORI:
(NULL = NULL) => TRUE
![Page 25: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/25.jpg)
COMBINE TRA TABELLE
PROMOTION TRA DATATYPE NUM/CHAR:
![Page 26: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/26.jpg)
COMBINE TRA TABELLE
PROMOTION TRA DATATYPE NON
NUM/CHAR:
![Page 27: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/27.jpg)
GESTIONE TRANSAZIONI CONCORRENTI
Prevenzione delle tipologie di READ
‘sporche’:
DIRTY READS: una T0 può leggere dati scritti da
una T1 concorrente, non ancora committed.
NONREPEATABLE READS: una T0 ri-legge dati
già letti, e rileva dati modificati, committate da
una T1 che nel frattempo termina.
PHANTOM READ: una T0 ri-esegue una query
con search condition, e riceve un set di dati
diverso dalla precedente query, committate da
una T1 che nel frattempo termina.
![Page 28: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/28.jpg)
GESTIONE TRANSAZIONI CONCORRENTI
Isolation Level: 4 livelli read committed
read uncommitted
repeatable read
serializable
Netezza supporta tutti i 4 livelli ma...
... Implementa solo il ‘Serializable’ !
![Page 29: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/29.jpg)
PROSSIMI ARGOMENTI:
VISTE
VISTE MATERIALIZZATE
![Page 30: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/30.jpg)
GESTIONE VISTE
VIEW: PER SEMPLIFICARE L’ACCESSO AI DATI, PER UTENTI
CON VISIBILITA’ NON DEEP SUI DATI.
PER METTERE IN SICUREZZA I DATI PRESENTI SU TABELLA: ACCESSO CONSENTITO ALLA VIEW
ACCESSO NON CONSENTITO ALLA TABELLA SOTTOSTANTE
DEFINITA INTERFACCIA VERSO APPLICATIVI, INVARIANTE ALLA STRUTTURA DATI EVENTUALMENTE SI MODIFICA LA QUERY SOTTOSTANTE LA
VIEW, MA NON LA STRUTTURA DELLA STESSA.
INTERFACCIA VERSO APPLICATIVI RIMANE INVARIATA
SINTASSI: CREATE VIEW viewname AS SELECT query;
CREATE OR REPLACE: USATA PER MANTENERE LE ACL DELLA VIEW ORIGINARIA ALLA NUOVA VIEW
DROP, ALTER per RENAME, ALTER X CHANGE OWNER
![Page 31: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/31.jpg)
GESTIONE VISTE MATERIALIZZATE
SORTED, PROJECTED, AND MATERIALIZED VIEWS (SPM)
Proiezione di un subset delle colonne di una tabella, ordinate su uno specifico subset delle colonne in proiezione.
Le Viste materializzate vengono memorizzatesu una tabella fisica (su disco) con l’ordinamento richiesto.
Servono ad ottimizzare l’accesso a Tabellemolto grandi.
![Page 32: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/32.jpg)
GESTIONE VISTE MATERIALIZZATE
Il query planner utilizza le SPM View per
(eventualmente) ottimizzare l’accesso a tabelle,
anche se non richiesto esplicitamente, quindi
non è necessario modificare le applicazioni.
Performance migliorate grazie ad:
una riduzione della quantità di dati letti da disco
Dati già ordinatiottimizzazione utilizzo ZoneMaps
Ottimali se utilizzate per tabelle piccole (lookup)
![Page 33: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/33.jpg)
GESTIONE VISTE MATERIALIZZATE
BLOCK NUMBER DELLA TABELLA BASE
Netezza System aggiunge automaticamente una
colonna alle colonne scelte per le SPM
La colonna contiene – per ogni riga - il Block
Number della riga originaria (puntatore)
Il Block number viene utilizzato come indice per
la tabella base, ottimizzando l’accesso alla
stessa.
![Page 34: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/34.jpg)
GESTIONE VISTE MATERIALIZZATE
I dati delle SPM sono allocati sugli stessi
data-slice della corrispondente tabella base,
per ottimizzarne l’accesso.
CREATE MATERIALIZED VIEW
customers_mview
AS SELECT customer_name, customer_id
FROM customers
ORDER BY customer_id;
![Page 35: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/35.jpg)
GESTIONE VISTE MATERIALIZZATE
REGOLE PER CREAZIONE SPM:
Una sola tabella base nella FROM
Non è consentito utilizzare la WHERE nella
creazione delle SPM
Le colonne possono essere solo colonne della
tabella base, non espressioni. Quindi non sono
permessi:
aggregazioni, operatori matematici, casting,
DISTINCT, etc..
![Page 36: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/36.jpg)
GESTIONE VISTE MATERIALIZZATE
REGOLE PER CREAZIONE SPM:
La ORDER BY può essere applicata solo sucolonne presenti nella SELECT (projection list)
Se non è specificata la ORDER BY, l’ordinamento è uguale a quello della tabellabase
Non si può usare NULLS LAST o DESC nell’ORDER BY
La tabella base non può essere EXTERNAL, temporary oppure di sistema
![Page 37: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/37.jpg)
GESTIONE VISTE MATERIALIZZATE
MANUTENZIONE :
SPM:
Se si inseriscono righe sulla tabella base, esse: vengono aggiunte anche alle SPM costruite su di essa;
Vengono ‘appese’ in un’area unsorted, quindi è necessariofare un refresh della SPM, periodicamente.
Modifiche alla struttura della tabella base, invalidanola SPM:ERROR: Base table/view 'WEATHER' attr 'CITY' has
changed (precision); rebuild view 'WEATHER_V‘
Le righe cancellate dalla tabella base, vengono automaticamente cancellate anche dalle SPM collegate.
![Page 38: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/38.jpg)
GESTIONE VISTE MATERIALIZZATE
MANUTENZIONE :
REBUILD:
CREATE OR REPLACE MATERIALIZED VIEW weather_v AS
SELECT city, temp_lo, temp_hi
FROM weather
ORDER BY city;
Non usare la DROP/CREATE, perchè cambia object ID della SPM=> impatto sugli oggetti chereferenziano la SPM.
![Page 39: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/39.jpg)
GESTIONE VISTE MATERIALIZZATE
MANUTENZIONE :
DROP della SPM:DROP VIEW customers_mview; (non DROP
MATERIALIZED...)
libera spazio allocato per la SPM
DROP della tabella base:DROP anche della SPM
Netezza mantiene la definizione, trasformandola in una VIEW normale
Successivi accessi alla SPM danno errore
![Page 40: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/40.jpg)
GESTIONE VISTE MATERIALIZZATE
MANUTENZIONE :
ALTER VIEW customers_mview MATERIALIZE [option]:
Option = SUSPEND: Sospende l’utilizzo della SPM e degli oggetti referenzianti.
Truncate della SPM
Redirect alla tabella base
Usare SUSPEND per attività di manutenzione sui DB, come la RECLAIM, la RESTORE, o le NZLOAD.
Option = REFRESH: Ri-materializza la SPM, ricostruendo la projected structure.
Si usa dopo la SUSPEND
Si usa per ri-ordinare le SPM dopo: La SUSPEND
Pe ottimizzare gli accessi
Per ordinare le righe unsorted (inserite sulla tabella base dopo la CREATE SPM)
![Page 41: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/41.jpg)
GESTIONE VISTE MATERIALIZZATE
MANUTENZIONE :
REFRESH threshold:
Con GRANT da amministratore, è possibile impostare
un limite ai dati non ordinati, dopo il quale il sistema
forza la REFRESH della SPM.
SET SYSTEM DEFAULT MATERIALIZE
THRESHOLD TO <number>;
<number> rappresenta una percentuale:
Da 1 a 99
Default = 20
![Page 42: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/42.jpg)
GESTIONE VISTE MATERIALIZZATE
QUERY:
Non possiamo fare INSERT sulle SPM, ma solo
SELECT
In caso di SELECT sulla tabella base,
l’ottimizzatore verifica l’eventuale esistenza di
SPM collegate:
Se esistono, l’ottimizzatore decide se usarle in base al
predicted cost and performace.
Le SELECT sulle SPM possono richiedere più
memoria delle SELECT sulle tabelle base, a
causa delle righe un-sorted.
![Page 43: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/43.jpg)
GESTIONE VISTE MATERIALIZZATE
MIRRORING:
Le SPM vengono trattate su disco in maniera
analoga alle tabelle base. Quindi:
Il data slice contenente è in mirror con un’altra
partizione, presente su un altro disco
In caso di fail, il failover e la regeneration avvengono
anche per i dati delle SPM.
![Page 44: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/44.jpg)
GESTIONE VISTE MATERIALIZZATE
RECLAIM:
Non è possibile fare RECLAIM sulle SPM
In caso di RECLAIM sulle tabelle base:
1) le SPM afferenti vengono temporaneamente
SUSPENDED
2) La RECLAIM gira sulle tabelle base
3) Al termine, le SPM vengono riattivate, ma
rimangono SUSPENDED (necessario quindi un
REFRESH manuale)
Le operazioni sopra descritte, vengono fatte in
maniera transazionale.
![Page 45: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/45.jpg)
GESTIONE VISTE MATERIALIZZATE
NZLOAD ed SMP:
Non è possibile fare NZLOAD sulle SPM.
In caso di NZLOAD sulle tabelle base:
Le righe delle SPM afferenti vengono
automaticamente aggiornate
Process slow down
Best practice:
SUSPEND le SPM prima di NZLOAD
REFRESH le SPM dopo NZLOAD
![Page 46: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/46.jpg)
GESTIONE VISTE MATERIALIZZATE
NZ_BACKUP:
In caso di backup di un DB:
vengono salvate le definizioni delle SPM (come delle
viste normali)
Non vengono salvati i dati delle SPM
In caso di restore di un DB (o table-level restore)
Le SPM vengono rigenerate al termine del restore
![Page 47: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/47.jpg)
GESTIONE VISTE MATERIALIZZATE
ZONE MAPS: Netezza system crea Zone Maps per un campo della SPM se:
Il campo è di tipo INTEGER, DATE, TIMESTAMP
Per un campo della ORDER BY, di tipo: integers — 1-byte, 2-byte, 4-byte, and 8-byte
date
timestamp
char — all sizes, but only the first 8 bytes are used in the zone map
varchar — all sizes, but only the first 8 bytes are used in the zone map
nchar — all sizes, but only the first 8 bytes are used in the zone map
nvarchar — all sizes, but only the first 8 bytes are used in the zone map
numeric — all sizes except 128-bit numerics
float
double
bool
time
time w/timezone
interval
![Page 48: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/48.jpg)
GESTIONE VISTE MATERIALIZZATE
BEST PRACTICES: Tabelle con molte colonne, ma poche sono le più
utilizzate.
Colonne maggiormente restrittive: se una colonna: è spesso utilizzata nei filtri…
…i filtri escludono la maggior parte dei dati (es. Condizioneper intervallo temporale)…
…allora usare la colonna nell’ORDER BY.
Creare SPM con minor numero di colonne possibile, incluse quelle più restrittive, in modo che Netezza le possa usare come index verso la tabella base.
Ridurre al massimo le SPM insistenti sulla stessatabella baseCauserebbe degrado prestazionale nelle query, a causa
dei tempi spesi dall’optimizer.
![Page 49: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/49.jpg)
PROSSIMI ARGOMENTI:
SUBQUERY
FUNZIONI DI AGGREGAZIONE
![Page 50: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/50.jpg)
SUBQUERY
REGULAR SUBQUERY: query annidata in altre query, racchiusa da parentesi:
Esempio: SELECT StoreId FROM Stores
WHERE TotalSale > 0.01*
(SELECT SUM(TotalSales) FROM Stores);
TIPOLOGIE DI SUBQUERY:
ROW SUBQ: restituisce 0/1 riga, 1/n colonne
TABLE SUBQ: restituisce 0/n righe, 1/n colonne
SINGLETON SUBQ: restituisce esattamente 0/1 riga, con 1 colonna.
Le SUBQ vengono calcolate per prime, e vengono temporaneamente memorizzate per l’utilizzo finale.
![Page 51: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/51.jpg)
SUBQUERY
CORRELATED SUBQUERY: query annidata in altre query, ma che referenzia oggetti della query esterna.
Viene calcolata ripetutamente, diversamente dalle SUBQ.
Esempio: SELECT StoreID
FROM Stores S
WHERE S.TotalSales*0.1 < (SELECT SUM(i.Price) FROM Item i
WHERE S.StoreID = I.StoreId and I.ItemType = "Dairy");
In questo esempio, viene calcolata la somma dei Price nell’ambito dello stesso StoreID.
![Page 52: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/52.jpg)
SUBQUERY
CORRELATED SUBQUERY: spesso può
essere convertita in normale SUBQ in join:
Esempio precedente, equivale a:
SELECT S.StoreId FROM
Stores S ,
(SELECT I.StoreId, Sum(Price) DairySales
FROM Items I
WHERE I.ItemType = "Dairy" GROUP BY I.StoreId) D
WHERE S.StoreId = D.StoreId
AND S.TotalSales *0.1 < D.DairySales;
![Page 53: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/53.jpg)
SUBQUERY
CORRELATED SUBQUERY: RESTRIZIONI: Netezza converte le CORRELATED SUBQUERY in
SUBQ with JOIN.
CORR SUBQ soltanto nella WHERE
CORR SUBQ in INNER JOIN soltanto con operatore =
Non si possono usare: In operazioni d’insieme (UNION, INTERSECT, EXCEPT,
MINUS)
In aggregazioni (GROUP BY, HAVING)
In OR, CASE/WHEN, nelle liste della IN, nelle liste della SELECT.
PERFORMANCE EXPENSIVE: provare sempre a convertirle con la JOIN.
![Page 54: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/54.jpg)
FUNZIONI DI AGGREGAZIONE
AGGREGAZIONE DI GRUPPO:
restituiscono il risultato calcolato su 0-n
righe.
SELECT max(temp_lo) FROM weather;
Es. MAX, MIN
Usate anche con GROUP BY
Usate anche con GROUP BY .. HAVING ..
![Page 55: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/55.jpg)
FUNZIONI DI AGGREGAZIONE
AGGREGAZIONE SU FINESTRA (i.e.
WINDOWS ANALYTIC FUNCTIONS)
restituiscono il risultato calcolato su UN
GRUPPO DI 0-n righe DEFINITE DA UNA
FINESTRA.
ESEMPIO: data la tabella...
![Page 56: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/56.jpg)
FUNZIONI DI AGGREGAZIONE
AGGREGAZIONE SU FINESTRA:
Esempio 1:
SELECT year,
month,
salesk,
avg(salesk) OVER (PARTITION BY year ORDER BY month ROWS BETWEEN 1
PRECEDING AND 1 FOLLOWING)
FROM monthlysales;
Ogni riga, utilizza la precedente (se esiste) e la successiva (se esiste) in una finestra con ordinamento desiderato, per fare un calcolo aggregato.
![Page 57: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/57.jpg)
FUNZIONI DI AGGREGAZIONE
AGGREGAZIONE SU FINESTRA: risultato 1:
AVG(20,22,25) = (20+22+25)/3 = 67/3 = 22.33333
AVG(22,25,30) = (22+25+30)/3 = 77/3 =25.66666 Dov’è l’errore ???
![Page 58: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/58.jpg)
FUNZIONI DI AGGREGAZIONE
AGGREGAZIONE SU FINESTRA:
Esempio 2:
SELECT *,
sum(salesk)OVER (PARTITION BY year ORDER BY
month ROWS UNBOUNDED PRECEDING)
FROM monthlysales;
Ogni riga, utilizza tutte le precedenti della PARTITION.
![Page 59: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/59.jpg)
FUNZIONI DI AGGREGAZIONE
AGGREGAZIONE SU FINESTRA: risultato 2:
SUM(30,35,50) = 115
ANALYTIC FUNCTIONS: UNA SESSIONE SUCCESSIVA!!!
![Page 60: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/60.jpg)
<EOF>
![Page 61: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/61.jpg)
REFUSI
![Page 62: NETEZZA APPLIANCE - di. · PDF fileNETEZZA APPLIANCE Danilo De Benedictis –danilode@gmail.com NETEZZA SQL –DAY 3](https://reader034.vdocuments.mx/reader034/viewer/2022042503/5a731f467f8b9abb538e5825/html5/thumbnails/62.jpg)
NETEZZA SQL INTRODUCTION
1. ACCESSO A NETEZZA SQL CON NZSQL1. Logging On
2. Risposta ai Command
3. Management delle Sessioni
4. Supporto SSL per i Client
5. Variabili SQL di Sessione
2. nzsql COMMANDS1. Input
2. Output
3. Options
4. Miscellaneous
5. Slash
6. Query Buffer
3. nzsql EXIT CODE