Questa pagina è stata tradotta automaticamente. Leggi l'originale in inglese. English

FBMonLogger ora fa parte di HQbird Standard!

FBMonLogger è uno strumento per analizzare l’output delle tabelle di monitoraggio in Firebird e individuare problemi con query SQL lente, transazioni progettate in modo errato (transazioni a lunga esecuzione, transazioni con livello di isolamento errato, ecc.) e identificare applicazioni problematiche.

FBMonLogger può connettersi a un database Firebird con problemi di prestazioni e identificare qual è la causa della lentezza: è un attachment utente, una query SQL lenta o una transazione a lunga esecuzione?

FBMonLogger supporta Firebird 2.1, 2.5 e 3.0 - per versioni precedenti di Firebird o InterBase si prega di utilizzare FBScanner.

FBMonLogger può mostrarti:

  • I principali attachment con il maggior numero di operazioni di I/O, letture non indicizzate e indicizzate
  • Le principali istruzioni SQL con il maggior numero di operazioni di I/O, letture non indicizzate e indicizzate
  • Transazioni problematiche: transazioni a lunga esecuzione, transazioni con livello di isolamento errato, transazioni di lettura/scrittura e informazioni correlate: quando sono iniziate, quali applicazioni hanno avviato queste transazioni, da quale indirizzo IP, ecc.
  • Attachment e istruzioni con le azioni di garbage collection più intensive
  • Rapporto letture/scritture, rapporto INSERT/UPDATE/DELETE e altro.

Dopo la connessione al database in cui si desidera individuare problemi di prestazioni, è necessario eseguire diversi snapshot delle tabelle di monitoraggio - fare clic su «Get Snapshot» per acquisire uno snapshot.

Statistiche di prestazione aggregate per attachment utente

FBMonLogger

Nella prima schermata possiamo vedere statistiche aggregate per le connessioni al database e identificare le connessioni con i problemi più grandi:

Letture sequenziali / Letture indicizzate

“Letture sequenziali / Letture indicizzate” mostra il rapporto totale tra letture sequenziali (non indicizzate) e letture indicizzate nell’applicazione. Di solito il numero di letture non indicizzate dovrebbe essere basso, quindi una grande percentuale di letture sequenziali è un segno che molte query SQL hanno piani di esecuzione NATURAL e potrebbero essere la causa di tempi di risposta lenti.

Fare clic sul record in «TOP attachment: letture sequenziali/indicizzate» porterà alla scheda «Attachments», dove si possono vedere maggiori dettagli sull’Attachment, e poi passare alla scheda «Transactions» o «Statements», dove verranno mostrate le transazioni e le istruzioni collegate all’attachment selezionato (se il segno di spunta «Link to selected attachment» è attivo, altrimenti verranno mostrate tutte le transazioni/istruzioni per tutti gli attachment).

Dettagli di scrittura

«Write details» fornisce una panoramica delle operazioni di scrittura: rapporto tra INSERT/UPDATE/DELETE tra tutti gli attachment del database. Nella tabella dei principali scrittori si possono vedere gli attachment con il maggior numero di operazioni di scrittura. È utile per identificare applicazioni o moduli software che eseguono un numero eccessivo di update o delete (che sono le operazioni più pericolose in termini di garbage collection).

Dettagli della garbage collection

Cosa significano le operazioni di garbage collection?

  • Purge - il motore rimuove le backversion, nel database rimane solo la versione primaria.
  • Expunge - sia la versione primaria che tutte le backversion sono state eliminate.
  • Backout - rimuove solo la versione primaria (a causa del rollback).

Di solito possiamo associare purge con l’operazione UPDATE, Expunge con DELETE e Backout con il rollback di INSERT o UPDATE. Molti backout potrebbero significare che c’è un problema con la gestione delle transazioni nell’applicazione.

Utilizzo della memoria

Il grafico «Memory usage» mostra la memoria totale utilizzata da tutti gli attachment attivi in questo momento e il picco di memoria allocata per essi in passato.

L’elenco dei principali attachment per utilizzo della memoria mostra i maggiori consumatori di memoria tra i tuoi attachment. È utile per trovare applicazioni o moduli software con utilizzo eccessivo della memoria.

Statistiche di prestazione aggregate per istruzioni

FBMonLogger

Nella seconda scheda si possono trovare statistiche di prestazione aggregate per le istruzioni. Queste statistiche riflettono meglio la situazione momentanea nel database - poiché le tabelle di monitoraggio raccolgono informazioni dall’inizio della vita di ogni oggetto, le istruzioni che si vedono qui sono quelle che erano in esecuzione nel momento in cui è stato acquisito lo snapshot.

Letture sequenziali / Letture indicizzate

In questo elenco possiamo vedere le principali istruzioni che eseguono molte letture sequenziali dal database. Di solito tali istruzioni richiedono ottimizzazione SQL - sia attraverso l’ottimizzazione degli indici, sia attraverso la riprogettazione della query SQL.

Per ottimizzare la query, controllare il suo piano di esecuzione: di solito è possibile migliorare la velocità della query eliminando NATURAL dai piani con nuovi indici o riprogettando la query. Fare clic sull’istruzione in questo elenco per aprire la scheda «Statements», dove si possono trovare maggiori dettagli sull’istruzione selezionata e passare alla transazione o all’attachment associato.

Letture/scritture di pagine

Questi grafici ed elenchi mostrano informazioni brevi sulle principali istruzioni che eseguono molte letture - ciò significa che consumano I/O significativo e possono influire sulle prestazioni di altre query. Le istruzioni SQL con valori di picco dovrebbero essere controllate attentamente per garantire prestazioni ottimali.

Dettagli di scrittura per istruzioni

In questo grafico si può vedere quali istruzioni SQL di scrittura stavano operando nel momento in cui è stato acquisito lo snapshot delle tabelle di monitoraggio e identificare UPDATE e DELETE che hanno apportato molte modifiche al database.

Dettagli della garbage collection per istruzioni

In questo grafico possiamo vedere quante operazioni di garbage collection sono state eseguite dalle istruzioni in esecuzione al momento dello snapshot.

Utilizzo della memoria per istruzioni

A differenza delle statistiche aggregate di utilizzo della memoria per attachment, l’utilizzo della memoria delle istruzioni può mostrarci un elenco di istruzioni esatte che consumano molta memoria in questo momento.

Attachments

FBMonLogger

La terza scheda è «Attachments». Puoi aprire questa scheda direttamente per saltarci facendo clic su uno dei record in «Statistiche di prestazione aggregate».

Attachments mostra l’elenco degli utenti connessi al database Firebird, con molti dettagli utili: USER e ROLE dell’attachment, ora di inizio e ID dell’attachment, se la garbage collection è abilitata per l’attachment, nome del processo remoto che ha stabilito l’attachment e diversi contatori di prestazione accumulati per l’attachment: numero di letture sequenziali [eseguite dall’attachment dal suo avvio], numero di letture indicizzate, numero di insert, update e delete, oltre a backout, purge ed expunge dei record.

Per impostazione predefinita alcune colonne dell’attachment sono disattivate, per mostrare solo le informazioni più importanti.

Naturalmente, ogni volta che fai clic su un attachment, puoi passare alle transazioni in esecuzione al suo interno e poi alle istruzioni. C’è una casella di controllo nell’angolo superiore sinistro delle schede Transactions e Statements che controlla il comportamento - quando è selezionata, verranno mostrate solo le transazioni e le istruzioni contrassegnate dall’ID dell’attachment selezionato.

Transactions

FBMonLogger

La scheda «Transactions» mostra le transazioni attive nel momento in cui è stato acquisito lo snapshot. Se la casella «Link to selected attachment» è abilitata, verranno mostrate solo le transazioni per l’attachment selezionato, altrimenti verranno mostrate tutte le transazioni.

Una delle caratteristiche più importanti è la durata di vita delle transazioni: poiché Firebird è progettato per funzionare con transazioni di scrittura brevi, è importante mantenerle il più corte possibile. FBMonLogger evidenzia le transazioni con modalità di isolamento e impostazioni di lettura-scrittura che mantengono la Oldest Active Transaction e quindi provocano il mancato rilascio di versioni di record eccessive. Se vedi una tale transazione ed è iniziata da un po’, significa che potrebbe essere responsabile di versioni di record eccessive.

Ordina per colonna «started at» e cerca transazioni vecchie, contrassegnate in rosso: tutte le transazioni scrivibili e gli snapshot di sola lettura bloccano la Oldest Active Transaction e provocano il mantenimento di versioni di record eccessive. Identifica dove sono iniziate queste transazioni (clic destro e seleziona «View parent attachment») e correggi il tuo codice per eseguire il commit di questa transazione prima.

Statements

FBMonLogger

La scheda «Statements» mostra le istruzioni attive al momento dello snapshot: se hai bisogno di catturare tutte le istruzioni, dovrebbero essere utilizzati FBPerfMon o FBScanner (tutti questi strumenti fanno parte di IBSurgeon Optimization Pack).

Se «Link to selected attachment» è abilitato, verranno mostrate solo le istruzioni per l’attachment specifico, altrimenti tutte le istruzioni attive sono nell’elenco.

Alcune istruzioni non hanno un ID di transazione associato (=0): queste query sono preparate, ma non eseguite.