Funzioni ad alte prestazioni in Autonomous AI Database su un'infrastruttura Exadata dedicata

Questo articolo descrive le funzioni chiave di tuning delle prestazioni in Autonomous AI Database on Dedicated Exadata Infrastructure.

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.

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

Puoi vedere un'ampia categorizzazione per le funzioni chiave di tuning delle prestazioni del database AI autonomo riportate 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 effettui connessioni al tuo database AI autonomo, le prestazioni dell'interazione della tua applicazione con il database dipendono dal servizio di database a cui ti connetti. Autonomous AI Database fornisce più set di servizi di database da utilizzare quando ci si connette al database. Questi servizi di connessione sono progettati per supportare diversi tipi di operazioni del database, come descritto in Nomi di servizi di database predefiniti per Autonomous AI Database.

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 effettui connessioni al tuo database AI autonomo, puoi 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 nel manuale Oracle Database 26ai Net Services Administrator's Guide.
  • L'applicazione di tag di collocazione è una di queste funzioni utile in determinate applicazioni di elaborazione delle transazioni. Se l'applicazione esegue ripetutamente connessioni allo stesso servizio di database, l'applicazione di tag di colocazione 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 26ai .

  • Configurazione server condiviso è un'altra funzione supportata da Autonomous AI Database per la gestione di applicazioni legacy 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 del server condiviso 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.

    Vedere anche Oracle Database 19c Net Services Administrator's Guide o Oracle Database 26ai Net Services Administrator's Guide per informazioni più dettagliate sui server condivisi, incluse funzionalità come il multiplexing della sessione.

    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 AI Database specifico creato in un Autonomous Container Database abilitato per il server condiviso e non è possibile utilizzare una connessione dedicata per l'Autonomous AI Database creato 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 AI 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 apprendere rapidamente come queste funzioni influiscono sul codice SQL che scrivi e quindi migliorare il codice utilizzando il foglio di lavoro SQL fornito da Oracle Database Actions (che è integrato nel database AI autonomo) e Oracle SQL Developer (un'applicazione gratuita che installi nel tuo sistema di sviluppo).

SQL Trace

Quando un'operazione dell'applicazione richiede più tempo del previsto, ottenere 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 ti aiuterà a identificare e risolvere la causa del problema di prestazioni. Per raggiungere questo obiettivo, puoi utilizzare il trace SQL su un Autonomous AI Database.

Il trace SQL è disabilitato per impostazione predefinita in Autonomous AI Database. È necessario abilitarlo per iniziare a raccogliere i dati di trace SQL. Refer to Use SQL Tracing on Autonomous AI Database for detailed instructions to enable and use SQL Tracing.

Statistiche optimizer

Autonomous AI Database raccoglie automaticamente le statistiche dell'optimizer in modo da non dover eseguire questo task manualmente e questo aiuta a garantire che le statistiche siano aggiornate. La raccolta automatica delle statistiche è abilitata in Autonomous AI 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 26ai Administrator's Guide.

Per ulteriori informazioni sulle statistiche dell'optimizer, vedere Oracle Database 19c SQL Tuning Guide o Oracle Database 26ai 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 AI Database per l'optimizer e i suggerimenti PARALLEL variano a seconda del carico di lavoro:
  • Autonomous AI Lakehouse: Autonomous AI Database con ignoramenti dell'optimizer di Data Warehouse e suggerimenti PARALLEL 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 AI Transaction Processing: Autonomous AI Database onora gli ottimizzatori e i suggerimenti PARALLEL 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 degli indici in Autonomous AI Database. L'indicizzazione automatica è disabilitata per impostazione predefinita in Autonomous AI 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 AI Database monitora il carico di lavoro dell'applicazione e crea e gestisce automaticamente gli indici.

Suggerimento

Per un'alternativa "prova" che dimostri queste istruzioni, esegui Lab 14: Automatic Indexing nel workshop per sviluppatori e utenti di database di Oracle Autonomous AI Database dedicato.
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 in Oracle Database 19c Administrator's Guide o Oracle Database 26ai 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 dall'elaborazione normale delle transazioni di Oracle AI 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 coinvolti nell'uso di questa funzione, fare riferimento alla sezione Using Fast Ingest in Oracle Database 19c Performance Tuning Guide o Oracle Database 26ai Performance Tuning Guide.

Per utilizzare l'inclusione rapida con il tuo database AI autonomo, devi:
  • 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 Autonomous AI Database, per impostazione predefinita optimizer_ignore_hints può essere impostato su FALSE a livello di sistema. Per ulteriori informazioni, vedere Statistiche ottimizzazione.

  • Creare una tabella per l'inclusione rapida: consultare il manuale Oracle Database 19c Performance Tuning Guide o Oracle Database 26ai Performance Tuning Guide per conoscere le limitazioni per le tabelle che possono essere idonee per l'inclusione rapida (le schede con le caratteristiche specificate non possono utilizzare l'inclusione rapida).

Classi di job predefinite con Oracle Scheduler

Autonomous AI Database include valori job_class predefiniti da utilizzare con Oracle Scheduler. Queste classi di mansioni consentono di raggruppare i processi 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 AI 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 di Oracle Scheduler in esecuzione su Autonomous AI Database.

Per ulteriori informazioni su Oracle Scheduler e DBMS_SCHEDULER.CREATE_JOB, vedere Programmazione di job con Oracle Scheduler in Oracle Database 19c o Oracle Database 26ai.

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

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 del database AI autonomo

Le metriche del database AI autonomo ti aiutano a misurare dati quantitativi utili, come 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. Puoi utilizzare i dati delle metriche per diagnosticare e risolvere i problemi con le risorse del database AI autonomo.

Consulta Monitorare i database con le metriche di Autonomous AI Database per ulteriori informazioni come prerequisiti, uso e lista di metriche disponibili per Autonomous AI Database on Dedicated Exadata Infrastructure.

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, nonché informazioni dettagliate sul monitoraggio e l'ottimizzazione delle prestazioni del database, vedere Oracle Database 19c Performance Tuning Guide o Oracle Database 26ai 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 una rapida introduzione al monitoraggio e all'ottimizzazione delle prestazioni del database, vedere Oracle Database 19c 2 Day + Performance Tuning Guide o Oracle Database 26ai 2 Day + Performance Tuning Guide.