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.
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
-
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.
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
suFALSE
a livello di sessione o di sistema utilizzandoALTER SESSION
oALTER 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 impostandoOPTIMIZER_IGNORE_PARALLEL_HINTS
suFALSE
a livello di sessione o di sistema utilizzandoALTER SESSION
oALTER SYSTEM
.Ad esempio, il comando seguente abilita i suggerimentiPARALLEL
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
suTRUE
a livello di sessione o di sistema utilizzandoALTER SESSION
oALTER 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 impostandoOPTIMIZER_IGNORE_PARALLEL_HINTS
suTRUE
a livello di sessione o di sistema utilizzandoALTER SESSION
oALTER 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.- 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.
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.
-
Abilita l'ottimizzatore per utilizzare i suggerimenti: impostare il parametro
optimizer_ignore_hints
suFALSE
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 suFALSE
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'utenteADMIN
e gli utenti conDWROLE
dispongono dei privilegiCREATE SESSION
eCREATE JOB
richiesti. Se un utente non dispone diDWROLE
, i privilegi sono necessari per i privilegiCREATE SESSION
eCREATE 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
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. |