Processo di ottimizzazione. Ottimizzatore di Oracle. Execution plan. Esempio. Albero di esecuzione. Ottimizzatore di Oracle Dicembre 2002

Documenti analoghi
Silvia Chiusano, Paolo Garza 1

Pag Politecnico di Torino 1

07. Ottimizzare le istruzioni SQL

APPUNTI DELLA LEZIONE DI DATABASE DEL 26/10/2016 Studenti: Marco D'Amato, Adriano Luigi Piscopello Professore: Mario Bochicchio

Data warehouse in Oracle

Il sistema informativo deve essere di tipo centralizzato e accessibile mediante un computer server installato nella rete locale dell albergo.

2011 Politecnico di Torino 1

Microsoft Access. Microsoft Access. Maurizio Rebaudengo, Paolo Garza 1. Microsoft Access. Creazione base di dati. Apertura di una base dati

FILE E INDICI Architettura DBMS

Viste materializzate in Oracle e SQL esteso. Sistemi di gestione di basi di dati. Tania Cerquitelli e Paolo Garza 1.

Cognome Nome Matricola Ordin.

Strutture di accesso ai dati: B + -tree

INDICI PER FILE. Accesso secondario. Strutture ausiliarie di accesso

SQL quick reference. piccolo manuale di riferimento dei principali comandi SQL (prof. Claudio Maccherani, Perugia, 2013)

Basi di Dati: Corso di laboratorio

Interrogazioni nidificate

SQL: Definizione e Manipolazione di Relazioni. Capitolo 2

Analysis Service. Dutto Riccardo IPSI - tel Dutto Riccardo - SQL Server 2008.

Elena Baralis 2007 Politecnico di Torino 1

<Nome Tabella>.<attributo>

SQL. Il nome sta per Structured Query Language Le interrogazioni SQL sono dichiarative

Tecnologia delle Basi di Dati

Tecnologia delle Basi di Dati Esercitazione #4 Definizione dei trigger in Oracle

DATABASE PER IL WEB. Programmazione Web 1

Ottimizzazione 3. Ottimizzazione 4

File e Indici. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma

Schema Del DB Operazionale TELEFONATE

Caratteristiche dei linguaggi per Database

D B M G Il linguaggio HTML

Le Basi di Dati Attive

LABORATORIO di INFORMATICA

Interrogazioni nidificate

@2011 Politecnico di Torino 1

Data warehouse in Oracle

Oracle Database 10g: Introduction to SQL - LVC

D B M G. Linguaggio SQL: fondamenti. Istruzione SELECT: fondamenti. Elena Baralis 2007 Politecnico di Torino 1. Struttura di base

Algebra Relazionale. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma

SQL [2] Concetti avanzati di SQL. Esempi di interrogazioni

Il linguaggio SQL: le viste

ACCESS Esercitazione (query complesse) Ing. Cosimo Orlacchio

Corso di Informatica. Software di produttività personale e database. Ing Pasquale Rota

Basi di Dati e Sistemi Informativi. Organizzazione fisica dei dati. Corso di Laurea in Ing. Informatica Ing. Gestionale Magistrale

Strutture dati e loro organizzazione. Gabriella Trucco

Structured. Language. Basi di Dati. Introduzione. DDL: Data Definition Language. Tipi di dato. Query. Modifica dei Dati

Domande utili alla preparazione dell orale di Informatica all Esame di Stato

Esercitazione: Interrogazioni SQL

Esercitazione seconda prova Esame di Stato Prova di Informatica Gestionale ITC Programmatori e Mercurio. Note introduttive

SQL: DDL, VI, Aggiornamenti e Viste

CORSO ACCESS 2000 PARTE VI

Tipi di sottoquery SQL

Sommario. Tabelle ad indirizzamento diretto e hash Funzioni Hash

MODELLI DEI DATI. Informatica Generale (AA 07/08) Corso di laurea in Scienze della Comunicazione Facoltà di Lettere e Filosofia

Interrogare una base di dati: algebra relazionale e SQL. Savino Castagnozzi Giorgio Macauda Michele Meomartino Salvatore Picerno Massimiliano Sartor

Spiegazioni esercizio Gestione Tabella con PHP e MySQL

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

Trigger. Basi di dati attive. Trigger: regole che specificano azioni attivate automaticamente dal DBMS al verificarsi di determinati eventi

Tecnologia delle Basi di Dati

Il linguaggio SQL: raggruppamenti. Versione elettronica: SQLb-gruppi.pdf

Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL: fondamenti. Il linguaggio SQL

Esempi SQL con Access. Orazio Battaglia

VARIABILI, ASSEGNAZIONE, DECISIONI

Per poter interagire con un database in rete mediante uno script php bisogna. innanzitutto cerare una connessione. Ciò si ottiene mediante la funzione

Esempio di database relazionale con l utilizzo del prodotto MySQL

SQL. SQL: "storia. Sviluppato nella metà degli anni settanta (1974) presso il laboratorio di ricerca IBM di S.Josè. Dal 1983 ca. "standard di fatto"

Basi di Dati: Corso di laboratorio

Partizionamento di tabelle ed indici in. Introduzione al partizionamento Metodi di partizionamento Partizionamento di indici Performance

Basi di dati attive. Paolo Atzeni Stefano Ceri. Basi di dati attive

SQL e algebra relazionale

SQL Avanzato. Interrogazioni e il valore NULL. Interrogazioni complesse, trigger, viste e modifiche dello schema. Giorgio Giacinto 2015

TUTORIAL IMPORTAZIONE DATI DA FOGLIO EXCELL WINKHOUSE

Basi di dati attive. Una base di dati è ATTIVA quando consente la definizione e la gestione di regole di produzione (regole attive o trigger).

Servlet & JDBC ALBERTO BELUSSI ANNO ACCADEMICO 2009/2010. Servlet: interazione con un DBMS. In Java è possibile interagire con un DBMS attraverso

Microsoft Access (parte 5) Query. Query. Query. Query. Creare una query

SQL Server Data Trasformation Services

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura

Il linguaggio SQL: autorizzazioni

Laboratorio Architettura

CONCETTO DI ANNIDAMENTO

2.2 Alberi di supporto di costo ottimo

Triggers. Antonella Poggi, Claudio Corona. Dipartimento di informatica e Sistemistica Università di Roma La Sapienza

ArcGIS - ArcView 3- strumenti di analisi

CURRICOLO DIPARTIMENTO INFORMATICA PRIMO BIENNIO

MySQL per amministratori di database

! Un arco multiplo corrisponde ad un associazione molti-a-molti: il padre (libro) non determina funzionalmente il figlio (autore)

Union-find. Insiemi disgiunti. F. Damiani - Alg. & Lab. 04/05 (da C. Demetrescu et al - McGraw-Hill)

Alberi. Definizioni principali

Ottimizzazione delle interrogazioni

Esercitazione 4: Trigger in DB2

Ripasso Concetti Pratica in Access Link utili. ECDL - Database. European Computer Driving Licence - Modulo 5 - Database LEZIONE 3

Parameter sniffing. Come funziona il parameter sniffing. Di Gianluca Negrelli

Basi di Dati: Corso di laboratorio

Cosa sono le maschere

ARCHITETTURA DI UN DBMS

Oracle PL/SQL. Motivazioni

Argomenti Corso SAP Online ABAP Completo

SQL (STRUCTURED QUERY LANGUAGE)

Informatica. Dipartimento di Economia. Ing. Cristiano Gregnanin. 20 ottobre Corso di laurea in Economia

Tecnologia delle Basi di Dati

Programmazione dinamica

Elena Baralis 2007 Politecnico di Torino 1

Transcript:

Processo di ottimizzazione Ottimizzatore di Oracle Silvia Chiusano Politecnico di Torino chiusano@polito.it Scelta della esecuzione più efficiente per uno statement SQL Influenzato da: Metodi di accesso ai dati (access path) Statistiche sui dati (dimensioni delle tabelle, distribuzione dei dati nelle tabelle, etc.) Strategia di ottimizzazione Hint specificati dall utente (ordine di esecuzione dei join, access path, strategia di ottimizzazione, etc) Execution plan Esempio Indica l esecuzione di uno statement SQL Lo statement SQL è diviso in un insieme di passi Ad ogni passo è assegnato un ordine di esecuzione Rappresentato graficamente con un albero di esecuzione. Contiene due tipi di passi: per accedere fisicamente ai dati (access path) per elaborazione dei dati. DATABASE EMP( job, deptno, ) DEPT(deptno, ) FROM dept, emp WHERE dept.deptno=emp.deptno; 4 Albero di esecuzione Flusso di esecuzione Access to emp Join operation Access to dept Row source Elaborazione Accesso fisico ai dati Flusso di esecuzione 5 I nodi figli sono processati prima del nodo padre Un nodo è eseguito quando: tutti i dati sono stati forniti dal nodo figlio (per i nodi di tipo sort, merge join, group by, funzioni aggregate) oppure ad ogni nuovo dato fornito dal nodo figlio (per i nodi di tipo nested loop join). 6

Tipi di access path Esempio # Full Table scan Index Scan By ROWID Hash scan Cluster scan FROM emp WHERE job= clerk ; Table access full (emp) 7 8 Esempio # Tipi di join FROM emp WHERE job= clerk ; Table access by ROWID (emp) Nested loop join Sort merge join (equijoin) Cluster Join Hash join (equijoin; non in rule based) Index range scan (jobind) CREATE INDEX jonind ON emp; 9 Esempio # FROM dept, emp WHERE dept.deptno=emp.deptno; Strategie di ottimizzazione Due possibili strategie per definire execution plan: Cost-based approach Rule-based approach Sort Merge 4 Sort Cost based è una strategia legata ad una analisi dinamica della distribuzione dei dati Rule based è una strategia legata ad una analisi dell efficienza dei access path che è statica e scorrelata dalla effettiva distribuzione dei dati. Full access 5 Full access

Cost-based approach Un insieme di piani di esecuzione (execution plan) è definito in base a access path disponibili ed hint Ad ogni execution plan è assegnato un costo usando le statistiche disponibili nel dizionario dei dati Il costo è l utilizzo atteso delle risorse (I/O, CPU time, memoria) per eseguire lo statement SQL. Obiettivi: throughput (default) response time Rule-based approach Si basa su un ranking a priori degli access path Analizza gli access path disponibili e sceglie l esecuzione che utilizza gli access path ottimali rispetto al ranking. 4 Cost-based e rule-based Cost based: in base alla distribuzione dei dati sceglie tra accesso tramite indici o full scan: accesso poco frequente a dati è più efficiente tramite indice, molto frequente tramite full scan esecuzione del join: throughput: privilegia esecuzione del merge join response time: privilegia esecuzione del nested loop join. uso della distribuzione dei dati e access path disponibili per decidere l ordine e il tipo di join. Cost-based e rule-based Rule based: privilegia sempre l accesso tramite indici (anche quando non è vantaggioso) nell esecuzione del join privilegia il nested loop join in cui la inner table è acceduta tramite un indice 5 6 Calcolo di statistiche Calcolo delle statistiche relative alle caratteristiche memorizzazione fisica e distribuzione dei dati di tabelle, indici, colonne, cluster Sono memorizzate nel dizionario dei dati. Sono accessibili interrogando le view corrispondenti. Possono essere calcolate in modo esatto o in modo approssimato (su un campione dei dati). Statistiche disponibili Indice: # valori distinti # ROWID (foglie) con lo stesso indice Tabella # righe # data block contenenti i dati Colonna: distribuzione dei dati (equivalente a istogrammi) Istogramma 7 8

Istogrammi Procedimento di ottimizzazione Per analizzare la distribuzione di valori in una colonna Utili nel caso di dati non distribuiti uniformemente Width-balanced histograms: divide i dati in un numero fisso di sottoinsiemi (bucket) e poi conta quanti dati appartengono ad ogni bucket. Heigth-balanced histograms: definisce il numero di dati in ogni bucket; ogni bucket è caratterizzato dalla distribuzione di valori diversi nel bucket (valore min e max). Trasformazione/Semplificazione dello statement SQL Scelta della strategia di ottimizzazione Analisi dei cammini di accesso ai dati Definizione dell ordine di esecuzione delle join e del tipo di operazione di join. 9 Calcolo del piano di esecuzione. Creazione di plan table. Scelta della strategia di ottimizzazione. Definizione di indici e hint 4. Calcolo di statistiche 5. Calcolo del piano di esecuzione 6. Visualizzazione del piano di esecuzione. Creazione di Plan Table Ogni riga contiene un passo del piano di esecuzione I campi principali sono i sequenti: STATEMENT_ID: identificatore delle righe che appartengono allo stesso piano di esecuzione OPERATION, OPTIONS: tipo di operazione (ad esempio join) e modalità con cui è eseguita (ad esempio nested loop) OBJECT_NAME: nome tabella o indice OPTIMIZER: strategia di ottimizzazione ID, PARENT_id, POSITION: #ordine del passo, # nodo padre, ordine per processamento di nodi con lo stesso padre COST. Scelta della strategia di ottimizzazione 4. Calcolo di statistiche ALTER SESSION SET OPTIMIZER_MODE=option; ANALYZE TABLE nametable COMPUTE STATISTICS Opzioni: CHOOSE: cost-based (throughput) se sono disponibili statistiche nel dizionario dei dati, rule based altrimenti FIRST_ROWS: cost-based (response time) ALL_ROWS: cost-based (throughput) RULE: rule based ANALYZE TABLE nametable EVALUATE STATISTICS ANALYZE TABLE nametable COMPUTE STATISTICS FOR COLUMNS namecolumn SIZE #buckets 4 4

5. Calcolo del piano di esecuzione 6. Visualizzazione del piano di esecuzione Interrogazione della tabella plan table EXPLAIN PLAN SET statement_id= name statement id INTO plan table FOR SQL statement; 5 6 Indici Permettono di accedere in modo diretto e veloce ai campi ai quali si riferiscono I campi su cui creare degli indici vanno scelti: in funzione della distribuzione dei dati nella base di dati in funzione delle interrogazioni che si andarnno ad operare Gli indici richiedono spazio e tempi di aggiornamento (vanno creati solo se sono utili) Creazione di indici CREATE INDEX nome_indice ON nome_tabella(nome_campo) CREATE INDEX ind_deptno ON emp(deptno); 7 8 Statistiche sugli indici ANALYZE INDEX nome_indice COMPUTE STATISTICS ANALYZE INDEX ind_deptno COMPUTE STATISTICS; Hint Permettono di definire i seguenti aspetti: strategia di ottimizzazione access path per le tabelle ordine delle tabelle nell esecuzione di un join tipo di join. rendono il codice SQL non più portabile 9 5

Definizione di un hint SELECT /*+ hint eventuali_commenti */ Hint per access path: FULL L hint FULL forza un accesso di tipo full table scan sulla tabella specificata FULL( nome tabella) SELECT /*+ FULL(e) Uso di hint*/ ename from emp e where job= clerk ; FULL(alias tabella) SELECT /*+ FULL(e) */ empno from emp e where empno < 75; Hint per access path: INDEX L hint INDEX forza un accesso di tipo index scan sull indice specificato INDEX( nome tabella nome indice) INDEX( alias tabella nome indice) Hint per access path: INDEX Se in INDEX( ) sono specificati più indici per una tabella, l ottimizzatore sceglie quello più vantaggioso Se in INDEX( ) non sono specificati indici ma viene solo indicata la tabella, l ottimizzatorer analizza tutti gli indici definiti sulla tabella e sceglie quello più vantaggioso Si assuma un indice sal_ind sul campo sal in emp SELECT /*+ INDEX(e sal_ind) */ ename, job from emp e where sal < 75; 4 Hint per ordine di esecuzione delle join: ORDERED Utilizzando l hint ORDERED, le tabelle compaiono nel join nell ordine specificato nella clausola FROM. ORDERED SELECT /*+ ORDERED */ e.sal from emp e, salgrade s where s.hisal= e.sal; Hint per la scelta del tipo di join Forza il nested loop join nei join in cui è coinvolta la tabella. La tabella è considerata la inner table. Questa istruzione deve sempre essere preceduta da ORDERED ORDERED USE_NL (nome tabella) ORDERED USE_NL (alias tabella) Il piano di esecuzione indica un nested loop join, dove la tabella SALGRADE è la inner table; 5 6 6

Hint per la scelta del tipo di join Esempio Forza il merge sort join nei join in cui è coinvolta la tabella. USE_MERGE (nome tabella) USE_MERGE (alias tabella) Forza l hash join nei join in cui è coinvolta la tabella. explain plan for select /*+ FULL(e) ORDERED USE_NL(e) */ e.ename, e.sal from salgrade s, emp e where s.hisal < e.sal and e.job='clerk ; USE_HASH (nome tabella) USE_HASH (alias tabella) 7 8 7