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

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

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

Basi di Dati prof. Letizia Tanca lucidi ispirati al libro Atzeni-Ceri-Paraboschi-Torlone. SQL: il DDL

Basi di Dati prof. Letizia Tanca lucidi ispirati al libro Atzeni-Ceri-Paraboschi-Torlone. SQL: il DDL Basi di Dati prof. Letizia Tanca lucidi ispirati al libro Atzeni-Ceri-Paraboschi-Torlone SQL: il DDL Parti del linguaggio SQL Definizione di basi di dati (Data Definition Language DDL) Linguaggio per modificare

Dettagli

Il linguaggio SQL: transazioni

Il linguaggio SQL: transazioni Il linguaggio SQL: transazioni Sistemi Informativi T Versione elettronica: 4.8.SQL.transazioni.pdf Cos è una transazione? Una transazione è un unità logica di elaborazione che corrisponde a una serie di

Dettagli

Basi di Dati. S Q L Lezione 5

Basi di Dati. S Q L Lezione 5 Basi di Dati S Q L Lezione 5 Antonio Virdis a.virdis@iet.unipi.it Sommario Gestione eventi Gestione dei privilegi Query Complesse 2 Esercizio 9 (lezione 4) Indicare nome e cognome, spesa e reddito annuali

Dettagli

Il linguaggio SQL Basi di dati 1. Il linguaggio SQL. Angelo Montanari. Dipartimento di Matematica e Informatica Università di Udine

Il linguaggio SQL Basi di dati 1. Il linguaggio SQL. Angelo Montanari. Dipartimento di Matematica e Informatica Università di Udine Il linguaggio SQL Basi di dati 1 Il linguaggio SQL Angelo Montanari Dipartimento di Matematica e Informatica Università di Udine Il linguaggio SQL Basi di dati 2 Introduzione SQL (Structured Query Language)

Dettagli

Dal modello concettuale al modello logico

Dal modello concettuale al modello logico Dal modello concettuale al modello logico Traduzione dal modello Entita - Associazione al modello Relazionale Ciclo di sviluppo di una base di dati (da parte dell utente) Analisi dello scenario Modello

Dettagli

Le funzionalità di un DBMS

Le funzionalità di un DBMS Le funzionalità di un DBMS Sistemi Informativi L-A Home Page del corso: http://www-db.deis.unibo.it/courses/sil-a/ Versione elettronica: DBMS.pdf Sistemi Informativi L-A DBMS: principali funzionalità Le

Dettagli

DB2 10 for z/os. Cut Cost & Improve Performance

DB2 10 for z/os. Cut Cost & Improve Performance DB2 10 for z/os Cut Cost & Improve Performance SOMMARIO 1. SEZIONE I INTRODUZIONE AL DB2 10 FOR Z/OS...1-5 1.1 SOMMARIO...1-5 2. SEZIONE II PERFORMANCE AVAILABILITY...2-7 2.1 MANY PERFORMANCE ENHANCEMENTS...2-7

Dettagli

Introduzione ad Access

Introduzione ad Access Introduzione ad Access Luca Bortolussi Dipartimento di Matematica e Informatica Università degli studi di Trieste Access E un programma di gestione di database (DBMS) Access offre: un supporto transazionale

Dettagli

Esercitazione su SQL

Esercitazione su SQL Esercizio 1. Esercitazione su SQL Si consideri la base di dati relazionale composta dalle seguenti relazioni: impiegato Matricola Cognome Stipendio Dipartimento 101 Sili 60 NO 102 Rossi 40 NO 103 Neri

Dettagli

Import Dati Release 4.0

Import Dati Release 4.0 Piattaforma Applicativa Gestionale Import Dati Release 4.0 COPYRIGHT 2000-2005 by ZUCCHETTI S.p.A. Tutti i diritti sono riservati.questa pubblicazione contiene informazioni protette da copyright. Nessuna

Dettagli

Manipolazione di testi: espressioni regolari

Manipolazione di testi: espressioni regolari Manipolazione di testi: espressioni regolari Un meccanismo per specificare un pattern, che, di fatto, è la rappresentazione sintetica di un insieme (eventualmente infinito) di stringhe: il pattern viene

Dettagli

Dati importati/esportati

Dati importati/esportati Dati importati/esportati Dati importati Al workspace MATLAB script Dati esportati file 1 File di testo (.txt) Spreadsheet Database Altro Elaborazione dati Grafici File di testo Relazioni Codice Database

Dettagli

Appendice I. Principali procedure ed istruzioni per la gestione di files, l'analisi statistica di tipo descrittivo e la correlazione semplice

Appendice I. Principali procedure ed istruzioni per la gestione di files, l'analisi statistica di tipo descrittivo e la correlazione semplice . Principali procedure ed istruzioni per la gestione di files, l'analisi statistica di tipo descrittivo e la correlazione semplice Ordinamento di osservazioni: PROC SORT PROC SORT DATA=fa il sort è numerico

Dettagli

Descrizioni VHDL Behavioral

Descrizioni VHDL Behavioral 1 Descrizioni VHDL Behavioral In questo capitolo vedremo come la struttura di un sistema digitale è descritto in VHDL utilizzando descrizioni di tipo comportamentale. Outline: process wait statements,

Dettagli

CA RC/Update for DB2 for z/os

CA RC/Update for DB2 for z/os SCHEDA PRODOTTO CA RC/Update for DB2 for z/os CA RC/Update for DB2 for z/os CA RC/Update for DB2 for z/os (CA RC/Update) è uno strumento di gestione di dati e oggetti DB2 che consente agli amministratori

Dettagli

Algebra Relazionale. algebra relazionale

Algebra Relazionale. algebra relazionale Algebra Relazionale algebra relazionale Linguaggi di Interrogazione linguaggi formali Algebra relazionale Calcolo relazionale Programmazione logica linguaggi programmativi SQL: Structured Query Language

Dettagli

PHP: form, cookies, sessioni e. Pasqualetti Veronica

PHP: form, cookies, sessioni e. Pasqualetti Veronica PHP: form, cookies, sessioni e mysql Pasqualetti Veronica Form HTML: sintassi dei form 2 Un form HTML è una finestra contenente vari elementi di controllo che consentono al visitatore di inserire informazioni.

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

Database, SQL & MySQL. Dott. Paolo PAVAN Maggio 2002

Database, SQL & MySQL. Dott. Paolo PAVAN Maggio 2002 Database, SQL & MySQL Dott. Paolo PAVAN Maggio 2002 1 Struttura RDBMS MYSQL - RDBMS DATABASE TABELLE 2 Introduzione ai DATABASE Database Indica in genere un insieme di dati rivolti alla rappresentazione

Dettagli

sed: editor non interattivo di file di testo (1974 nei Bell Labs come evoluzione di grep, Lee E. McMahon)

sed: editor non interattivo di file di testo (1974 nei Bell Labs come evoluzione di grep, Lee E. McMahon) Sed & Awk Sed e Awk sed: editor non interattivo di file di testo (1974 nei Bell Labs come evoluzione di grep, Lee E. McMahon) awk: linguaggio per l'elaborazione di modelli orientato ai campi (1977, Bell

Dettagli

I file di dati. Unità didattica D1 1

I file di dati. Unità didattica D1 1 I file di dati Unità didattica D1 1 1) I file sequenziali Utili per la memorizzazione di informazioni testuali Si tratta di strutture organizzate per righe e non per record Non sono adatte per grandi quantità

Dettagli

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity CORSO DI ALGORITMI E PROGRAMMAZIONE JDBC Java DataBase Connectivity Anno Accademico 2002-2003 Accesso remoto al DB Istruzioni SQL Rete DataBase Utente Host client Server di DataBase Host server Accesso

Dettagli

Comandi filtro: sed. Se non si specificano azioni, sed stampa sullo standard output le linee in input, lasciandole inalterate.

Comandi filtro: sed. Se non si specificano azioni, sed stampa sullo standard output le linee in input, lasciandole inalterate. Comandi filtro: sed Il nome del comando sed sta per Stream EDitor e la sua funzione è quella di permettere di editare il testo passato da un comando ad un altro in una pipeline. Ciò è molto utile perché

Dettagli

Architetture CISC e RISC

Architetture CISC e RISC FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Facoltà di Ingegneria Università degli Studi di Udine Architetture CISC e RISC 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n.

Dettagli

Lezione 15 File System

Lezione 15 File System Lezione 15 File System Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche Università di Modena e Reggio Emilia http://weblab.ing.unimo.it/people/andreolini/didattica/sistemi-operativi

Dettagli

Informatica Applicata

Informatica Applicata Ing. Irina Trubitsyna Concetti Introduttivi Programma del corso Obiettivi: Il corso di illustra i principi fondamentali della programmazione con riferimento al linguaggio C. In particolare privilegia gli

Dettagli

Piattaforma Applicativa Gestionale. Import dati. Release 7.0

Piattaforma Applicativa Gestionale. Import dati. Release 7.0 Piattaforma Applicativa Gestionale Import dati Release 7.0 COPYRIGHT 2000-2012 by ZUCCHETTI S.p.A. Tutti i diritti sono riservati. Questa pubblicazione contiene informazioni protette da copyright. Nessuna

Dettagli

Database Manager Guida utente DMAN-IT-01/09/10

Database Manager Guida utente DMAN-IT-01/09/10 Database Manager Guida utente DMAN-IT-01/09/10 Le informazioni contenute in questo manuale di documentazione non sono contrattuali e possono essere modificate senza preavviso. La fornitura del software

Dettagli

Definizione. File di dati. Insieme di record omogenei memorizzati in memoria di massa. Record. Bianchi. Anna Roma 1980. Verdi. Luca Milano 1960.

Definizione. File di dati. Insieme di record omogenei memorizzati in memoria di massa. Record. Bianchi. Anna Roma 1980. Verdi. Luca Milano 1960. File di dati Definizione File di dati Insieme di record omogenei memorizzati in memoria di massa Bianchi Verdi Neri Verdi Anna Roma 1980 Luca Milano 1960 Andrea Torino 1976 Paola Bari 1954 Record Operazioni

Dettagli

Cross Software ltd Malta Pro.Sy.T Srl. Il gestionale come l'avete sempre sognato... Pag. 1

Cross Software ltd Malta Pro.Sy.T Srl. Il gestionale come l'avete sempre sognato... Pag. 1 Il gestionale come l'avete sempre sognato... Pag. 1 Le funzionalità di X-Cross La sofisticata tecnologia di CrossModel, oltre a permettere di lavorare in Internet come nel proprio ufficio e ad avere una

Dettagli

(anno accademico 2008-09)

(anno accademico 2008-09) Calcolo relazionale Prof Alberto Belussi Prof. Alberto Belussi (anno accademico 2008-09) Calcolo relazionale E un linguaggio di interrogazione o e dichiarativo: at specifica le proprietà del risultato

Dettagli

Oggetti Lezione 3. aspetti generali e definizione di classi I

Oggetti Lezione 3. aspetti generali e definizione di classi I Programmazione a Oggetti Lezione 3 Il linguaggio Java: aspetti generali e definizione di classi I Sommario Storia e Motivazioni Definizione di Classi Campi e Metodi Istanziazione di oggetti Introduzione

Dettagli

AA 2006-07 LA RICORSIONE

AA 2006-07 LA RICORSIONE PROGRAMMAZIONE AA 2006-07 LA RICORSIONE AA 2006-07 Prof.ssa A. Lanza - DIB 1/18 LA RICORSIONE Il concetto di ricorsione nasce dalla matematica Una funzione matematica è definita ricorsivamente quando nella

Dettagli

ORACLE BUSINESS INTELLIGENCE STANDARD EDITION ONE A WORLD CLASS PERFORMANCE

ORACLE BUSINESS INTELLIGENCE STANDARD EDITION ONE A WORLD CLASS PERFORMANCE ORACLE BUSINESS INTELLIGENCE STANDARD EDITION ONE A WORLD CLASS PERFORMANCE Oracle Business Intelligence Standard Edition One è una soluzione BI completa, integrata destinata alle piccole e medie imprese.oracle

Dettagli

BPEL: Business Process Execution Language

BPEL: Business Process Execution Language Ingegneria dei processi aziendali BPEL: Business Process Execution Language Ghilardi Dario 753708 Manenti Andrea 755454 Docente: Prof. Ernesto Damiani BPEL - definizione Business Process Execution Language

Dettagli

Modulo 2 - Appendice 3 L'editor vi e cenni su sed

Modulo 2 - Appendice 3 L'editor vi e cenni su sed 1 Modulo 2 - Appendice 3 L'editor vi e cenni su sed Laboratorio di Sistemi Operativi I Anno Accademico 2008-2009 Copyright 2005-2007 Francesco Pedullà, Massimo Verola Copyright 2001-2005 Renzo Davoli,

Dettagli

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO...

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO... Modulo A Programmiamo in Pascal Unità didattiche 1. Installiamo il Dev-Pascal 2. Il programma e le variabili 3. Input dei dati 4. Utilizziamo gli operatori matematici e commentiamo il codice COSA IMPAREREMO...

Dettagli

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica Fondamenti di Informatica Algebra di Boole: Concetti di base Fondamenti di Informatica - D. Talia - UNICAL 1 Algebra di Boole E un algebra basata su tre operazioni logiche OR AND NOT Ed operandi che possono

Dettagli

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile Problemi connessi all utilizzo di un numero di bit limitato Abbiamo visto quali sono i vantaggi dell utilizzo della rappresentazione in complemento alla base: corrispondenza biunivoca fra rappresentazione

Dettagli

+ / operatori di confronto (espressioni logiche/predicati) / + 5 3 9 = > < Pseudo codice. Pseudo codice

+ / operatori di confronto (espressioni logiche/predicati) / + 5 3 9 = > < Pseudo codice. Pseudo codice Pseudo codice Pseudo codice Paolo Bison Fondamenti di Informatica A.A. 2006/07 Università di Padova linguaggio testuale mix di linguaggio naturale ed elementi linguistici con sintassi ben definita e semantica

Dettagli

Lezione III: Oggetti ASP e interazione tramite form HTML

Lezione III: Oggetti ASP e interazione tramite form HTML Lezione III: Oggetti ASP e interazione tramite form HTML La terza lezione, come le precedenti, ha avuto una durata di due ore, di cui una in aula e l altra in laboratorio, si è tenuta alla presenza della

Dettagli

e-spare Parts User Manual Peg Perego Service Site Peg Perego [Dicembre 2011]

e-spare Parts User Manual Peg Perego Service Site Peg Perego [Dicembre 2011] Peg Perego Service Site Peg Perego [Dicembre 2011] 2 Esegui il login: ecco la nuova Home page per il portale servizi. Log in: welcome to the new Peg Perego Service site. Scegli il servizio selezionando

Dettagli

RefWorks Guida all utente Versione 4.0

RefWorks Guida all utente Versione 4.0 Accesso a RefWorks per utenti registrati RefWorks Guida all utente Versione 4.0 Dalla pagina web www.refworks.com/refworks Inserire il proprio username (indirizzo e-mail) e password NB: Agli utenti remoti

Dettagli

l Editor vi vi (visual editor) è stato scritto per essere utilizzabile con qualsiasi tipo di terminale.

l Editor vi vi (visual editor) è stato scritto per essere utilizzabile con qualsiasi tipo di terminale. l Editor vi Negli ambienti Unix esistono molti editor di testo diversi; tuttavia vi è l unico che siamo sicuri di trovare in qualsiasi variante di Unix. vi (visual editor) è stato scritto per essere utilizzabile

Dettagli

Introduzione alle applicazioni di rete

Introduzione alle applicazioni di rete Introduzione alle applicazioni di rete Definizioni base Modelli client-server e peer-to-peer Socket API Scelta del tipo di servizio Indirizzamento dei processi Identificazione di un servizio Concorrenza

Dettagli

Un client su arduino invia i dati acquisiti ad un database

Un client su arduino invia i dati acquisiti ad un database Un client su arduino invia i dati acquisiti ad un database PROBLEMA Si vogliono inviare, periodicamente, i dati acquisiti da alcuni sensori ad un database presente su di un server. Arduino con shield Ethernet

Dettagli

Editor vi. Editor vi

Editor vi. Editor vi Editor vi vi 1 Editor vi Il vi è l editor di testo standard per UNIX, è presente in tutte le versioni base e funziona con qualsiasi terminale a caratteri Permette di visualizzare una schermata alla volta

Dettagli

How to Develop Accessible Linux Applications

How to Develop Accessible Linux Applications How to Develop Accessible Linux Applications Sharon Snider Copyright 2002 IBM Corporation v1.1, 2002-05-03 Diario delle Revisioni Revisione v1.1 2002-05-03 Revisionato da: sds Convertito in DocBook XML

Dettagli

Il Concetto di Processo

Il Concetto di Processo Processi e Thread Il Concetto di Processo Il processo è un programma in esecuzione. È l unità di esecuzione all interno del S.O. Solitamente, l esecuzione di un processo è sequenziale (le istruzioni vengono

Dettagli

Energy risk management

Energy risk management Il sistema di supporto alle tue decisioni Energy risk management Un approccio orientato agli attori M.B.I. Srl, Via Francesco Squartini 7-56121 Pisa, Italia - tel. 050 3870888 - fax. 050 3870808 www.powerschedo.it

Dettagli

Gli algoritmi. Gli algoritmi. Analisi e programmazione

Gli algoritmi. Gli algoritmi. Analisi e programmazione Gli algoritmi Analisi e programmazione Gli algoritmi Proprietà ed esempi Costanti e variabili, assegnazione, istruzioni, proposizioni e predicati Vettori e matrici I diagrammi a blocchi Analisi strutturata

Dettagli

Specifiche API. Gestione utenti multipli

Specifiche API. Gestione utenti multipli Specifiche API Gestione utenti multipli v1.3.73 Last update: Ludovico 28/12/2009 Sommario Descrizione del servizio... 3 Come diventare partner... 3 Modalità di accesso al servizio con gestione utenti multipli...

Dettagli

Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni

Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni Funzioni Le funzioni Con il termine funzione si intende, in generale, un operatore che, applicato a un insieme di operandi, consente di calcolare un risultato, come avviene anche per una funzione matematica

Dettagli

Architettura dei Calcolatori

Architettura dei Calcolatori Architettura dei Calcolatori Sistema di memoria parte prima Ing. dell Automazione A.A. 2011/12 Gabriele Cecchetti Sistema di memoria parte prima Sommario: Banco di registri Generalità sulla memoria Tecnologie

Dettagli

Zabbix 4 Dummies. Dimitri Bellini, Zabbix Trainer Quadrata.it

Zabbix 4 Dummies. Dimitri Bellini, Zabbix Trainer Quadrata.it Zabbix 4 Dummies Dimitri Bellini, Zabbix Trainer Quadrata.it Relatore Nome: Biografia: Dimitri Bellini Decennale esperienza su sistemi operativi UX based, Storage Area Network, Array Management e tutto

Dettagli

IBM Cognos 8 BI Midmarket Reporting Packages Per soddisfare tutte le vostre esigenze di reporting restando nel budget

IBM Cognos 8 BI Midmarket Reporting Packages Per soddisfare tutte le vostre esigenze di reporting restando nel budget Data Sheet IBM Cognos 8 BI Midmarket Reporting Packages Per soddisfare tutte le vostre esigenze di reporting restando nel budget Panoramica Le medie aziende devono migliorare nettamente le loro capacità

Dettagli

Lezione n.19 Processori RISC e CISC

Lezione n.19 Processori RISC e CISC Lezione n.19 Processori RISC e CISC 1 Processori RISC e Superscalari Motivazioni che hanno portato alla realizzazione di queste architetture Sommario: Confronto tra le architetture CISC e RISC Prestazioni

Dettagli

PRESENTAZIONE DI UN SMS AL GATEWAY

PRESENTAZIONE DI UN SMS AL GATEWAY Interfaccia Full Ascii Con questa interfaccia è possibile inviare i dati al Server utilizzando solo caratteri Ascii rappresentabili e solo i valori che cambiano tra un sms e l altro, mantenendo la connessione

Dettagli

Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi

Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi alternative: function nome { lista-comandi } oppure nome ( ) {

Dettagli

Estensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN)

Estensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN) Estensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN) System Overview di Mattia Bargellini 1 CAPITOLO 1 1.1 Introduzione Il seguente progetto intende estendere

Dettagli

Middleware Laboratory. Dai sistemi concorrenti ai sistemi distribuiti

Middleware Laboratory. Dai sistemi concorrenti ai sistemi distribuiti Dai sistemi concorrenti ai sistemi distribuiti Problemi nei sistemi concorrenti e distribuiti I sistemi concorrenti e distribuiti hanno in comune l ovvio problema di coordinare le varie attività dei differenti

Dettagli

MODELLO AD OGGETTI PER LE BASI DI DATI E ANALISI DI PRODOTTI COMMERCIALI. Luca Carnini. Tesina presentata per la discussione del diploma di laurea in

MODELLO AD OGGETTI PER LE BASI DI DATI E ANALISI DI PRODOTTI COMMERCIALI. Luca Carnini. Tesina presentata per la discussione del diploma di laurea in MODELLO AD OGGETTI PER LE BASI DI DATI E ANALISI DI PRODOTTI COMMERCIALI di Luca Carnini Tesina presentata per la discussione del diploma di laurea in Ingegneria informatica Politecnico di Milano sede

Dettagli

Introduzione. Esempio 1. Soluzione: SPOSTA_1.BAT

Introduzione. Esempio 1. Soluzione: SPOSTA_1.BAT Introduzione Un file batch è un file di testo di tipo ASCII che contiene una sequenza di comandi DOS. I file batch devono avere estensione.bat I comandi DOS all interno dei programmi batch sono eseguiti

Dettagli

PRODUCT FAMILY BRIEF CA Database Management for DB2 for z/os. una solida base per la gestione efficace dei database DB2

PRODUCT FAMILY BRIEF CA Database Management for DB2 for z/os. una solida base per la gestione efficace dei database DB2 PRODUCT FAMILY BRIEF CA Database Management for DB2 for z/os una solida base per la gestione efficace dei database DB2 Gestione del database CA Database Performance Management Database Administration Database

Dettagli

Esercizi per il corso di Algoritmi e Strutture Dati

Esercizi per il corso di Algoritmi e Strutture Dati 1 Esercizi per il corso di Algoritmi e Strutture Dati Esercizi sulla Tecnica Divide et Impera N.B. Tutti gli algoritmi vanno scritti in pseudocodice (non in Java, né in C++, etc. ). Di tutti gli algoritmi

Dettagli

Trovare l aeroporto italiano con il maggior numero di piste

Trovare l aeroporto italiano con il maggior numero di piste AEROPORTO (Città, Nazione, NumPiste) VOLO (IdVolo, GiornoSett, CittàPart, OraPart, CittàArr, OraArr, TipoAereo) AEREO (TipoAereo, NumPasseggeri, QtaMerci) Datalog - Aeroporti da cui non partono aerei per

Dettagli

AUL22: FactoryTalk View SE Scoprite i vantaggi chiave di una soluzione SCADA integrata

AUL22: FactoryTalk View SE Scoprite i vantaggi chiave di una soluzione SCADA integrata AUL22: FactoryTalk View SE Scoprite i vantaggi chiave di una soluzione SCADA integrata Giampiero Carboni Davide Travaglia David Board Rev 5058-CO900C Interfaccia operatore a livello di sito FactoryTalk

Dettagli

Funzioni matlab per la gestione dei file. Informatica B Prof. Morzenti

Funzioni matlab per la gestione dei file. Informatica B Prof. Morzenti Funzioni matlab per la gestione dei file Informatica B Prof. Morzenti File Contenitori di informazione permanenti Sono memorizzati su memoria di massa Possono continuare a esistere indipendentemente dalla

Dettagli

Ultimo aggiornamento sett13

Ultimo aggiornamento sett13 Ultimo aggiornamento sett13 INDICE 1. Invio singolo SMS tramite richiesta POST/GET HTTP...3 1.1 - Messaggi singoli concatenati...4 2. Invio multiplo SMS tramite richiesta POST/GET HTTP...4 2.1 - Messaggi

Dettagli

SOFTWARE GESTIONE SMS DA INTERFACCE CL MANUALE D INSTALLAZIONE ED USO

SOFTWARE GESTIONE SMS DA INTERFACCE CL MANUALE D INSTALLAZIONE ED USO CLSMS SOFTWARE GESTIONE SMS DA INTERFACCE CL MANUALE D INSTALLAZIONE ED USO Sommario e introduzione CLSMS SOMMARIO INSTALLAZIONE E CONFIGURAZIONE... 3 Parametri di configurazione... 4 Attivazione Software...

Dettagli

IBM DB2 Analytics Accelerator for z/os (IDAA)

IBM DB2 Analytics Accelerator for z/os (IDAA) IBM DB2 Analytics Accelerator for z/os (IDAA) La BI del 201x ha trovato casa Enrico Caraffi Architect IBM Software Group enrico.caraffi@it.ibm.com Milano Roma 13-14 Marzo 2012 Agenda Introduzione: Tracce

Dettagli

La gestione documentale con il programma Filenet ed il suo utilizzo tramite la tecnologia.net. di Emanuele Mattei (emanuele.mattei[at]email.

La gestione documentale con il programma Filenet ed il suo utilizzo tramite la tecnologia.net. di Emanuele Mattei (emanuele.mattei[at]email. La gestione documentale con il programma Filenet ed il suo utilizzo tramite la tecnologia.net di Emanuele Mattei (emanuele.mattei[at]email.it) Introduzione In questa serie di articoli, vedremo come utilizzare

Dettagli

Fortran per Ingegneri

Fortran per Ingegneri Fortran per Ingegneri Lezione 5 A.A. 0/04 Ing. Davide Vanzo davide.vanzo@unitn.it Ing. Simone Zen simone.zen@unitn.it ufficio: Laboratorio didattico di modellistica ambientale ( piano) Tel interno: 488

Dettagli

COMINCIAMO A SENTIRCI UNA FAMIGLIA

COMINCIAMO A SENTIRCI UNA FAMIGLIA COMINCIAMO A SENTIRCI UNA FAMIGLIA IL PRIMO GIORNO CON LA FAMIGLIA OSPITANTE FIRST DAY WITH THE HOST FAMILY Questa serie di domande, a cui gli studenti risponderanno insieme alle loro famiglie, vuole aiutare

Dettagli

Rapida Introduzione all uso del Matlab Ottobre 2002

Rapida Introduzione all uso del Matlab Ottobre 2002 Rapida Introduzione all uso del Matlab Ottobre 2002 Tutti i tipi di dato utilizzati dal Matlab sono in forma di array. I vettori sono array monodimensionali, e così possono essere viste le serie temporali,

Dettagli

Università degli Studi di Parma. Facoltà di Scienze MM. FF. NN. Corso di Laurea in Informatica

Università degli Studi di Parma. Facoltà di Scienze MM. FF. NN. Corso di Laurea in Informatica Università degli Studi di Parma Facoltà di Scienze MM. FF. NN. Corso di Laurea in Informatica A.A. 2007-08 CORSO DI INGEGNERIA DEL SOFTWARE Prof. Giulio Destri http://www.areasp.com (C) 2007 AreaSP for

Dettagli

Dal punto di vista organizzativo sono possibili due soluzioni per il sistema di rete.

Dal punto di vista organizzativo sono possibili due soluzioni per il sistema di rete. Premessa. La traccia di questo anno integra richieste che possono essere ricondotte a due tipi di prove, informatica sistemi, senza lasciare spazio ad opzioni facoltative. Alcuni quesiti vanno oltre le

Dettagli

Istruzioni per il controllo di ciclo - ciclo a condizione generica

Istruzioni per il controllo di ciclo - ciclo a condizione generica Istruzioni per il controllo di ciclo - ciclo a condizione generica Permette di ripetere l esecuzione di un blocco di istruzioni finchè non viene verificata una condizione logica. Sintassi istruzione_1...

Dettagli

Visibilità dei Membri di una Classe

Visibilità dei Membri di una Classe Visibilità dei Membri di una Classe Lezione 10 Ogni classe definisce un proprio scope racchiude il codice contenuto nella definizione della classe e di tutti i suoi membri ogni metodo della classe definisce

Dettagli

FASE DEBUGGING: Compiler Linker. controllando che la voce Genera le informazioni per il debug cioè. "Generate debugging information"

FASE DEBUGGING: Compiler Linker. controllando che la voce Genera le informazioni per il debug cioè. Generate debugging information FASE DEBUGGING: Prima della compilazione, si devono inserire 1 nel progetto informazioni per il debug cioè si devono visualizzare le opzioni di progetto seguendo il percorso: controllando che la voce Genera

Dettagli

Esercizio di Sincronizzazione tra Processi: Ponte a Senso Unico Alternato con Capacità Limitata

Esercizio di Sincronizzazione tra Processi: Ponte a Senso Unico Alternato con Capacità Limitata Esercizio di Sincronizzazione tra Processi: Ponte a Senso Unico Alternato con Capacità Limitata Supponiamo sempre di avere un ponte stretto che permette il passaggio delle auto solo in un verso per volta,

Dettagli

Lab. 1 - Introduzione a Matlab

Lab. 1 - Introduzione a Matlab Lab. 1 - Introduzione a Matlab Alcune informazioni su Matlab Matlab è uno strumento per il calcolo scientifico utilizzabile a più livelli, dalla calcolatrice tascabile, alla simulazione ed analisi di sistemi

Dettagli

Sizing di un infrastruttura server con VMware

Sizing di un infrastruttura server con VMware Sizing di un infrastruttura server con VMware v1.1 Matteo Cappelli Vediamo una serie di best practices per progettare e dimensionare un infrastruttura di server virtuali con VMware vsphere 5.0. Innanzitutto

Dettagli

Progetti reali con ARDUINO

Progetti reali con ARDUINO Progetti reali con ARDUINO Introduzione alla scheda Arduino (parte 2ª) ver. Classe 3BN (elettronica) marzo 22 Giorgio Carpignano I.I.S. Primo LEVI - TORINO Il menù per oggi Lettura dei pulsanti Comunicazione

Dettagli

Panoramica su ITIL V3 ed esempio di implementazione del Service Design

Panoramica su ITIL V3 ed esempio di implementazione del Service Design Master Universitario di II livello in Interoperabilità Per la Pubblica Amministrazione e Le Imprese Panoramica su ITIL V3 ed esempio di implementazione del Service Design Lavoro pratico II Periodo didattico

Dettagli

I FILTRI SED, GREP (e AWK) Tratto da http://www.pluto.it/files/ildp/guide/abs/textproc.html SED

I FILTRI SED, GREP (e AWK) Tratto da http://www.pluto.it/files/ildp/guide/abs/textproc.html SED I FILTRI SED, GREP (e AWK) Tratto da http://www.pluto.it/files/ildp/guide/abs/textproc.html SED SED è un programma in grado di eseguire delle trasformazioni elementari in un flusso di dati di ingresso,

Dettagli

I.Stat Guida utente Versione 1.7 Dicembre 2010

I.Stat Guida utente Versione 1.7 Dicembre 2010 I.Stat Guida utente Versione 1.7 Dicembre 2010 1 Sommario INTRODUZIONE 3 I concetti principali di I.Stat 4 Organizzazione dei dati 4 Ricerca 5 GUIDA UTENTE 6 Per iniziare 6 Selezione della lingua 7 Individuazione

Dettagli

Business Process Modeling and Notation e WebML

Business Process Modeling and Notation e WebML Business Process Modeling and Notation e WebML 24 Introduzione I Web Service e BPMN sono standard de facto per l interoperabilità in rete a servizio delle imprese moderne I Web Service sono utilizzati

Dettagli

Arduino: Programmazione

Arduino: Programmazione Programmazione formalmente ispirata al linguaggio C da cui deriva. I programmi in ARDUINO sono chiamati Sketch. Un programma è una serie di istruzioni che vengono lette dall alto verso il basso e convertite

Dettagli

Interfaccia Web per customizzare l interfaccia dei terminali e

Interfaccia Web per customizzare l interfaccia dei terminali e SIP - Session Initiation Protocol Il protocollo SIP (RFC 2543) è un protocollo di segnalazione e controllo in architettura peer-to-peer che opera al livello delle applicazioni e quindi sviluppato per stabilire

Dettagli

Fondamenti dell Informatica Ricorsione e Iterazione Simona Ronchi Della Rocca (dal testo: Kfoury, Moll and Arbib, cap.5.2)

Fondamenti dell Informatica Ricorsione e Iterazione Simona Ronchi Della Rocca (dal testo: Kfoury, Moll and Arbib, cap.5.2) Fondamenti dell Informatica Ricorsione e Iterazione Simona Ronchi Della Rocca (dal testo: Kfoury, Moll and Arbib, cap.5.2) Definiamo innanzitutto una relazione d ordine tra le funzioni. Siano φ e ψ funzioni

Dettagli

Gestione delle Architetture e dei Servizi IT con ADOit. Un Prodotto della Suite BOC Management Office

Gestione delle Architetture e dei Servizi IT con ADOit. Un Prodotto della Suite BOC Management Office Gestione delle Architetture e dei Servizi IT con ADOit Un Prodotto della Suite BOC Management Office Controllo Globale e Permanente delle Architetture IT Aziendali e dei Processi IT: IT-Governance Definire

Dettagli

VIRTUALIZE IT. www.digibyte.it - digibyte@digibyte.it

VIRTUALIZE IT. www.digibyte.it - digibyte@digibyte.it il server? virtualizzalo!! Se ti stai domandando: ma cosa stanno dicendo? ancora non sai che la virtualizzazione è una tecnologia software, oggi ormai consolidata, che sta progressivamente modificando

Dettagli

Ricerca Operativa Branch-and-Bound per problemi di Programmazione Lineare Intera

Ricerca Operativa Branch-and-Bound per problemi di Programmazione Lineare Intera Ricerca Operativa Branch-and-Bound per problemi di Programmazione Lineare Intera L. De Giovanni AVVERTENZA: le note presentate di seguito non hanno alcuna pretesa di completezza, né hanno lo scopo di sostituirsi

Dettagli

GESTIONE ATTREZZATURE

GESTIONE ATTREZZATURE SOLUZIONE COMPLETA PER LA GESTIONE DELLE ATTREZZATURE AZIENDALI SWSQ - Solution Web Safety Quality srl Via Mons. Giulio Ratti, 2-26100 Cremona (CR) P. Iva/C.F. 06777700961 - Cap. Soc. 10.000,00 I.V. -

Dettagli

Prolog: aritmetica e ricorsione

Prolog: aritmetica e ricorsione Capitolo 13 Prolog: aritmetica e ricorsione Slide: Aritmetica e ricorsione 13.1 Operatori aritmetici In logica non vi è alcun meccanismo per la valutazione di funzioni, che è fondamentale in un linguaggio

Dettagli

Mod. VS/AM VALVOLE DI SFIORO E SICUREZZA RELIEF VALVES AND SAFETY DEVICES

Mod. VS/AM VALVOLE DI SFIORO E SICUREZZA RELIEF VALVES AND SAFETY DEVICES Mod VS/AM VALVOLE DI SFIORO E SICUREZZA RELIEF VALVES AND SAFETY DEVICES VALVOLE DI SFIORO E SICUREZZA RELIEF VALVES AND SAFETY DEVICES Mod VS/AM 65 1 2 VS/AM 65 STANDARD VS/AM 65 CON RACCORDI VS/AM 65

Dettagli

Universita' di Ferrara Dipartimento di Matematica e Informatica. Algoritmi e Strutture Dati. Rappresentazione concreta di insiemi e Hash table

Universita' di Ferrara Dipartimento di Matematica e Informatica. Algoritmi e Strutture Dati. Rappresentazione concreta di insiemi e Hash table Universita' di Ferrara Dipartimento di Matematica e Informatica Algoritmi e Strutture Dati Rappresentazione concreta di insiemi e Hash table Copyright 2006-2015 by Claudio Salati. Lez. 9a 1 Rappresentazione

Dettagli