Best Practices Hints & Tips e Novità SQL

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Best Practices Hints & Tips e Novità SQL"

Transcript

1 Best Practices Hints & Tips e Novità SQL A cura di Angelo Sironi 1 Statement SQL: Costi di riferimento EXPLAIN: Prevenire è meglio che curare Ricerche generiche: Tecniche da evitare e loro alternative NULL: Uso e abuso Architettura Batch e ottimizzazioni Multi-row Fetch / multi-row Insert Query Parallelism Ricerca binaria (aka dicotomica) Ulteriori ottimizzazioni dei consumi di CPU Fetch 1 Row Only; Optimize For 1 Row Temporary Table Extended Indicator Variable 2 1

2 Statement SQL: Costi di riferimento EXPLAIN: Prevenire è meglio che curare Ricerche generiche: Tecniche da evitare e loro alternative NULL: Uso e abuso Architettura Batch e ottimizzazioni Multi-row Fetch / multi-row Insert Query Parallelism Ricerca binaria (aka ( dicotomica) Ulteriori ottimizzazioni dei consumi di CPU Fetch 1 Row Only; Optimize For 1 Row Temporary Table Extended Indicator Variable 3 Ipotesi Processore da Mips Ignorato effetto MP Dati indicativi SQL Statement Consumo di CPU minimo (microsec ( microsec.) Istruzioni equivalenti SET :h = CURRENT DATE SELECT INTO :h FETCH 1 riga Multi-row FETCH 100 righe

3 Statement SQL: Costi di riferimento EXPLAIN: Prevenire è meglio che curare Ricerche generiche: Tecniche da evitare e loro alternative NULL: Uso e abuso Architettura Batch e ottimizzazioni Multi-row Fetch / multi-row Insert Query Parallelism Ricerca binaria (aka ( dicotomica) Ulteriori ottimizzazioni dei consumi di CPU Fetch 1 Row Only; Optimize For 1 Row Temporary Table Extended Indicator Variable 5 Funzione Fornire informazioni sulla strategia di accesso ai dati scelta dall ottimizzatore Tipo di accesso (es. guidato da uno o più indici) Sequenza di join Metodo di join Ecc. Invocazione SQL statico Opzione EXPLAIN ( NO, YES, ONLY) del comando BIND PACKAGE Statement EXPLAIN PACKAGE (nuovo in DB2 10) SQL statico o dinamico Statement EXPLAIN Pre-requisiti requisiti (minimi) Esistenza di una copia della tabella user.plan_table 6 3

4 EXPLAIN PAKAGE COLLECTION collection -name PAKAGE package-name VERSION version-name COPY copy-id Provoca l Explain di tutti gli statement del Package Il DB2 esternalizza in PLAN_TABLE una copia delle informazioni sulle strategia di accesso esistenti in formato interno Diversamente dal comando BIND EXPLAIN(ONLY), non viene generata una nuova strategia di accesso Non viene effettuato un BIND Si applica solo a Package bound con DB2 V9 o successivi 7 Statement SQL: Costi di riferimento EXPLAIN: Prevenire è meglio che curare Ricerche generiche: Tecniche da evitare e loro alternative NULL: Uso e abuso Architettura Batch e ottimizzazioni Multi-row Fetch / multi-row Insert Query Parallelism Ricerca binaria (aka ( dicotomica) Ulteriori ottimizzazioni dei consumi di CPU Fetch 1 Row Only; Optimize For 1 Row Temporary Table Extended Indicator Variable 8 4

5 SQL Request SQL Result RELATIONAL DATA SERVICES DATA MANAGER Evaluates STAGE 2 predicates Evaluates STAGE 1 ( sargable ) predicates BUFFER MANAGER 9 Efficienza Predicati Stage 1 Indexable Adeguatamente supportati da indici Stage 1 Gestiti dal Data Manager nell accesso al Buffer Pool Inibitori più comuni: presenza nei predicati di Funzioni scalari (es. T1.C1 = SUBSTR(T2.C1,1,4) ) Espressioni (es. T1.C1 + :h1 = :h2 ) Mismatch di tipo dato (es. T1.C1 = :h1 con C1 SMALLINT e :h1 DECIMAL(7,0)) 10 5

6 Tecniche/costrutti da non usare nei predicati CASE Expression :hostvar1 = costante OR Colonna = :hostav2.. ecc. Tecniche tollerate (ottimizzabili( esternamente) WHERE COL1 BETWEEN :hostvar1 AND :hostvar2 AND COL2 BETWEEN : hostvar3 AND :hostvar4 AND ecc. Uso di BETWEEN raccomandato al posto di predicati del tipo WHERE COL1 >= :hostvar1 AND COL1 <= :hostvar2 AND ecc. Eccezione: :hv BETWEEN COL1 AND COL2 Tecniche tollerate ( 11 2,3 FETCH per OPEN (di cui una con SQLCODE=100) Ca GETPAGE / OPEN 3 millisec.. di CPU in media) DECLARE CURS01 CURSOR FOR SELECT ecc. FROM TABLE_1 T1 INNER JOIN TABLE_2 T2 ON predicati di join WHERE T1.C1 = :H1 AND T1.C2 = :H2 AND ((CASE :H5 WHEN 0 THEN T1.C3 END = :H3 AND CASE :H5 WHEN 0 THEN T1.C4 END = :H4 ) OR (CASE :H3 WHEN 0 THEN T1.C5 = :H5 ) ) ORDER BY ecc. 12 6

7 Caso 1: 1 : sono noti i valori di ricerca di C3 e C4 DECLARE CURS01 CURSOR FOR SELECT ecc. FROM TABLE_1 T1 INNER JOIN TABLE_2 T2 ON predicati di join WHERE T1.C1 = :H1 AND T1.C2 = :H2 AND T1.C3 = :H3 AND T1.C4 = :H4 ORDER BY ecc. Caso 2: 2 : sono noti i valori di ricerca di C5 DECLARE CURS01 CURSOR FOR SELECT ecc. FROM TABLE_1 T1 INNER JOIN TABLE_2 T2 ON predicati di join WHERE T1.C1 = :H1 AND T1.C2 = :H2 AND T1.C5 = :H5 ORDER BY ecc. 7

8 Flusso originale (semplificato) OPEN CURS01 FETCH CURS01 Gestisci Riga CLOSE CURS01 ecc. 15 Flusso modificato (semplificato) Caso 1 Caso 2 IF OPEN CURS01A OPEN CURS01B FETCH CURS01A Gestisci Riga FETCH CURS01B CLOSE CUSR01A CLOSE CURS01B ecc. 16 8

9 Cardinalità della Tabella: 3,0 milioni SELECT ecc. INTO :H, FROM TABLE WHERE C1 = :H1 AND ( '' = :HX OR ID = :HID ) AND ( ( '' = :HY AND 0 = :HZ ) OR ( CX = :HX AND CY = :HY ) ) Valori medi per singola esecuzione Elapsed Time : 10,59 sec. Consumo di CPU : 2,074 sec. (ca. 2 miliardi di istr.) Getpage : Cardinalità della Tabella: 7,5 milioni SELECT COUNT ( * ) INTO :H FROM TABLE WHERE C1 = :H AND DATA BETWEEN :H AND :H AND ( C2 IN ( :H, :H ) ) AND ( :H IN ( C3, C4, ' ' ) ) AND ( :H IN ( C5, 0 ) ) AND ( :H IN ( C6, ' ' ) ) AND ( :H IN ( C7, ' ' ) ) AND ( :H IN ( C8, C9, ' ' ) ) AND ( C10 <> OR ( C10 = AND C11 <> XXXXXXXXX' )) Valori medi per singola esecuzione Elapsed Time : 7,097 sec. Consumo di CPU : 4,432 sec. (ca. 4,5 miliardi di istr.) Getpage :

10 Soluzione raccomandata Del tutto simile alla precedente Più semplice, non dovendo gestire OPEN/CLOSE e ciclo di FETCH Si suddivide in due, tre o più casi, a seconda della frequenza d uso e della capacità di filtro, usando dove possibile predicati di uguaglianza Caso 1: 1 predicati su C1, C2 (e C5?) Caso 2: 2 predicati su C1, C2 e C6 Caso 3: 3 ecc. Invece dell operatore CASE, si usino condizioni di BETWEEN, ed eventualmente hint per REOPT Riduzione del consumo di CPU attesa Uno o anche due ordini di grandezza Similmente per il caso 2B 19 WITH TEMP1 AS (SELECT C1, C2, C3, ecc. FROM TABLE WHERE C1 = :H AND DATA BETWEEN :H AND :H AND ( C2 IN ( :H, :H ) ) AND ( :H IN ( C3, C4, ' ' ) ) AND ( :H IN ( C5, 0 ) ) AND ( :H IN ( C6, ' ' ) ) AND ( :H IN ( C7, ' ' ) ) AND ( :H IN ( C8, C9, ' ' ) ) AND ( C10 <> OR ( C10 = AND C11 <> XXXXXXXXX' )) ), TEMP2 AS (SELECT COUNT(*) AS CONTA FROM TEMP1) SELECT T1.*, T2.CONTA FROM TEMP1 T1, TEMP2 T

11 SELECT omissis FROM TABLE_1 T1 LEFT OUTER JOIN TABLE_2 T2 ON omissis WHERE T1.C1 = COALESCE (CAST (? AS VARCHAR(8)), T1.C1 ) AND T1.C2 = COALESCE (CAST (? AS VARCHAR(5)), T1.C2 ) AND omissis AND T1.END_DATE <= CURRENT TIMESTAMP AND COALESCE ( T1.END_DATE, ( CURRENT TIMESTAMP + 1 SECOND ) ) > ( CURRENT TIMESTAMP ) Ambiente DRDA JDBC / ODBC Il DB2 non riesce ad usare in modo efficiente (Matching Mode) eventuali indici su T1.C1 e/o T1.C2 Ogni esecuzione della query provoca mediamente la scansione di pagine e un consumo di CPU di oltre 170 millisecondi (per Prepare, Open, 2-3 Fetch, Close) 21 Statement SQL: Costi di riferimento EXPLAIN: Prevenire è meglio che curare Ricerche generiche: Tecniche da evitare e loro alternative NULL: Uso e abuso Architettura Batch e ottimizzazioni Multi-row Fetch / multi-row Insert Query Parallelism Ricerca binaria (aka ( dicotomica) Ulteriori ottimizzazioni dei consumi di CPU Fetch 1 Row Only; Optimize For 1 Row Temporary Table Extended Indicator Variable 22 11

12 Problemi «logici» in presenza di NULL Risultati potenzialmente errati Maggiore complessità della codifica SQL Inefficienze Spazio disco e memoria Non abusare nell uso dei NULL Evitare di definire colonne come NULL-able, a meno che non se ne possa proprio fare a meno Attenzione: NULL è il default! 23 D1: Trovare i Fornitori che è noto che forniscono il Prodotto P1, ma di certo non in una quantità pari a 100 Q1a SELECT DISTINCT FX.COD_F FROM FORNITORI FX WHERE FX.PRODOTTO = 'P1' AND 100 NOT IN ( SELECT FY.QTA FROM FORNITORI FY WHERE FY.COD_F = FX.COD_F AND FY.PRODOTTO = 'P1') ; R1a 12

13 D1: Trovare i Fornitori che è noto che forniscono il Prodotto P1, ma di certo non in una quantità pari a 100 Q1b SELECT DISTINCT FX.COD_F FROM FORNITORI FX WHERE FX.PRODOTTO = 'P1' AND NOT EXISTS ( SELECT FY.QTA FROM FORNITORI FY WHERE FY.COD_F = FX.COD_F AND FY.PRODOTTO = 'P1' AND FY.QTA = 100 ) ; R1b Q2a (tautologia?) SELECT * FROM FORNITORI WHERE QTA = 100 OR QTA <> 100 R2a Q2t (tautologia!) SELECT * FROM FORNITORI WHERE QTA = 100 OR QTA <> 100 OR QTA IS NULL R2t 13

14 Q3 SELECT AVG(SALARIO) + AVG(COMM) AS AVG_SAL_1, AVG(SALARIO+COMM) AS AVG_SAL_2 FROM FORNITORI Esempio CREATE TABLE TEST (KEY INTEGER NOT NULL, VALID_FROM TIMESTAMP NOT NULL, VALID_TO TIMESTAMP ) Trovare il record con KEY = :h valido ora SELECT * FROM TEST WHERE VALID_FROM <= CURRENT TIMESTAMP AND (VALID_TO >= CURRENT TIMESTAMP OR VALID_TO IS NULL) Esistono un certo numero di varianti della soluzione precedente Alcune decisamente inefficienti 28 14

15 SELECT omissis FROM TABLE_1 T1 LEFT OUTER JOIN TABLE_2 T2 ON omissis WHERE T1.C1 = COALESCE (CAST (? AS VARCHAR(8)), T1.C1 ) AND T1.C2 = COALESCE (CAST (? AS VARCHAR(5)), T1.C2 ) AND omissis AND T1.END_DATE <= CURRENT TIMESTAMP AND COALESCE ( T1.END_DATE, ( CURRENT TIMESTAMP + 1 SECOND ) ) > ( CURRENT TIMESTAMP ) La colonna END_DATE, essendo NULLable,, non può essere parte della chiave di univocità Il DB2 non riesce ad usare in modo efficiente un eventuale indice sulla colonna END_DATE 29 NULL Non è un valore della colonna È un indicatore associato alla colonna Ogni colonna NULL-able richiede un byte in più Nel tablespace In ogni eventuale indice di cui risulta parte della chiave Su disco e nei buffer pool 30 15

16 Colonne Carattere Usare una stringa di blank SE VARCHAR, impostare LL = 0 Colonne DATE e TIMESTAMP usate per delimitare intervalli di validità Esempio per datatype DATE LOW-END = valore a scelta / default HIGH-END = (standard Java e SQL ISO/ANSI Temporal Support) oppure Reperimento del record valido ora SELECT * FROM TEST WHERE VALID_FROM <= CURRENT TIMESTAMP AND VALID_TO > CURRENT TIMESTAMP 31 Il DB2 10 per z/os introduce il supporto dello standard ANSI/ISO SQL per le costanti datetime Esempi della sintassi DATE ' ' -- valid date (ISO format) DATE ' ' -- valid date (EUR format) DATE ' ' -- invalid date (bad year) DATE ' ' -- invalid date (bad day) TIME '24:00:00' -- valid time (JIS, ISO format) TIME '24:00:01' -- invalid time (bad hour) TIME ' ' -- valid time (EUR format) TIME '12:01 AM' -- valid time (USA format) TIMESTAMP ' :55: ' -- valid (space and colons) Raccomandazione: specificare DATE invece di DATE( 2010 ( ) 06 ) per migliorare la portabilità e, forse, anche le prestazioni Evitare codifiche del tipo WHERE CHAR(data, ISO) = :h 32 16

17 Prima del DB2 10, il formato del tipo dato TIMESTAMP era fisso e forniva una precisione al microsecondo (10-6 secondi) Con il DB2 10, l utente può definire la precisione che preferisce minima = 0 (precisione al secondo) massima = 12 (precisione al picosecondo = secondi) Esempi: TS1 TIMESTAMP(0) TS2 TIMESTAMP(9) TS3 TIMESTAMP(12) CURRENT TIMESTAMP(12) La lunghezza della colonna varia di conseguenza Per i dettagli: si veda il Redbook SG Statement SQL: Costi di riferimento EXPLAIN: Prevenire è meglio che curare Ricerche generiche: Tecniche da evitare e loro alternative NULL: Uso e abuso Architettura Batch e ottimizzazioni Multi-row Fetch / multi-row Insert Query Parallelism Ricerca binaria (aka ( dicotomica) Ulteriori ottimizzazioni dei consumi di CPU Fetch 1 Row Only; Optimize For 1 Row Temporary Table Extended Indicator Variable 34 17

18 Premessa Batch = elaborazione di massa Elaborazione di massa richiama in modo connaturale elaborazione di insiemi / set processing Set Processing Uno dei cardini del Modello Relazionale Fonte di continui progressi funzionali e prestazionali nell implementazione dei sistemi e del linguaggio SQL Le varie forme di Prefetch e Block Fetch Query Parallelism Multi-row fetch OLAP Specification Inibitori Applicazioni Batch che pretendono di operare come applicazioni OLTP 35 Sintomi Elaborazione guidata da file sequenziale Elevato numero di SELECT INTO e/o elevato numero di OPEN CURSOR con pochissime FETCH per OPEN Spesso associato ad un limitato uso degli operatori relazionali Non infrequente un elevato numero di accessi a tabelle di pochi record Motivazioni addotte Riutilizzo del codice 36 18

19 Caso tipico di inapplicabilità Elaborazione guidata da file sequenziale SQL_CALL STMT SQL CPUPCT INDB2_TIME INDB2_CPU GETPAGE SELECT % 01:40: : SELECT % 19: : SELECT % 06: : OPEN % 00: : FETCH % 00: : CLOSE % 00: : SELECT % 00: : OPEN % 00: : FETCH % 00: : SELECT % 00: : CLOSE % 00: : Statement SQL: Costi di riferimento EXPLAIN: Prevenire è meglio che curare Ricerche generiche: Tecniche da evitare e loro alternative NULL: Uso e abuso Architettura Batch e ottimizzazioni Multi-row Fetch / multi-row Insert Query Parallelism Ricerca binaria (aka ( dicotomica) Ulteriori ottimizzazioni dei consumi di CPU Fetch 1 Row Only; Optimize For 1 Row Nuovi costrutti SQL Generazione di Chiavi di Univocità: Oggetto SEQUENCE Temporary Table Stored Procedure Extended Indicator Variable 38 19

20 Integrato in alcuni programmi di utilità utilità Es. DSNTIAUL Operano con valore di default = 100 Ogni FETCH legge 100 righe Punto di massimo vantaggio Vantaggi Mediamente, 50% ca. di riduzione del consumo di CPU Su letture di milioni di record per OPEN di cursore Pre-requisiti requisiti Set Processing Modifiche al codice applicativo 39 Un unico statement di INSERT può inserire una molteplicità di righe (<32,768) da un array Opzioni: ATOMIC: se va male l inserimento anche di una sola riga, tutto lo statement fallisce NOT ATOMIC: ciascuna riga trattata separatamente dale altre Lo statement GET DIAGNOSTICS fornisce informazioni diagnostiche per ciascuna riga per la quale l inserimento non è andato a buon fine L SQLCODE indica se L inserimento non è andato a buon fine per nessuna riga L inserimento è andato a buon fine per tutte le righe L inserimento non è andato a buon fine per almeno una riga 40 20

21 Ci si può aspettare fino al 40% di riduzione del consumo di CPU Minore se maggiore è il numero delle colonne e/o il numero degli indici Maggiore al crescere del numero delle righe inserite per statement di Insert 41 Statement SQL: Costi di riferimento EXPLAIN: Prevenire è meglio che curare Ricerche generiche: Tecniche da evitare e loro alternative NULL: Uso e abuso Architettura Batch e ottimizzazioni Multi-row Fetch / multi-row Insert Query Parallelism Ricerca binaria (aka ( dicotomica) Ulteriori ottimizzazioneidei consumi di CPU Fetch 1 Row Only; Optimize For 1 Row Nuovi costrutti SQL Generazione di Chiavi di Univocità: Oggetto SEQUENCE Temporary Table Stored Procedure Extended Indicator Variable 42 21

22 Pre-requisiti requisiti Elaborazione per insiemi / query gravosa Tabelle partizionate Disponibilità di risorse hw (macchina non satura) Attivazione SQL statico Attivabile al BIND tramite opzione DEGREE (ANY) SQL dinamico Attivabile tramite comando SQL SET CURRENT DEGREE = ANY (oppure :hostvar impostata al valore ANY ) Vantaggi Parte del consumo (non solo DRDA) scaricato su ziip Miglioramento dei tempi di esecuzione Trasparenza applicativa Cfr. Riferimenti [4] 43 Statement SQL: Costi di riferimento EXPLAIN: Prevenire è meglio che curare Ricerche generiche: Tecniche da evitare e loro alternative NULL: Uso e abuso Architettura Batch e ottimizzazioni Multi-row Fetch / multi-row Insert Query Parallelism Ricerca binaria (aka ( dicotomica) Ulteriori ottimizzazione dei consumi di CPU Fetch 1 Row Only; Optimize For 1 Row Nuovi costrutti SQL Generazione di Chiavi di Univocità: Oggetto SEQUENCE Temporary Table Stored Procedure Extended Indicator Variable 44 22

23 SQL_CALL STMT SECT SQL CPUPCT INDB2_TIME INDB2_CPU FETCH % 03: : OPEN % 01: : SELECT % 00: : FETCH % 00: : FETCH % 00: : OPEN % 00: : OPEN % 00: : CLOSE % 00: : La OPEN 4053 e le FETCH 6943 operano su una tabella di righe Oltre 36,3 milioni di Fetch Mediamente, ogni riga viene letta ca volte! Evitabile, senza stravolgere l architettura dell applicazione? 45 Letture duplicate: evitabili? Sort del file guida sulla base dei criteri di ricerca Se i criteri di ricerca non cambiano, i dati sono già nelle aree di memoria del programma 1234fr pr tr bdf jkefhy kjfh769i89j. oldkey = 0000 newkey = 1234 IF oldkey <> newkey do EXEC SQL SELECT C1, C2, C4 INTO :c1, :c2, :c3 FROM T1 WHERE K = :newkey ** test SQLCODE MOVE newkey to oldkey enddo 46 23

24 E se non è possibile pre-ordinare il file guida sulla chiave di ricerca? Alternative 1. Provare comunque ad utilizzare la tecnica appena indicata anche in assenza di ordinamento ottimale 2. Pre-caricare la tabella in memoria e effettuare ricerche binarie 47 Disponibile in Cobol da diversi lustri SEARCH - ricerca seriale (Attenzione ai costi!) SEARCH ALL ricerca binaria Consumi Per tabelle di cardinalità > 1000, fino a due ordini di grandezza di risparmio rispetto ad una SELECT INTO Pre-requisiti requisiti 1. La tabella deve presentare un criterio di univocità 2. Deve essere caricata in memoria ordinata secondo tale criterio 3. La ricerca deve prevedere predicati di uguaglianza in AND logico su tutte le colonne della chiave di univocità 4. La dimensione della tabella deve essere compatibile con al disponibilità di memoria 48 24

25 49 Se la ricerca Non qualifica tutte le colonne della chiave di univocità Qualifica una o più colonne con predicato di range Deve reperire più di una riga Opzioni Ricerca binaria su valore minimo del predicato di range o della colonna priva di predicato (se noto ); oppure Assegnazione di una chiave di univocità surrogata (v. esempio alla pagina successiva) 50 25

26 Caso tipico Ricerca del valore corrente ad una certa data Tasso di interesse Costo o prezzo di vendita di un articolo Ecc. Struttura dati essenziale KEY Chiave naturale INI_VAL Data di inizio validità END_VAL - Data di fine validità Valore - Dato di interesse Ricerca del VALORE in vigore alla data di interesse SELECT VALORE FROM T1 WHERE KEY =? AND INI_VAL <=? AND END_VAL >? 51 Il programma carica in memoria il risultato della query seguente SELECT KEY, ROW_NUMBER() OVER(PARTITION BY KEY ORDER BY END_VAL ASC ) AS ROWNUM, INI_VAL, END_VAL, VALORE FROM TABLE DESC ORDER BY KEY,

27 Il programma, invece di interrogare il DB2 esegue una ricerca binaria per uguaglianza sul valore di KEY di interesse e RWNUM =1 Prosegue con una ricerca sequenziale del dato di interesse (predicati temporali) fino a rottura di KEY Efficienza garantita se il numero medio di righe per chiave naturale (KEY, nell esempio) ) è almeno di un ordine di grandezza inferiore alla cardinalità di KEY Es. Card di KEY = 1.000; Table Card = Esempio Tabella con chiave di univocità su (C1, C2, C3) Esigenza: Reperire tutte le righe on valori noti per C1 e C3 Caricamento in memoria da tabella DB2 tramite SELECT * FROM (SELECT T.*, ROW_NUMBER() OVER(PARTITION BY C1,C3 ORDER BY C2) AS ROW_NUM FROM TABC123 T ) AS X ORDER BY C1, C3, ROW_NUM Note: 1. (C1, C3, ROW_NUM) è chiave di univocità 2. Tecnica applicabile anche se (C1, C2, C3) non è chiave di univocità 54 27

28 Statement SQL: Costi di riferimento EXPLAIN: Prevenire è meglio che curare Ricerche generiche: Tecniche da evitare e loro alternative NULL: Uso e abuso Architettura Batch e ottimizzazioni Multi-row Fetch / multi-row Insert Query Parallelism Ricerca binaria (aka ( dicotomica) Ulteriori ottimizzazioni dei consumi di CPU Fetch 1 Row Only; Optimize For 1 Row e linguaggio SQL Temporary Table Extended Indicator Variable 55 Fetch First n Rows Only Indica al DB2 che l applicazione è interessata solo alle prime n righe dell answer set Originariamente utilizzabile solo nell outer SELECT Ora (dal DB2 9) utilizzabile anche nelle sub-select Fetch First 1 Row Utilizzare nelle SELECT INTO che potrebbero restituire più di una riga Utilizzare nella definizione dei cursori dai quali si leggerà sempre solo la prima riga Trasformare questi cursori in SELECT INTO Utilizzare quando la SELECT INTO è interessata alla riga più recente o più vecchia, evitando la sub- Select 56 28

29 SELECT FROM MYTABLE A WHERE A.COL1 = :H1 AND AND A.COLX = ( SELECT MAX ( B.COLX ) FROM MYTABLE B WHERE B.COL_1 = :H1 AND ) SELECT FROM MYTABLE A WHERE A.COL1 = :H1 AND ORDER BY COLX DESC FETCH FIRST 1 ROWS ONLY 57 Optimize For n Row Un indicazione all Ottimizzatore per privilegiare la strategia di accesso meno costosa per il reperimento delle prime n righe L applicazione può comunque recuperare tutte le righe di interesse dell answer set Optimize For 1 Row (modifiche del DB2 10) Simile al comportamento pre DB2 10, ma il DB2 evita di prendere in considerazione qualunque strategia di accesso, anche se meno costosa, che comporti una fase di sort La strategia scelta può risultare più costosa delle attese L Apar PM56845 permette di operare come pre DB2 10 Alternativa suggerita, se non si usa l opzione dell apar PM56845 OPTIMIZE FOR 2 ROWS 58 29

30 Permette di condizionare l esecuzione di Insert e Update di una tabella a partire da un elenco di variabili o un array di variabili Quando le condizioni imposte sono verificate, si esegue l Update Quando le condizioni non sono verificate, si esegue l Insert Provoca l esecuzione di eventuali Trigger di Update / Insert La sequenza di esecuzione di Update / Insert può avere un impatto sulle prestazioni Questa implementazione è meno potente di uella resa disponibile dal DB2 for LUW, che permette Una subselect come input all operazione di Merge L esecuzione condizionata di Update, Insert e Delete 59 MERGE INTO items AS T USING (VALUES (:item_id, :qty)) AS N(id, qty) ON T.id = N.id WHEN MATCHED THEN UPDATE SET qty_on_hand = T.qty_on_hand + N.qty, T.upsert_ts = current timestamp WHEN NOT MATCHED THEN INSERT (id, qty_on_hand, upsert_ts) VALUES (N.id, N.qty, current timestamp) Si veda un esempio con un array come input in Materiale di Riferimento [3] 60 30

31 Il DB2 V8 ha introdotto SELECT From INSERT Il DB2 V9 ha aggiunto SELECT From MERGE, UPDATE, DELETE FROM data-change-table-reference 61 SELECT FROM INSERT Già disponibile con il DB2 V8 Esempio SELECT id, qty_on_hand, upsert_ts, row_nr FROM FINAL TABLE (INSERT INTO items ( id, qty_on_hand) INCLUDE (row_nr SMALLINT) VALUES (101, 100, 1),(102, 200, 2)) ORDER BY row_nr; 62 31

32 SELECT FROM UPDATE SELECT id, qty_on_hand, upsert_ts FROM FINAL TABLE (UPDATE items SET qty_on_hand = qty_on_hand + 100, upsert_ts = current timestamp WHERE id = 12345) ; SELECT FROM DELETE SELECT id, qty_on_hand, upsert_ts FROM OLD TABLE (DELETE FROM items WHERE id = 12345) ; 63 SELECT * FROM FINAL TABLE ( MERGE INTO items AS T USING (VALUES (:item_id, :qty)) AS N(id, qty) ON T.id =N.id WHEN MATCHED THEN UPDATE SET qty_on_hand = T.qty_on_hand + N.qty, T.upsert_ts= current timestamp WHEN NOT MATCHED THEN INSERT(id, qty_on_hand, upsert_ts) VALUES (N.id, N.qty, current timestamp) ) 64 32

33 TRUNCATE table Un alternativa efficace ed efficiente a DELETE FROM table LOAD REPLACE con input vuoto (dummy) Ise la tabella è una base table, vengono TRUNCATEd anche eventuali porzioni di tipo LOB e XML, e tutti gli indici associati Sintassi 65 DROP STORAGE (default) Tutto lo spazio disco assegnato alla tabella viene liberato e reso disponibile alla medesima tabella o ad altre tabelle residenti nel medesimo Tablespace REUSE STORAGE Tutto lo spazio disco assegnato alla tabella viene svuotato, ma continua ad essere asegnato alla tabella IGNORE DELETE TRIGGERS (default) Auto-esplicativo RESTRICT WHEN DELETE TRIGGERS Restituisce un errore se sulla tabella è definito almeno un Trigger di Delete IMMEDIATE ROLLBACK non ha effetto; se omesso, in caso di ROLLBACK viene ripristinata la situazione iniziale 66 33

34 Statement SQL: Costi di riferimento EXPLAIN: Prevenire è meglio che curare Ricerche generiche: Tecniche da evitare e loro alternative NULL: Uso e abuso Architettura Batch e ottimizzazioni Multi-row Fetch / multi-row Insert Query Parallelism Ricerca binaria (aka ( dicotomica) Ulteriori ottimizzazioni dei consumi di CPU Fetch 1 Row Only; Optimize For 1 Row Temporary Table Extended Indicator Variable 67 Temporary Table Utili quando si ha la necessità di memorizzare delle informazioni solo per la durata della transazione Due tipi di Temporary Table CGTT (Created Global Temporary Table) No logging, no locking DGTT (Declared Global Temporary Table) «Limited logging», «limited locking» 68 34

35 Caratteristiche e limiti Definizione tramite comando CREATE GLOBAL TEMPORARY TABLE No valori di default diversi da NULL No LOB o ROWID Nessun tipo di constraint (Ref. Integrity, ecc,) Struttura condivisa No logging No locking Nessuna possibilità di definire indici Update non permessi Delete permessi solo se privi della clausola WHERE Istanziazione Copia privata istanziata al primo riferimento da uno statement SQL di Delete, Insert, SELECT o OPEN Cursor 69 Commit If no pending «WITH HOLD» open cursor, all rows of every temporary table of the application process are deleted If also RELEASE(COMMIT) in effect, all logical work files for every temporary table are also deleted Rollback all rows and all logical work files of every temporary table of the application process are deleted

36 Uso Quando si ha necessità di memorizzare dati solo per la durata di un processo applicativo e non si ha necessità di condividere la struttura della tabella Definizione Tramite comando DECLARE GLOBAL TEMPORARY TABLE L istanza è nota solo all applicazione che l ha definita La definizione non è memorizzata nel Catalogo DB2 ed esiste solo finchè è attivo il pocesso applicativo che l ha creata Implicitamente (o esplicitamente) qualificata con SESSION Istanziazione Una copia vuota quando viene eseguito il comando DECLARE GLOBAL TEMPORARY TABLE 71 Opzioni di COMMIT DELETE ROWS Applicata se nessun cursore con WITH HOLD è aperto sulla DGTT PRESERVE ROWS DROP TABLE Applicata se nessun cursore con WITH HOLD è aperto sulla DGTT Molti meno vincoli rispetto alle CGTT Colonne con valori di default Possibilità di definire indici Supporto di UPDATE e DELETE con predicati Supporto di SAVEPOINT Ecc

37 Created GTT Declared GTT Definizione DBA tramite CREATE Utente tramite DECLARE Memoria nel Catalogo Si No Valori di default Solo NULL Si Colonne LOB e ROWID Non permesse Permesse Struttura Condivisa Non condivisa Logging Locking Definizione di indici No No Non permessa Limitato Limitato Permessa SQL Update Non permesso Permesso SQL Delete Solo senza WHERE Permesso Supporto SAVEPOINT No Si Opzioni di Commit Nessuna - righe cancellate in assenza di cursore WITH HOLD aperto DELETE / PRESERVE ROWS DROP TABLE 73 Statement SQL: Costi di riferimento EXPLAIN: Prevenire è meglio che curare Ricerche generiche: Tecniche da evitare e loro alternative NULL: Uso e abuso Architettura Batch e ottimizzazioni Multi-row Fetch / multi-row Insert Query Parallelism Ricerca binaria (aka ( dicotomica) Ulteriori ottimizzazioni dei consumi di CPU Fetch 1 Row Only; Optimize For 1 Row Temporary Table Extended Indicator Variable 74 37

38 Il dilemma degli sviluppatori Come predisporre del codice capace di gestire tutte le operazioni di UPDATE e INSERT di una tabella, non sapendo fino al momento dell esecuzione quali colonne inserire o aggiornare. Tutti gli approcci in uso sono insoddisfacenti Costruzione dinamica dello statement SQL Codifica in anticipo di tutte le possibili combinazioni di statement SQL Codifica di un unico statement SQL in grado di gestire tutte le possibili combinazioni di colonne 75 Permette di specificare 1. Che per una o più colonne oggetto di Insert, Update o Merge non viene fornito nessun valore 2. Come il DB2 deve trattare i valori mancanti L uso può essere abilitato A livello del Package, tramite l opzione EXTENDEDINDICATOR dei comandi BIND e REBIND PACKAGE Per l SQL dinamico, tramite l attributo WITH EXTENDED INDICATORS dello statement PREPARE NOTE L impostazione modifica iil risultato dell esecuzione dello statement SQL 76 38

39 Quando un Indicator Variabile è usata in input, il valore assegnato condiziona il comportamento del DB2, come segue: -5 Valore di Default, se Extended Indicator Variable abilitata NULL, in caso contrario -7 Non impostata (= come se non presente nello statement), se Extended Indicator Variable abilitata NULL, in caso contrario -1, -2, -3, -4, or -6 NULL 0 o qualunque valore positivo La variabile contiene un vaore valido I valori diversi da -1 non vengono assegnati dal DB2 a (Extended) Indicator Variable usate in output 77 Per INSERT I valori -5 e -7 conducono allo stesso risultato, perché la semantica dell Insert è quella di impostare la colonna a NULL o inserire un valore di default (a seconda della definizione adottata) per ogni colonna alla quale non è stato assegnato un valore Per UPDATE o MERGE UPDATE Il valore -5 provoca l aggiornamento della colonna al valore di default Il valore -7 fa sì che la colonna non venga aggiornata 78 39

Il linguaggio SQL: trigger. Versione elettronica: 04.7.SQL.trigger.pdf

Il linguaggio SQL: trigger. Versione elettronica: 04.7.SQL.trigger.pdf Il linguaggio SQL: trigger Sistemi Informativi T Versione elettronica: 04.7.SQL.trigger.pdf DBMS attivi Un DBMS si dice attivoquando dispone di un sottosistema integrato per definire e gestire regole I

Dettagli

Il linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali.

Il linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali. (Structured Query Language) : Il linguaggio è di fatto lo standard tra i linguaggi per la gestione di data base relazionali. prima versione IBM alla fine degli anni '70 per un prototipo di ricerca (System

Dettagli

Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R:

Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R: Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R: Si consiglia di creare il data base, inserire i dati nelle tabelle, provare

Dettagli

Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL

Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL Basi di dati Il Linguaggio SQL Data Definition Language (DDL) Data Definition Language: insieme di istruzioni utilizzate per modificare la struttura della base di dati Ne fanno parte le istruzioni di inserimento,

Dettagli

DBMS (Data Base Management System)

DBMS (Data Base Management System) Cos'è un Database I database o banche dati o base dati sono collezioni di dati, tra loro correlati, utilizzati per rappresentare una porzione del mondo reale. Sono strutturati in modo tale da consentire

Dettagli

Laboratorio di Basi di Dati e Web

Laboratorio di Basi di Dati e Web Laboratorio di Basi di Dati e Web Docente: Alberto Belussi Lezione 1 SQL Structured Query Language SQL è stato definito nel 1973 ed è oggi il linguaggio più diffuso per i DBMS relazionali Il linguaggio

Dettagli

PL/SQL PL/SQL. Ordine degli elementi dei triggers di Oracle. Differenze nei triggers. Versione dei trigger e PSM di Oracle

PL/SQL PL/SQL. Ordine degli elementi dei triggers di Oracle. Differenze nei triggers. Versione dei trigger e PSM di Oracle Versione dei trigger e PSM di Oracle Lucidi derivati da quelli di Jeffrey D Ullman Oracle usa una variante di SQL/PSM che si chiama non consente solo di creare e memorizzare procedure e funzioni, ma puo

Dettagli

Data Base. Master "Bio Info" Reti e Basi di Dati Lezione 6

Data Base. Master Bio Info Reti e Basi di Dati Lezione 6 Data Base 1 Sommario I concetti fondamentali. Database Relazionale.. Query e SQL MySql, Creazione di un db in MySQL con PHPmyAdmin Creazione database e delle Tabelle Query Inserimento Ricerca Modifica

Dettagli

Al giorno d oggi, i sistemi per la gestione di database

Al giorno d oggi, i sistemi per la gestione di database Introduzione Al giorno d oggi, i sistemi per la gestione di database implementano un linguaggio standard chiamato SQL (Structured Query Language). Fra le altre cose, il linguaggio SQL consente di prelevare,

Dettagli

Azioni. Select e join non consentono di modificare il contenuto del DB. Inserzione di nuovi dati. Azioni desiderate. Aggiornamento di dati

Azioni. Select e join non consentono di modificare il contenuto del DB. Inserzione di nuovi dati. Azioni desiderate. Aggiornamento di dati Azioni Select e join non consentono di modificare il contenuto del DB Azioni desiderate Inserzione di nuovi dati Aggiornamento di dati Cancellazione di dati Aggiunta di un record insert into utenti(nome,tel,codice_u)

Dettagli

Gestione delle tabelle

Gestione delle tabelle Linguaggio SQL: fondamenti Creazione di una tabella Modifica della struttura di una tabella Cancellazione di una tabella Dizionario dei dati Integrità dei dati 2 Creazione di una tabella (1/3) Si utilizza

Dettagli

Lezione 8. Metadati, Viste e Trigger

Lezione 8. Metadati, Viste e Trigger Lezione 8 Metadati, Viste e Trigger Pag.1 Metadati e catalogo di sistema I metadati sono dati a proposito dei dati (quali tabelle esistono?, quali campi contengono?, quante tuple contengono?, ci sono vincoli

Dettagli

OSSIF WEB. Manuale query builder

OSSIF WEB. Manuale query builder OSSIF WEB Manuale query builder - Maggio 2010 1) Sommario 1) SOMMARIO... 2 INTRODUZIONE... 3 Scopo del documento... 3 Struttura del documento... 3 Descrizione dell interfaccia grafica... 3 SELEZIONE DI

Dettagli

ESEMPI DI QUERY SQL. Esempi di Query SQL Michele Batocchi AS 2012/2013 Pagina 1 di 7

ESEMPI DI QUERY SQL. Esempi di Query SQL Michele Batocchi AS 2012/2013 Pagina 1 di 7 ESEMPI DI QUERY SQL Dati di esempio... 2 Query su una sola tabella... 2 Esempio 1 (Ordinamento)... 2 Esempio 2 (Scelta di alcune colonne)... 3 Esempio 3 (Condizioni sui dati)... 3 Esempio 4 (Condizioni

Dettagli

Oracle PL/SQL. Motivazioni

Oracle PL/SQL. Motivazioni Oracle PLSQL Motivazioni Supponiamo che nella gestione del database Azienda ci venga chiesto di apportare le modifiche necessarie a far sì che ad ogni impiegato possa essere assegnato, alla fine di ogni

Dettagli

SQL Server. SQL server e un RDBMS di tipo client/server che utilizza Transact-SQL per gestire la comunicazione fra un client e SQL Server

SQL Server. SQL server e un RDBMS di tipo client/server che utilizza Transact-SQL per gestire la comunicazione fra un client e SQL Server SQL Server 7.0 1 SQL Server SQL server e un RDBMS di tipo client/server che utilizza Transact-SQL per gestire la comunicazione fra un client e SQL Server 2 Strumenti per la gestione Enterprise Manager

Dettagli

Triggers. Basi dati attive. Trigger. Indipendenza della conoscenza

Triggers. Basi dati attive. Trigger. Indipendenza della conoscenza Basi dati attive Triggers Antonella Poggi Domenico Lembo Dipartimento di informatica e Sistemistica SAPIENZA Università di Roma Progetto di Applicazioni Software Anno accademico 2009-2010 Una base di dati

Dettagli

DDL, VINCOLI D INTEGRITÁ, AGGIORNAMENTI E VISTE. SQL è più di un semplice linguaggio di interrogazione

DDL, VINCOLI D INTEGRITÁ, AGGIORNAMENTI E VISTE. SQL è più di un semplice linguaggio di interrogazione SQL DDL, VINCOLI D INTEGRITÁ, AGGIORNAMENTI E VISTE SQL è più di un semplice linguaggio di interrogazione! Linguaggio di definizione dati (Data-definition language, DDL):! Crea/distrugge/modifica relazioni

Dettagli

Procedure memorizzate SQL-2003/PSM. Forma base di PSM. Parametri in PSM

Procedure memorizzate SQL-2003/PSM. Forma base di PSM. Parametri in PSM Procedure memorizzate SQL-2003/PSM Procedure memorizzate nel database Programmazione general-purpose Leggere sezione 8.2 di Garcia-Molina et al. Lucidi derivati da quelli di Jeffrey D. Ullman 1 Una estensione

Dettagli

Riccardo Dutto, Paolo Garza Politecnico di Torino. Riccardo Dutto, Paolo Garza Politecnico di Torino

Riccardo Dutto, Paolo Garza Politecnico di Torino. Riccardo Dutto, Paolo Garza Politecnico di Torino Integration Services Project SQL Server 2005 Integration Services Permette di gestire tutti i processi di ETL Basato sui progetti di Business Intelligence di tipo Integration services Project SQL Server

Dettagli

Volumi di riferimento

Volumi di riferimento Simulazione seconda prova Esame di Stato Gestione di un centro agroalimentare all ingrosso Parte prima) Un nuovo centro agroalimentare all'ingrosso intende realizzare una base di dati per l'attività di

Dettagli

Corso Sistemi Informativi Avanzati. Programma 30 set 2015. Installazione Macchina Virtuale. Introduzione alla BI nelle Aziende.

Corso Sistemi Informativi Avanzati. Programma 30 set 2015. Installazione Macchina Virtuale. Introduzione alla BI nelle Aziende. Programma 30 set 205 Installazione Macchina Virtuale Introduzione alla BI nelle Aziende Introduzione SQL Macchina Virtuale È un emulazione di un computer su un altro computer Stesso punto di partenza per

Dettagli

HBase Data Model. in più : le colonne sono raccolte in gruppi di colonne detti Column Family; Cosa cambia dunque?

HBase Data Model. in più : le colonne sono raccolte in gruppi di colonne detti Column Family; Cosa cambia dunque? NOSQL Data Model HBase si ispira a BigTable di Google e perciò rientra nella categoria dei column store; tuttavia da un punto di vista logico i dati sono ancora organizzati in forma di tabelle, in cui

Dettagli

Corso sul linguaggio SQL

Corso sul linguaggio SQL Corso sul linguaggio SQL Modulo L2B (SQL) 2.1 Comandi sui database 1 Prerequisiti Introduzione ai DB Linguaggi per database Tipi fondamentali di dati 2 1 Introduzione In questa Unità introduciamo il linguaggio

Dettagli

L architettura di un DBMS

L architettura di un DBMS L architettura di un DBMS sources: Lucidi del corso di Lucidi del corso di Laboratorio di Basi di dati e sistemi informativi, Montesi, Magnani, Corso di laurea in Informatica per il management, Scienze

Dettagli

Data warehouse in Oracle

Data warehouse in Oracle Data warehouse in Oracle Viste materializzate ed estensioni al linguaggio i SQL per l analisi li i dei dati presenti nei data warehouse Estensioni al linguaggio SQL per l analisi dei dati presenti nei

Dettagli

Dispensa di database Access

Dispensa di database Access Dispensa di database Access Indice: Database come tabelle; fogli di lavoro e tabelle...2 Database con più tabelle; relazioni tra tabelle...2 Motore di database, complessità di un database; concetto di

Dettagli

Informatica Generale Andrea Corradini. 19 - Sistemi di Gestione delle Basi di Dati

Informatica Generale Andrea Corradini. 19 - Sistemi di Gestione delle Basi di Dati Informatica Generale Andrea Corradini 19 - Sistemi di Gestione delle Basi di Dati Sommario Concetti base di Basi di Dati Il modello relazionale Relazioni e operazioni su relazioni Il linguaggio SQL Integrità

Dettagli

Ottimizzazione delle interrogazioni (parte I)

Ottimizzazione delle interrogazioni (parte I) Ottimizzazione delle interrogazioni I Basi di Dati / Complementi di Basi di Dati 1 Ottimizzazione delle interrogazioni (parte I) Angelo Montanari Dipartimento di Matematica e Informatica Università di

Dettagli

Join in SQL (primo modo) Informatica. Tabella Dipartimento. Interrogazione 4a. Interrogazione 4b. Interrogazione 4a

Join in SQL (primo modo) Informatica. Tabella Dipartimento. Interrogazione 4a. Interrogazione 4b. Interrogazione 4a Join in SQL (primo modo) Informatica Lezione 7 Laurea magistrale in Psicologia Laurea magistrale in Psicologia dello sviluppo e dell'educazione Anno accademico: 09- Per formulare interrogazioni che coinvolgono

Dettagli

Laboratorio di Basi di Dati

Laboratorio di Basi di Dati Laboratorio di Basi di Dati Docente: Alberto Belussi Lezione 1 SQL SQL (Structured Query Language) è stato definito nel 1973 ed è oggi il linguaggio più diffuso per i DBMS relazionali. Sono stati proposti

Dettagli

Calcolatori Elettronici A a.a. 2008/2009

Calcolatori Elettronici A a.a. 2008/2009 Calcolatori Elettronici A a.a. 2008/2009 PRESTAZIONI DEL CALCOLATORE Massimiliano Giacomin Due dimensioni Tempo di risposta (o tempo di esecuzione): il tempo totale impiegato per eseguire un task (include

Dettagli

SQL: concetti base SQL. Definizione dei dati in SQL. SQL: "storia"

SQL: concetti base SQL. Definizione dei dati in SQL. SQL: storia SQL SQL: concetti base originariamente "Structured Query Language", ora "nome proprio" linguaggio con varie funzionalità: contiene sia il DDL sia il DML ne esistono varie versioni vediamo gli aspetti essenziali,

Dettagli

SQL/OLAP. Estensioni OLAP in SQL

SQL/OLAP. Estensioni OLAP in SQL SQL/OLAP Estensioni OLAP in SQL 1 Definizione e calcolo delle misure Definire una misura significa specificare gli operatori di aggregazione rispetto a tutte le dimensioni del fatto Ipotesi: per ogni misura,

Dettagli

Linguaggio SQL: fondamenti D B M G. Gestione delle tabelle

Linguaggio SQL: fondamenti D B M G. Gestione delle tabelle Linguaggio SQL: fondamenti Creazione di una tabella Modifica della struttura di una tabella Cancellazione di una tabella Dizionario dei dati Integrità dei dati 2 2007 Politecnico di Torino 1 Creazione

Dettagli

Sistemi per la gestione di database: MySQL ( )

Sistemi per la gestione di database: MySQL ( ) Sistemi per la gestione di database: MySQL ( ) Relational Database e Relational Database Management System Un database è una raccolta di dati organizzata in modo da consentire l accesso, il reperimento

Dettagli

Istruzioni DML di SQL

Istruzioni DML di SQL Istruzioni DML di SQL Pag. 99 par.4 1 Sintassi: Costrutto: INSERT INTO (Inserimento di dati in tabelle) INSERT INTO [(, ,, )] VALUES (, ,

Dettagli

Lezione V. Aula Multimediale - sabato 29/03/2008

Lezione V. Aula Multimediale - sabato 29/03/2008 Lezione V Aula Multimediale - sabato 29/03/2008 LAB utilizzo di MS Access Definire gli archivi utilizzando le regole di derivazione e descrivere le caratteristiche di ciascun archivio ASSOCIAZIONE (1:1)

Dettagli

SQL SQL. Definizione dei dati. Domini. Esistono 6 domini elementari:

SQL SQL. Definizione dei dati. Domini. Esistono 6 domini elementari: SQL SQL (pronunciato anche come l inglese sequel: acronimo di Structured Query Language (linguaggio di interrogazione strutturato Linguaggio completo che presenta anche proprietà di: DDL (Data Definition

Dettagli

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione Automatizzare i compiti ripetitivi I file batch Anno accademico 2000-01 1 Spesso capita di dover eseguire ripetutatmente una data sequenza di comandi Introdurli uno a uno da tastiera è un processo lento

Dettagli

MDAC. Attualmente la versione disponibile di MDAC è la 2.8 ma faremo riferimento alla 2.6. ADO Active Data Objects ADO OLE DB ODBC

MDAC. Attualmente la versione disponibile di MDAC è la 2.8 ma faremo riferimento alla 2.6. ADO Active Data Objects ADO OLE DB ODBC MDAC MDAC è l acronimo di Microsoft Data Access Component e fa parte della tecnologia Microsoft denominata Universal Data Access (UDA). Mette a disposizione una serie di componenti per l accesso a svariate

Dettagli

Esperienze Reali Migrazione alla V10

Esperienze Reali Migrazione alla V10 Esperienze Reali Migrazione alla V10 Page 1 Chi Siamo? Ambiente Bancario Gruppo Sistemisti DB2 2 Persone Sottosistemi Gestiti 15 di TEST/Sviluppo. 8 di produzione 5 datasharing di test 1 datasharing di

Dettagli

Lezione 9. Applicazioni tradizionali

Lezione 9. Applicazioni tradizionali Lezione 9 Applicazioni tradizionali Pag.1 Sommario Concetti trattati in questa lezione: SQL nel codice applicativo Cursori API native ODBC Pag.2 SQL nel codice applicativo I comandi SQL possono essere

Dettagli

Insegnamento di Informatica CdS Scienze Giuridiche A.A. 2006/7. Il trattamento dei dati

Insegnamento di Informatica CdS Scienze Giuridiche A.A. 2006/7. Il trattamento dei dati Insegnamento di Informatica CdS Scienze Giuridiche A.A. 2006/7 Il trattamento dei dati database: il linguaggio SQL seconda parte Prof. Valle D.ssa Folgieri Lez9 15.11.06 Trattamento dati. Database: il

Dettagli

Capitolo 7. Esercizio 7.1

Capitolo 7. Esercizio 7.1 Capitolo 7 Esercizio 7.1 Dato lo schema relazionale: IMPIEGATO (Nome, Salario, DipNum) DIPARTIMENTO (DipNum, NomeManager) Definire le seguenti regole attive in Oracle e DB2: 1. una regola, che quando il

Dettagli

Siti web centrati sui dati Architettura MVC-2: i JavaBeans

Siti web centrati sui dati Architettura MVC-2: i JavaBeans Siti web centrati sui dati Architettura MVC-2: i JavaBeans 1 ALBERTO BELUSSI ANNO ACCADEMICO 2009/2010 Limiti dell approccio SEVLET UNICA La servlet svolge tre tipi di funzioni distinte: Interazione con

Dettagli

Architettura hardware

Architettura hardware Architettura dell elaboratore Architettura hardware la parte che si può prendere a calci Sistema composto da un numero elevato di componenti, in cui ogni componente svolge una sua funzione elaborazione

Dettagli

Capitolo 13. Interrogare una base di dati

Capitolo 13. Interrogare una base di dati Capitolo 13 Interrogare una base di dati Il database fisico La ridondanza è una cosa molto, molto, molto brutta Non si devono mai replicare informazioni scrivendole in più posti diversi nel database Per

Dettagli

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory FILE SYSTEM : INTERFACCIA 8.1 Interfaccia del File System Concetto di File Metodi di Accesso Struttura delle Directory Montaggio del File System Condivisione di File Protezione 8.2 Concetto di File File

Dettagli

User Tools: DataBase Manager

User Tools: DataBase Manager Spazio di lavoro Per usare T-SQL Assistant selezionare il link Simple Query e spostare a piacere la piccola finestra dove un menu a tendina mostra i diversi comandi SQL selezionabili, il pulsante Preview

Dettagli

Basi di Dati: Corso di laboratorio

Basi di Dati: Corso di laboratorio Basi di Dati: Corso di laboratorio Lezione 2 Raffaella Gentilini 1 / 45 Sommario 1 Il DDL di SQL: Cancellazione ed Aggiornamento di una BD Cancellazione di Schemi, Tabelle, e Domini Aggiornamento di Tabelle

Dettagli

Linee guida per la programmazione di transazioni in PL/SQL

Linee guida per la programmazione di transazioni in PL/SQL Linee guida per la programmazione di transazioni in PL/SQL Giuseppe Berio Giuseppe Berio DI - Unito 1 Esempio La transazione deve registrare l evasione di un ordine, rappresentato su più tabelle specializzate

Dettagli

2104 volume III Programmazione

2104 volume III Programmazione 2103 SQLite Capitolo 77 77.1 Utilizzo generale................................. 2104 77.1.1 Utilizzo di sqlite3».......................... 2104 77.1.2 Copie di sicurezza............................ 2106

Dettagli

Indice generale. Capitolo 3 Introduzione a PHP...43 Sintassi e istruzioni di base... 45 Variabili, operatori e commenti... 47 Array...

Indice generale. Capitolo 3 Introduzione a PHP...43 Sintassi e istruzioni di base... 45 Variabili, operatori e commenti... 47 Array... Prefazione...xiii A chi si rivolge il libro... xiv Struttura e contenuti del libro... xiv Dove trovare aiuto... xvii Le newsletter di SitePoint... xviii I vostri commenti... xviii Convenzioni adottate

Dettagli

DUGI, DB2 User Group Italia. i Trigger INSTEAD OF ; SELECT FROM INSERT, UPDATE, MERGE, DELETE con Colonne INCLUDE

DUGI, DB2 User Group Italia. i Trigger INSTEAD OF ; SELECT FROM INSERT, UPDATE, MERGE, DELETE con Colonne INCLUDE DUGI, DB2 User Group Italia Milano, 9 Aprile 2013 -- Roma 10 Aprile 2013 DB2 for z/os i Trigger INSTEAD OF ; SELECT FROM INSERT, UPDATE, MERGE, DELETE con Colonne INCLUDE massimo MACERA massimo MACERA

Dettagli

Basi di dati SQL. Standardizzazione di SQL. Linguaggi di Interrogazione: SQL. Prof.Angela Bonifati

Basi di dati SQL. Standardizzazione di SQL. Linguaggi di Interrogazione: SQL. Prof.Angela Bonifati Basi di dati Linguaggi di Interrogazione: SQL Prof.Angela Bonifati 1 SQL Il nome stava per Structured Query Language Più che un semplice linguaggio di query: si compone di una parte DDL e di una DML DDL:

Dettagli

Architettura MVC-2: i JavaBeans

Architettura MVC-2: i JavaBeans Siti web centrati sui dati Architettura MVC-2: i JavaBeans Alberto Belussi anno accademico 2008/2009 Limiti dell approccio SEVLET UNICA La servlet svolge tre tipi di funzioni distinte: Interazione con

Dettagli

I database relazionali (Access)

I database relazionali (Access) I database relazionali (Access) Filippo TROTTA 04/02/2013 1 Prof.Filippo TROTTA Definizioni Database Sistema di gestione di database (DBMS, Database Management System) Sistema di gestione di database relazionale

Dettagli

Vincoli di Integrità Approccio dichiarativo alla loro implementazione

Vincoli di Integrità Approccio dichiarativo alla loro implementazione Vincoli di Integrità Approccio dichiarativo alla loro implementazione Antonella Poggi Dipartimento di informatica e Sistemistica SAPIENZA Università di Roma Progetto di Applicazioni Software Anno accademico

Dettagli

Gestione delle transazioni. Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 1

Gestione delle transazioni. Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 1 Gestione delle transazioni Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 1 Transazioni v L esecuzione concorrente dei programmi utente è essenziale per le buone prestazioni del DBMS Poiché

Dettagli

Definizione di domini

Definizione di domini Definizione di domini Come nei linguaggi ad alto livello (es. C) è possibile definire nuovi domini (tipi di dati) a partire da quelli predefiniti, anche se il costruttore è più limitato. create domain

Dettagli

MySQL Database Management System

MySQL Database Management System MySQL Database Management System http://www.mysql.com/ DATABASE RELAZIONALI Un database è una collezione strutturata di informazioni. I database sono delle strutture nelle quali è possibile memorizzare

Dettagli

Mon Ami 3000 Varianti articolo Gestione di varianti articoli

Mon Ami 3000 Varianti articolo Gestione di varianti articoli Prerequisiti Mon Ami 3000 Varianti articolo Gestione di varianti articoli L opzione Varianti articolo è disponibile per le versioni Azienda Light e Azienda Pro e include tre funzionalità distinte: 1. Gestione

Dettagli

Come trattare il risultato di un comando SQL (relazioni) che

Come trattare il risultato di un comando SQL (relazioni) che USO DI SQL DA PROGRAMMI: PROBLEMI 1 Come collegarsi alla BD Come trattare gli operatori SQL Come trattare il risultato di un comando SQL (relazioni) che Come scambiare informazioni sull esito delle operazioni.

Dettagli

CONCETTO DI ANNIDAMENTO

CONCETTO DI ANNIDAMENTO LEZIONE14 SQL ANNIDAMENTI PAG. 1 / 5 PROF. ANDREA ZOCCHEDDU LEZIONE14 SQL ANNIDAMENTI CONCETTO DI ANNIDAMENTO LINGUAGGIO SQL QUERY ANNIDATE Per annidamento si intende la possibilità che, all interno di

Dettagli

SQL (STRUCTURED QUERY LANGUAGE)

SQL (STRUCTURED QUERY LANGUAGE) SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D Alpaos & Prof. Andrea Borghesan SQL DDL Data Definition Language DML Data Manipulation Language DCL Data Control Language DDL Obiettivo: Definire la struttura

Dettagli

Progettazione di Basi di Dati

Progettazione di Basi di Dati Progettazione di Basi di Dati Prof. Nicoletta D Alpaos & Prof. Andrea Borghesan Entità-Relazione Progettazione Logica 2 E il modo attraverso il quale i dati sono rappresentati : fa riferimento al modello

Dettagli

Archivi e Basi di Dati

Archivi e Basi di Dati Archivi e Basi di Dati A B C File Programma 1 Programma 2 A B C File modificati Programma 1 DBMS DB Programma 2 Informatica Generale (CdL in E&C), A.A. 2000-2001 55 Problemi nella gestione di archivi separati

Dettagli

SQL. Alcune note sulla definizione dei dati

SQL. Alcune note sulla definizione dei dati SQL Alcune note sulla definizione dei dati Domini Domini elementari (predefiniti) Domini definiti dall'utente (riutilizzabili, possono servire per specificare vincoli di dominio propri di una certa applicazione)

Dettagli

Uso delle variabili di alias. SQL slide aggiuntive. Interrogazione 25. Interrogazione 26

Uso delle variabili di alias. SQL slide aggiuntive. Interrogazione 25. Interrogazione 26 Uso delle variabili di alias SQL slide aggiuntive Laurea magistrale in Scienze della mente Laurea magistrale in Psicologia dello sviluppo e dell'educazione educazione Non solo per disambiguare la notazione

Dettagli

Introduzione a MySQL

Introduzione a MySQL Introduzione a MySQL Cinzia Cappiello Alessandro Raffio Politecnico di Milano Prima di iniziare qualche dettaglio su MySQL MySQL è un sistema di gestione di basi di dati relazionali (RDBMS) composto da

Dettagli

LA REALIZZAZIONE DI APPLICAZIONI ALCUNE ARCHITETTURE

LA REALIZZAZIONE DI APPLICAZIONI ALCUNE ARCHITETTURE LA REALIZZAZIONE DI APPLICAZIONI ALCUNE ARCHITETTURE Quattro parti: Gestione dati Client-Server Logica + interfaccia Logica + interfaccia Business rules Sistema di comunicazione Logica applicativa DBMS:

Dettagli

SQL Server 2005. Integration Services. SQL Server 2005: ETL - 1. Integration Services Project

SQL Server 2005. Integration Services. SQL Server 2005: ETL - 1. Integration Services Project atabase and ata Mi ni ng Group of P ol itecnico di Torino atabase and ata Mi ni ng Group of P ol itecnico di Torino atabase and data mining group, SQL Server 2005 Integration Services SQL Server 2005:

Dettagli

Suggerimenti per lo Sviluppo delle Applicazioni con PL/SQL. Simona Rotolo

Suggerimenti per lo Sviluppo delle Applicazioni con PL/SQL. Simona Rotolo Suggerimenti per lo Sviluppo delle Applicazioni con PL/SQL Simona Rotolo 2 Questo documento, rivolto a chi sviluppa codice in PL/Sql, è stato redatto al fine di fornire degli standard di sviluppo che aiuteranno

Dettagli

Database. Si ringrazia Marco Bertini per le slides

Database. Si ringrazia Marco Bertini per le slides Database Si ringrazia Marco Bertini per le slides Obiettivo Concetti base dati e informazioni cos è un database terminologia Modelli organizzativi flat file database relazionali Principi e linee guida

Dettagli

Sistemi informativi secondo prospettive combinate

Sistemi informativi secondo prospettive combinate Sistemi informativi secondo prospettive combinate direz acquisti direz produz. direz vendite processo acquisti produzione vendite INTEGRAZIONE TRA PROSPETTIVE Informazioni e attività sono condivise da

Dettagli

----------------------------------------------------------------------------

---------------------------------------------------------------------------- APPUNTI DI SQL Gli appunti qui forniti vogliono essere un riferimento scritto di alcuni degli argomenti trattati a lezione per gli studenti a cui vengono messi a disposizione. Non viene fornita alcuna

Dettagli

LA REALIZZAZIONE DI APPLICAZIONI. Quattro parti: Gestione dati. Business rules. Logica applicativa. Interfaccia utente. Molte possibili architetture

LA REALIZZAZIONE DI APPLICAZIONI. Quattro parti: Gestione dati. Business rules. Logica applicativa. Interfaccia utente. Molte possibili architetture LA REALIZZAZIONE DI APPLICAZIONI Quattro parti: Gestione dati Business rules Logica applicativa Interfaccia utente Molte possibili architetture L approccio tradizionale: uso di un linguaggio PLSQL 1.1

Dettagli

Cosa è un foglio elettronico

Cosa è un foglio elettronico Cosa è un foglio elettronico Versione informatica del foglio contabile Strumento per l elaborazione di numeri (ma non solo...) I valori inseriti possono essere modificati, analizzati, elaborati, ripetuti

Dettagli

GERARCHIE RICORSIVE - SQL SERVER 2008

GERARCHIE RICORSIVE - SQL SERVER 2008 GERARCHIE RICORSIVE - SQL SERVER 2008 DISPENSE http://dbgroup.unimo.it/sia/gerarchiericorsive/ L obiettivo è quello di realizzare la tabella di navigazione tramite una query ricorsiva utilizzando SQL SERVER

Dettagli

Corso sul linguaggio SQL

Corso sul linguaggio SQL Corso sul linguaggio SQL Modulo L2B (SQL) 2.2 Comandi sulle tabelle 1 Prerequisiti Introduzione ai DB Tabelle, relazioni e attributi Chiave primaria Chiave esterna Vincoli di integrità 2 1 Introduzione

Dettagli

07. Ottimizzare le istruzioni SQL

07. Ottimizzare le istruzioni SQL 07. Ottimizzare le istruzioni SQL Introduzione Union, subquery e Join Il piano di esecuzione L ottimizzatore Le statistiche Il comando EXPLAIN Gli Hint A.A. 2005 Laboratorio di basi di dati - LB 2 La UNION

Dettagli

APPENDICE. Procedure in SQL (1)

APPENDICE. Procedure in SQL (1) APPENDICE Procedure in SQL Transazioni in SQL Embedded SQL Remote Procedure Call Appendice 1 Procedure in SQL (1) Standard SQL2 permette di definire procedure, associate a singoli comandi SQL, memorizzate

Dettagli

Corso di Access. Prerequisiti. Modulo L2A (Access) 1.1 Concetti di base. Utilizzo elementare del computer Concetti fondamentali di basi di dati

Corso di Access. Prerequisiti. Modulo L2A (Access) 1.1 Concetti di base. Utilizzo elementare del computer Concetti fondamentali di basi di dati Corso di Access Modulo L2A (Access) 1.1 Concetti di base 1 Prerequisiti Utilizzo elementare del computer Concetti fondamentali di basi di dati 2 1 Introduzione Un ambiente DBMS è un applicazione che consente

Dettagli

Raggruppamenti Conti Movimenti

Raggruppamenti Conti Movimenti ESERCITAZIONE PIANO DEI CONTI Vogliamo creare un programma che ci permetta di gestire, in un DB, il Piano dei conti di un azienda. Nel corso della gestione d esercizio, si potranno registrare gli articoli

Dettagli

Basi di Dati Relazionali

Basi di Dati Relazionali Corso di Laurea in Informatica Basi di Dati Relazionali a.a. 2009-2010 PROGETTAZIONE DI UNA BASE DI DATI Raccolta e Analisi dei requisiti Progettazione concettuale Schema concettuale Progettazione logica

Dettagli

PROGRAMMA DI CLASSE 5AI

PROGRAMMA DI CLASSE 5AI Istituto di Istruzione Superiore Euganeo Istituto tecnico del settore tecnologico Istituto professionale del settore servizi socio-sanitari Istituto professionale del settore industria e artigianato PROGRAMMA

Dettagli

Vincoli di Integrità

Vincoli di Integrità Vincoli di Integrità Antonella Poggi Dipartimento di informatica e Sistemistica Sapienza Università di Roma Progetto di Applicazioni Software Anno accademico 2010-2011 Questi lucidi sono stati prodotti

Dettagli

Nozione ed uso. Operazioni eseguite automaticamente ogni volta che avviene un certo evento Uso:

Nozione ed uso. Operazioni eseguite automaticamente ogni volta che avviene un certo evento Uso: Nozione ed uso Operazioni eseguite automaticamente ogni volta che avviene un certo evento Uso: Gestione di vincoli di integrità: Per fallimento Per modifica Auditing: Sicurezza Statistiche Valori derivati

Dettagli

Introduzione alla teoria dei database relazionali. Come progettare un database

Introduzione alla teoria dei database relazionali. Come progettare un database Introduzione alla teoria dei database relazionali Come progettare un database La struttura delle relazioni Dopo la prima fase di individuazione concettuale delle entità e degli attributi è necessario passare

Dettagli

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1 MECCANISMI E POLITICHE DI PROTEZIONE 13.1 Protezione Obiettivi della Protezione Dominio di Protezione Matrice di Accesso Implementazione della Matrice di Accesso Revoca dei Diritti di Accesso Sistemi basati

Dettagli

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1 MECCANISMI E POLITICHE DI PROTEZIONE 13.1 Protezione Obiettivi della Protezione Dominio di Protezione Matrice di Accesso Implementazione della Matrice di Accesso Revoca dei Diritti di Accesso Sistemi basati

Dettagli

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14. Pietro Frasca.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14. Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Lezione 11 Martedì 12-11-2013 1 Tecniche di allocazione mediante free list Generalmente,

Dettagli

OR true null false true true true true null true null null false true null false NOT

OR true null false true true true true null true null null false true null false NOT Il linguaggio SQL è un linguaggio standard per la definizione, manipolazione e interrogazione delle basi di dati relazionali ed ha le seguenti caratteristiche: è dichiarativo; opera su multiset di tuple,

Dettagli

Database Lezione 1. Sommario. - Introduzione - Tabelle e chiave primaria - Query - Calcoli ed alias - Ordinamento

Database Lezione 1. Sommario. - Introduzione - Tabelle e chiave primaria - Query - Calcoli ed alias - Ordinamento Sommario - Introduzione - Tabelle e chiave primaria - Query - Calcoli ed alias - Ordinamento Introduzione - Un database è un archivio strutturato di dati che può essere manipolato con dei comandi nel linguaggio

Dettagli

Il memory manager. Gestione della memoria centrale

Il memory manager. Gestione della memoria centrale Il memory manager Gestione della memoria centrale La memoria La memoria RAM è un vettore molto grande di WORD cioè celle elementari a 16bit, 32bit, 64bit (2Byte, 4Byte, 8Byte) o altre misure a seconda

Dettagli

Esercitazione 1. Sistemi Informativi T. Versione elettronica: L01.2.DDLDMLbase.pdf

Esercitazione 1. Sistemi Informativi T. Versione elettronica: L01.2.DDLDMLbase.pdf Esercitazione 1 SQL: DDL e DML di base Sistemi Informativi T Versione elettronica: L01.2.DDLDMLbase.pdf Prime cose da fare Fare login sul PC usando lo username di Facoltà Procedura descritta qui: http://ccib.ing.unibo.it/content/account

Dettagli

Operazioni sui database

Operazioni sui database Operazioni sui database Le operazioni nel modello relazionale sono essenzialmente di due tipi: Operazioni di modifica della base di dati (update) Interrogazioni della base di dati per il recupero delle

Dettagli

Valutazione delle Prestazioni. Valutazione delle Prestazioni. Architetture dei Calcolatori (Lettere. Tempo di risposta e throughput

Valutazione delle Prestazioni. Valutazione delle Prestazioni. Architetture dei Calcolatori (Lettere. Tempo di risposta e throughput Valutazione delle Prestazioni Architetture dei Calcolatori (Lettere A-I) Valutazione delle Prestazioni Prof. Francesco Lo Presti Misura/valutazione di un insieme di parametri quantitativi per caratterizzare

Dettagli

Una metodologia di progettazione di applicazioni web centrate sui dati

Una metodologia di progettazione di applicazioni web centrate sui dati Una metodologia di progettazione di applicazioni web centrate sui dati A L B E R T O B E L U S S I A N N O A C C A D E M I C O 2 0 1 1 / 2 0 1 2 Progettazione logica di un sito web centrato sui dati Si

Dettagli