Statistiche di attesa database e indici mancanti del database (BC20 nuova funzionalità)

Salve lettore, in questo articolo voglio menzionarti due nuove funzionalità di Business Central 2022 wave 1 che immagino troverai interessanti.

Spesso chi sviluppa, tralascia un aspetto fondamentale: le performance del proprio codice. Vengono scritte tonnellate di righe di codice con vari filtri su tabelle, senza tener conto delle performance, che probabilmente al momento che si sviluppa non si fa caso perché il database magari è piccolo, ma con il tempo, soprattutto per le tabelle molto grandi potrebbe esserci un problema.

A tal proposito si ricorreva alle statistiche di SQL server dove vengono indicate delle statistiche oppure quali indici mancano a una tabella in base alle query effettuate.

In BC20 è ora possibile accedere a queste informazioni direttamente dal client, senza passare da strumenti di SQL server. Infatti se cerchiamo sulla barra di ricerca la pagina “Statistiche di attesa del database” si aprirà una pagina simile all’immagine sotto.

In questa pagina viene visualizzato uno snapshot delle statistiche sui tempi di attesa nel database tenant. Le statistiche vengono aggregate dal momento in cui il database è stato avviato e anche i diversi tipi di attesa vengono aggregati in categorie di attesa (per ulteriori informazioni, vedere la documentazione relativa alla visualizzazione a gestione dinamica di SQL Server sys.query_store_wait_stats). Per altre informazioni sulle statistiche di attesa, vedere la documentazione relativa alle visualizzazioni a gestione dinamica del sistema sys.dm_db_wait_stats (database SQL di Azure) o sys.dm_os_wait_stats (SQL Server).

I campi info della pagina sono descritti qua sotto.
Categoria di attesa: nome della categoria.
Conteggio task in attesa: numero di attese su questo tipo di attesa. Questo contatore viene incrementato all’inizio di ogni attesa.
Tempo di attesa in ms: tempo di attesa totale per questo tipo di attesa in millisecondi. Questo tempo è comprensivo di signal_wait_time_ms.Max
Tempo massimo attesa in ms: tempo massimo di attesa in millisecondi su questo tipo di attesa.
Tempo di attesa del segnale in ms: somma delle differenze tra il tempo in cui il thread in attesa è stato segnalato e quando ha iniziato a funzionare. Misurato in millisecondi.
Ora di inizio del database: la data e l’ora di avvio del database. Tutti i numeri mostrati per le statistiche di attesa del database vengono raccolti da questo momento.

Queste informazioni sono collezionate nella tabella virtuale “Database Wait Statistics” (ID 2000000235).

N.B. La tabella “Database Wait Statistics” non può essere letta perché contiene dati di sistema.

Un’altra funzione interessante è la pagina “Indici mancanti del database”.

Il database per un ambiente Business Central rende disponibili i contatori delle prestazioni e le informazioni sulle query SQL tramite DMV (Dynamic Management Views). Richiede l’accesso diretto al database per poter ottenere queste informazioni e, per gli ambienti online di Business Central, ciò non è possibile a causa di restrizioni di sicurezza.

Con questa funzionalità, la piattaforma Business Central renderà disponibili i dati sugli indici mancanti come tabella virtuale, in modo che sia possibile accedere ai dati dal codice AL. 

I campi info della pagina sono descritti qua sotto.
Nome tabella: nome della tabella nel database.
ID estensione: ID dell’estensione a cui appartiene la tabella.
Indice con colonne di uguaglianza: elenco di colonne utilizzate nei predicati di uguaglianza WHERE nella query SQL che richiedono l’indice.
Indice con colonne di disuguaglianza: elenco di colonne utilizzate nei predicati di disuguaglianza WHERE (ad esempio < o >) o ORDER BY nella query SQL che richiede l’indice.
Indice con colonne di inclusione: elenco di colonne che fanno parte della clausola SELECT nella query SQL che richiede l’indice.

Queste informazioni sono collezionate nella tabella virtuale “Database Missing Indexes” (ID 2000000236).

N.B. La tabella “Database Missing Indexes” non può essere letta perché contiene dati di sistema.

Se vuoi approfondire gli argomenti sopra descritti, di seguito ti lascio i link alle varie argomentazioni.

Spero che avrai trovato degli spunti di riflessione e degli strumenti che ti potranno aiutare per analizzare le performance per il tuo ambiente Business Central.

Leave a Reply