Funzioni ad alte prestazioni in Autonomous Database sull'infrastruttura Exadata dedicata

In questo articolo vengono descritte le funzioni di tuning delle prestazioni chiave in Autonomous Database sull'infrastruttura Exadata dedicata.

Si noti che in questa sezione il termine "utente" viene generalmente utilizzato per indicare qualsiasi utente dell'organizzazione che ha la responsabilità di eseguire determinati task. In alcuni casi, questo è il DBA dell'applicazione, in altri è lo sviluppatore dell'applicazione.

Autonomous Database include diverse funzioni che monitorano, analizzano e ottimizzano automaticamente le prestazioni del database. Per un elenco completo delle funzioni di tuning e gestione delle prestazioni SQL di Oracle Autonomous Database e le istruzioni su come utilizzarle, vedere Oracle Database 19c SQL Tuning Guide o Oracle Database 23ai SQL Tuning Guide.

Puoi vedere un'ampia categorizzazione per le funzioni chiave di tuning delle prestazioni di Autonomous Database descritte di seguito.

Suggerimento

Nell'immagine seguente è possibile fare clic sulla funzione che si desidera esplorare ulteriormente.


Servizi di database predefiniti

Le modalità di connessione dell'applicazione al database e di codifica delle chiamate SQL al database determinano le prestazioni complessive delle operazioni di elaborazione e reporting delle transazioni dell'applicazione.

Quando si effettuano connessioni ad Autonomous Database, le prestazioni dell'interazione dell'applicazione con il database dipendono dal servizio di database a cui ci si connette. Autonomous Database offre più set di servizi di database da utilizzare durante la connessione al database. Questi servizi di connessione sono progettati per supportare diversi tipi di operazioni del database, come descritto nella sezione Nomi predefiniti del servizio di database per database autonomi.

Suggerimento

Verificare le caratteristiche chiave dei servizi di database predefiniti e la tabella che confronta i diversi set di servizi di database in base a queste caratteristiche per decidere quale servizio di database è più appropriato per i requisiti di prestazioni dell'applicazione.

Connection pool

Quando si effettuano connessioni ad Autonomous Database, è possibile utilizzare i connection pool per ridurre il sovraccarico delle prestazioni dovuto alla creazione e all'eliminazione ripetute di singole connessioni. Questo è un altro fattore che ha un grande impatto sulle prestazioni dell'interazione dell'applicazione con il database.

Molto spesso, l'uso dei connection pool viene considerato solo quando si progetta o si migliora un'applicazione per garantire una disponibilità continua. Tuttavia, l'uso dei connection pool anziché delle singole connessioni può essere vantaggioso per quasi tutte le applicazioni di elaborazione delle transazioni. Un connection pool offre i vantaggi riportati di seguito.

  • Riduce il numero di volte in cui vengono creati nuovi oggetti di connessione.
  • Promuove il riutilizzo dell'oggetto di connessione.
  • Velocizza il processo di acquisizione di una connessione.
  • Controlla la quantità di risorse impiegate per gestire le connessioni.
  • Riduce la quantità di sforzi di codifica necessari per gestire manualmente gli oggetti di connessione.

Funzioni di connessione speciali

Oracle Net Services (precedentemente denominato SQL*Net) offre una vasta gamma di funzioni di connessione che migliorano le prestazioni in scenari di connessione specifici. Queste funzioni sono descritte nel manuale Oracle Database 19c Net Services Administrator's Guide o Oracle Database 23ai Net Services Administrator's Guide.
  • L'applicazione di tag di posizione è una di queste funzioni utile in alcune applicazioni di elaborazione delle transazioni. Se l'applicazione effettua ripetutamente connessioni allo stesso servizio di database, l'applicazione di tag di colocation consente di indirizzare tutte queste connessioni alla stessa istanza di database, ignorando l'elaborazione di bilanciamento del carico normalmente eseguita sul lato database delle connessioni. Per ulteriori informazioni, vedere COLOCATION_TAG delle connessioni client in Oracle Database 19c o Oracle Database 23ai.

  • Configurazione server condiviso è un'altra funzione che Autonomous Database supporta per la gestione delle applicazioni precedenti progettate senza connection pooling. L'architettura del server condiviso consente al database server di consentire a molti processi client di condividere pochissimi processi server. Ciò aumenta il numero di utenti che l'applicazione può supportare. L'utilizzo dell'architettura server condivisa per tali applicazioni legacy consente loro di eseguire lo scale-up senza apportare modifiche all'applicazione stessa.

    È possibile abilitare le connessioni al server condiviso durante il provisioning di un Autonomous Container Database (ACD) e questa impostazione si applica a tutti i database creati in esso. Per istruzioni, vedere Creare un Autonomous Container Database.

    Per informazioni più dettagliate sui server condivisi, incluse funzioni quali il multiplexing delle sessioni, vedere anche Oracle Database 19c Net Services Administrator's Guide o Oracle Database 23ai Net Services Administrator's Guide .

    Una volta abilitata la connessione al server condiviso per l'Autonomous Container Database, la modifica della stringa di connessione non è necessaria. La configurazione predefinita è impostata su Dedicato.

    Nota

    Non è possibile disabilitare un server condiviso per un Autonomous Database specifico creato in un Autonomous Container Database abilitato per il server condiviso e non è possibile utilizzare una connessione dedicata per gli Autonomous Database creati in un Autonomous Container Database abilitato per il server condiviso.

Funzioni di tuning delle prestazioni SQL

Le grandi applicazioni iniziano con SQL ben scritto. Oracle Autonomous Database offre numerose funzioni che consentono di creare applicazioni ad alte prestazioni e convalidare il codice SQL e PL/SQL. Di seguito sono elencate alcune funzioni.

  • Indicizzazione automatica
  • Statistiche e suggerimenti ottimizzatore
  • Risoluzione automatica delle regressioni del piano SQL
  • quarantena automatica delle istruzioni SQL in esecuzione
  • Gestione del piano SQL
  • SQL Tuning Set
  • SQL Trace

Durante lo sviluppo dell'applicazione, puoi scoprire rapidamente in che modo queste funzioni influiscono sul codice SQL che scrivi e quindi migliorare il codice utilizzando il foglio di lavoro SQL fornito da Oracle Database Actions (integrato in Autonomous Database) e Oracle SQL Developer (un'applicazione gratuita installata nel tuo sistema di sviluppo).

SQL Trace

Quando un'operazione dell'applicazione richiede più tempo del previsto, il recupero di una traccia di tutte le istruzioni SQL eseguite nell'ambito di questa operazione con dettagli quali il tempo impiegato da tale istruzione SQL nelle fasi di analisi, esecuzione e recupero consentirà di identificare e risolvere la causa del problema di prestazioni. Per ottenere questo risultato, puoi utilizzare il trace SQL su un Autonomous Database.

Il trace SQL è disabilitato per impostazione predefinita in Autonomous Database. È necessario abilitarlo per iniziare a raccogliere i dati di trace SQL. Per istruzioni dettagliate sull'abilitazione e l'uso di SQL Tracing in Autonomous Database, fare riferimento a Usa SQL Tracing in Autonomous Database.

Statistiche optimizer

Autonomous Database raccoglie automaticamente le statistiche dell'optimizer, evitando di dover eseguire questo task manualmente e garantendo che le statistiche siano aggiornate. La raccolta automatica delle statistiche è abilitata in Autonomous Database ed è eseguita in una finestra di manutenzione standard.

Nota

Per ulteriori informazioni sui tempi delle finestre di manutenzione e sulla raccolta automatica delle statistiche dell'optimizer, vedere Oracle Database 19c Administrator's Guide o Oracle Database 23ai Administrator's Guide.

Per ulteriori informazioni sulle statistiche dell'optimizer, vedere Oracle Database 19c SQL Tuning Guide o Oracle Database 23ai SQL Tuning Guide.

Suggerimenti ottimizzatore

I suggerimenti dell'ottimizzatore sono commenti speciali in un'istruzione SQL che passano le istruzioni all'ottimizzatore. L'ottimizzatore utilizza i suggerimenti per scegliere un piano di esecuzione per l'istruzione, a meno che non venga impedito da alcune condizioni.

Le impostazioni predefinite di Autonomous Database per l'ottimizzatore e i suggerimenti PARALLEL variano a seconda del carico di lavoro:
  • Autonomous Data Warehouse: Autonomous Database con data warehouse ignora i suggerimenti dell'ottimizzatore e PARALLEL i suggerimenti nelle istruzioni SQL per impostazione predefinita.

    Se l'applicazione si basa su suggerimenti, è possibile abilitare i suggerimenti dell'optimizer impostando il parametro OPTIMIZER_IGNORE_HINTS su FALSE a livello di sessione o di sistema utilizzando ALTER SESSION o ALTER SYSTEM.

    Ad esempio, il comando seguente abilita i suggerimenti nella sessione:
    ALTER SESSION 
      SET OPTIMIZER_IGNORE_HINTS=FALSE;

    È inoltre possibile abilitare i suggerimenti PARALLEL nelle istruzioni SQL impostando OPTIMIZER_IGNORE_PARALLEL_HINTS su FALSE a livello di sessione o di sistema utilizzando ALTER SESSION o ALTER SYSTEM.

    Ad esempio, il comando seguente abilita i suggerimenti PARALLEL nella sessione:
    ALTER SESSION 
      SET OPTIMIZER_IGNORE_PARALLEL_HINTS=FALSE;
  • Autonomous Transaction Processing: Autonomous Database onora i suggerimenti per l'ottimizzazione e PARALLEL i suggerimenti nelle istruzioni SQL per impostazione predefinita.

    È possibile disabilitare i suggerimenti dell'optimizer impostando il parametro OPTIMIZER_IGNORE_HINTS su TRUE a livello di sessione o di sistema utilizzando ALTER SESSION o ALTER SYSTEM.

    Ad esempio, il comando seguente disabilita i suggerimenti nella sessione:

    ALTER SESSION 
      SET OPTIMIZER_IGNORE_HINTS=TRUE;

    È inoltre possibile disabilitare i suggerimenti PARALLEL nelle istruzioni SQL impostando OPTIMIZER_IGNORE_PARALLEL_HINTS su TRUE a livello di sessione o di sistema utilizzando ALTER SESSION o ALTER SYSTEM.

    Ad esempio, il comando seguente abilita i suggerimenti PARALLEL nella sessione:

    ALTER SESSION 
      SET OPTIMIZER_IGNORE_PARALLEL_HINTS=TRUE;

Indicizzazione automatica

L'indicizzazione automatica automatizza i task di gestione dell'indice in Autonomous Database. L'indicizzazione automatica è disabilitata per impostazione predefinita in Autonomous Database.

La creazione manuale degli indici richiede una conoscenza approfondita del modello dati, dell'applicazione e della distribuzione dei dati. In passato, i DBA erano responsabili delle scelte su quali indici creare, e poi a volte i DBA non hanno rivisto le loro scelte o mantenuto gli indici man mano che le condizioni cambiavano. Di conseguenza, le opportunità di miglioramento sono state perse e l'uso di indici non necessari potrebbe diventare una responsabilità per le prestazioni.

La funzione di indicizzazione automatica in Autonomous Database monitora il carico di lavoro dell'applicazione e crea e gestisce automaticamente gli indici.

Suggerimento

Per un'alternativa "try it out" che dimostri queste istruzioni, esegui Lab 14: Automatic Indexing nel workshop per sviluppatori e utenti di database di Oracle Autonomous Database.
Abilita indicizzazione automatica
  • Per abilitare l'indicizzazione automatica, attenersi alla procedura DBMS_AUTO_INDEX.CONFIGURE. Ad esempio, l'esecuzione dell'istruzione riportata di seguito consente l'indicizzazione automatica in un database e crea nuovi indici automatici come indici visibili, in modo da poterli utilizzare nelle istruzioni SQL.
    EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_MODE','IMPLEMENT');
  • Utilizzare il package DBMS_AUTO_INDEX per creare report sul task automatico e impostare le preferenze di indicizzazione automatica.

    Nota

    Nota: quando l'indicizzazione automatica è abilitata, la compressione dell'indice per gli indici automatici è abilitata per impostazione predefinita.
Disabilita indicizzazione automatica
Per disabilitare l'indicizzazione automatica, utilizzare la procedura DBMS_AUTO_INDEX.CONFIGURE. Ad esempio, l'esecuzione dell'istruzione riportata di seguito disabilita l'indicizzazione automatica in un database in modo che non vengano creati nuovi indici automatici. Tuttavia, gli indici automatici esistenti rimangono abilitati.
EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_MODE','OFF');

Per ulteriori informazioni, vedere Managing Auto Indexes nel manuale Oracle Database 19c Administrator's Guide o Oracle Database 23ai Administrator's Guide.

Inserimento rapido

L'inclusione rapida ottimizza l'elaborazione di inserimenti di dati a riga singola ad alta frequenza in un database. L'inclusione rapida utilizza il pool di grandi dimensioni per inserire nel buffer gli inserimenti prima di scriverli su disco, in modo da migliorare le prestazioni di inserimento dei dati.

L'intento di fast-ingest è quello di supportare applicazioni che generano molti dati informativi che hanno un valore importante nell'aggregato, ma che non richiedono necessariamente garanzie ACID complete. Molte applicazioni nell'Internet of Things (IoT) hanno un carico di lavoro rapido di tipo "fire and forget", come i dati dei sensori, i dati dei contatori intelligenti o anche le fotocamere del traffico. Per queste applicazioni, i dati potrebbero essere raccolti e scritti nel database in volumi elevati per un'analisi successiva.

L'inclusione rapida è molto diversa dalla normale elaborazione delle transazioni di Oracle Database in cui i dati vengono registrati e non vengono mai persi una volta "scritti" nel database (ovvero, sottoposti a commit). Per ottenere il massimo throughput di inclusione, i normali meccanismi di transazione Oracle vengono ignorati ed è responsabilità dell'applicazione verificare che tutti i dati siano stati effettivamente scritti nel database. Sono state aggiunte API speciali che possono essere richiamate per verificare se i dati sono stati scritti nel database.

Per una panoramica dell'inclusione rapida e dei passi necessari per l'utilizzo di questa funzione, vedere Using Fast Ingest nel manuale Oracle Database 19c Performance Tuning Guide o Oracle Database 23ai Performance Tuning Guide.

Per utilizzare l'inclusione rapida con Autonomous Database, è necessario:
  • Abilita l'ottimizzatore per utilizzare i suggerimenti: impostare il parametro optimizer_ignore_hints su FALSE a livello di sessione o di sistema, a seconda dei casi.

    A seconda del tipo di carico di lavoro di Autonomous Database in uso, per impostazione predefinita optimizer_ignore_hints può essere impostato su FALSE a livello di sistema. Per ulteriori informazioni, vedere Statistiche dell'ottimizzatore.

  • Create a Table for Fast Ingest: fare riferimento al manuale Oracle Database 19c Performance Tuning Guide o Oracle Database 23ai Performance Tuning Guide per le limitazioni relative all'idoneità delle tabelle per l'inclusione rapida (le tabelle con le caratteristiche specificate non possono utilizzare l'inclusione rapida).

Classi di job predefinite con Oracle Scheduler

Autonomous Database include valori job_class predefiniti da utilizzare con Oracle Scheduler. Queste classi consentono di raggruppare i job che condividono caratteristiche e comportamenti comuni in entità più grandi in modo da poter assegnare priorità a queste classi controllando le risorse allocate a ciascuna classe.

Con le classi di job predefinite, è possibile assicurarsi che i job critici abbiano priorità e risorse sufficienti da completare. Ad esempio, per un progetto critico che carica un data warehouse, è possibile combinare tutti i job di data warehousing in una classe e assegnarne la priorità rispetto ad altri job allocando una percentuale elevata delle risorse disponibili. È inoltre possibile assegnare priorità relative ai job all'interno di una classe di job.

I valori predefiniti di job_class, TPURGENT, TP, HIGH, MEDIUM e LOW vengono mappati ai gruppi di consumer corrispondenti. Queste classi di job consentono di specificare il gruppo di consumer in cui viene eseguito un job con DBMS_SCHEDULER.CREATE_JOB.

La procedura DBMS_SCHEDULER.CREATE_JOB supporta i tipi di job PLSQL_BLOCK e STORED_PROCEDURE per il parametro job_type in Autonomous Database.

Ad esempio: utilizzare quanto segue per creare un singolo job normale da eseguire nel gruppo di consumer HIGH.

BEGIN
   DBMS_SCHEDULER.CREATE_JOB (
     job_name => 'update_sales',
     job_type => 'STORED_PROCEDURE',
     job_action => 'OPS.SALES_PKG.UPDATE_SALES_SUMMARY',
     start_date => '28-APR-19 07.00.00 PM Australia/Sydney',
     repeat_interval => 'FREQ=DAILY;INTERVAL=2',
     end_date => '20-NOV-19 07.00.00 PM Australia/Sydney',
     auto_drop => FALSE,
     job_class => 'HIGH',
     comments => 'My new job');
END;
/

Note per Oracle Scheduler:

  • Per utilizzare le autorizzazioni aggiuntive DBMS_SCHEDULER.CREATE_JOB per ruoli o privilegi specifici potrebbero essere necessarie. L'utente ADMIN e gli utenti con DWROLE dispongono dei privilegi CREATE SESSION e CREATE JOB richiesti. Se un utente non dispone di DWROLE, i privilegi sono necessari per i privilegi CREATE SESSION e CREATE JOB.

  • L'attributo del job instance_id viene ignorato per i job Oracle Scheduler in esecuzione su Autonomous Database.

Per ulteriori informazioni su Oracle Scheduler e DBMS_SCHEDULER.CREATE_JOB, vedere Pianificazione dei job con Oracle Scheduler in Oracle Database 19c o Oracle Database 23ai.

Per informazioni sugli attributi dei job, vedere SET_ATTRIBUTE Procedura in Oracle Database 19c o Oracle Database 23ai.

Strumenti di monitoraggio e tuning delle prestazioni

Diverse situazioni, come la modifica dei carichi di lavoro, le limitazioni delle risorse su server di applicazioni e database o semplicemente i colli di bottiglia della rete, possono causare problemi di prestazioni delle applicazioni. Oracle offre una vasta gamma di strumenti che consentono di monitorare le prestazioni, diagnosticare i problemi relativi alle prestazioni e ottimizzare l'applicazione o il database per risolvere il problema. Di seguito sono elencate alcune di esse:
Strumento Dettagli
Hub delle prestazioni

Strumento disponibile e ricco di funzionalità disponibile nella console di Oracle Cloud Infrastructure (OCI). Performance Hub è inoltre integrato in Oracle Database Actions e Oracle Enterprise Manager.

Per ulteriori dettagli, vedere Monitorare le prestazioni del database con Hub delle prestazioni.

Metriche di Autonomous Database

Le metriche di Autonomous Database consentono di misurare dati quantitativi utili, ad esempio l'utilizzo della CPU e dello storage, il numero di tentativi di login e connessione al database riusciti e non riusciti, le operazioni del database, le query SQL e le transazioni e così via. È possibile utilizzare i dati delle metriche per diagnosticare e risolvere i problemi con le risorse di Autonomous Database.

Per ulteriori informazioni sui prerequisiti, sull'uso e sulla lista delle metriche disponibili per Autonomous Database on Dedicated Exadata Infrastructure, vedere Monitorare i database con le metriche di Autonomous Database.

Automatic Workload Repository (AWR) e Automatic Database Diagnostic Monitor (ADDM)

Altri due strumenti comunemente utilizzati sono l'Automatic Workload Repository (AWR) e l'Automatic Database Diagnostic Monitor (ADDM).

AWR memorizza le statistiche relative alle prestazioni per un database Oracle e ADDM è uno strumento di diagnostica che analizza regolarmente i dati AWR, individua le cause principali di eventuali problemi di prestazioni, fornisce suggerimenti per la correzione dei problemi e identifica le aree non di problema del sistema. Poiché AWR è un repository di dati cronologici sulle prestazioni, ADDM può analizzare i problemi relativi alle prestazioni dopo l'evento, risparmiando spesso tempo e risorse nella riproduzione di un problema.

Per istruzioni sull'uso di questi strumenti e informazioni dettagliate sul monitoraggio e l'ottimizzazione delle prestazioni del database, vedere Oracle Database 19c Performance Tuning Guide o Oracle Database 23ai Performance Tuning Guide.

AWR e ADDM sono disponibili anche in Hub delle prestazioni. Per ulteriori dettagli, vedere Monitorare le prestazioni del database con Hub delle prestazioni.

Per un'introduzione rapida al monitoraggio e all'ottimizzazione delle prestazioni del database, vedere Oracle Database 19c 2 Day + Performance Tuning Guide o Oracle Database 23ai 2 Day + Performance Tuning Guide.