Sql-Server

SQL Server 2025 Optimized Locking: TID internals

Sergio Govoni

Optimized Locking è una funzionalità dell’Engine di SQL Server 2025, è stata implementata per ridurre l’utilizzo della memoria impiegata per la gestione dei lock, ridurre il fenomeno noto con il nome di lock escalation e aumentare la concorrenza dei carichi di lavoro. Nei precedenti articoli di questa serie: SQL Server 2025 Optimized Locking e Optimized Locking Internals: Gestione dei lock in aggiornamenti concorrenti abbiamo descritto rispettivamente il funzionamento generale di Optimized Locking e come avviene la gestione dei lock negli aggiornamenti concorrenti.

SQL Server 2025 Optimized Locking Internals: Gestione dei lock in aggiornamenti concorrenti

Optimized Locking è una funzionalità dell’Engine di SQL Server 2025, è stata implementata per ridurre l’utilizzo della memoria impiegata per la gestione dei lock, ridurre il fenomeno noto con il nome di lock escalation e aumentare la concorrenza dei carichi di lavoro.

In questo articolo abbiamo descritto il funzionamento generale di Optimized Locking, ora passiamo alla pratica, osservando come l’Engine gestisce aggiornamenti concorrenti con Lock After Qualification. Consideriamo la tabella dbo.SalesOrder in un database SQL Server 2025 con Optimized Locking completamente abilitato. La tabella contiene i seguenti dati di prova.

SQL Server 2025 Optimized Halloween Protection

Sergio Govoni

Introduzione

SQL Server 2025 introduce importanti innovazioni nell’Engine per migliorare performance e scalabilità. In particolare, la famiglia di funzionalità nota come Intelligent Query Processing si arricchisce di nuove feature in grado di ottimizzare i carichi di lavoro esistenti con uno sforzo di implementazione minimo.

Questo articolo descrive il funzionamento di Optimized Halloween Protection che riduce l’uso del tempdb e migliora le prestazioni delle query grazie a un approccio più efficiente alla gestione del problema di Halloween all’interno dell’Engine.

SQL Server 2025 Optional Parameter Plan Optimization

SQL Server 2025 introduce importanti innovazioni nell’Engine per migliorare performance e scalabilità. In particolare, la famiglia di funzionalità nota come Intelligent Query Processing si arricchisce di nuove feature in grado di ottimizzare i carichi di lavoro esistenti con uno sforzo di implementazione minimo.

Questo articolo descrive il funzionamento di Optional Parameter Plan Optimization (OPPO) che risolve una variante del problema che affligge i piani di esecuzione sensibili ai parametri. Parameter Sensitive Plan Optimization (PSPO), a partire da SQL Server 2022, permette di avere nella plan cache più piani di esecuzione attivi per una singola query parametrizzata; Optional Parameter Plan Optimization (OPPO) interviene, nelle query multi-plan, quando il valore sensibile del parametro presente durante l’esecuzione della query determina se è necessario eseguire una ricerca o una scansione di una tabella.

SQL Server 2025 Optimized Locking

Introduzione

Nel panorama delle applicazioni moderne, in cui scalabilità e concorrenza rappresentano requisiti essenziali, garantire prestazioni elevate senza sacrificare la coerenza dei dati è una sfida sempre più complessa. SQL Server 2025 introduce diverse novità nell’Engine per migliorare performance e scalabilità. In questo articolo, dopo una panoramica iniziale sulle novità introdotte nel database Engine, ci concentreremo su Optimized Locking, una funzionalità dal nome magico che modifica il modo in cui le istruzioni DML acquisiscono i lock. Introdotta inizialmente in Azure SQL, ora è disponibile anche on-premises.

Agenda di SQL Start 2025!

SQL Start è l’evento community dedicato a chi lavora ogni giorno con la Data Platform di Microsoft, sia on-premise che nel cloud Azure. Una giornata di formazione tecnica, completamente gratuita, pensata per professionisti, sviluppatori, DBA, data engineer e appassionati di dati.

Ospitato nelle aule della Facoltà di Ingegneria dell’Università Politecnica delle Marche si terrà in presenza in Ancona, il 13 giugno 2025. Scopri la sede dell’evento.

L’agenda 2025 in breve

Quest’anno vi aspettano 4 track parallele per un totale di 20 ore di contenuti tecnici su:

Unicità condizionata, NULL e ANSI_NULLS: Soluzioni T-SQL senza trigger

Recentemente mi sono trovato ad affrontare un caso interessante relativo alla gestione di un vincolo UNIQUE con alcune particolarità su una tabella di un database SQL Server. La richiesta è stata quella controllare che i valori inseriti o modificati in una colonna siano unici, permettendo però NULL multipli.

Consideriamo, a titolo di esempio semplificato, lo schema della tabella dbo.EmailTable. La tabella memorizza alcuni attributi di una anagrafica contatti tra cui il Nome, il Cognome e l’Email. L’attributo Email non è obbligatorio ma quando presente deve essere univoco. L’assenza dell’attributo viene gestita con un NULL.

SQL Start 2025 – Save the date!

SQL Start è un evento community di una giornata, completamente gratuito, per i professionisti che lavorano con i dati!

Focalizzato sulla Data Platform di Microsoft e sulle tecnologie ad esso correlate, anche quest’anno si svolgerà nella sua sede storica, l’Università Politecnica delle Marche (Facoltà di Ingegneria), venerdì 13 giugno 2025.

Partecipando, potrai interagire con professionisti, MVP di SQL Server e di Microsoft Azure, esperti del settore IT e colleghi con i quali potrai:

Deadlock in SQL Server: Come funzionano e come evitarli!

I deadlock in SQL Server e Azure SQL possono rappresentare un problema significativo per le prestazioni e quando si presentano diventano presto motivo di discordia tra chi fornisce la soluzione database e chi la personalizza.

Prima di dare la definizione di deadlock esaminiamo le differenze tra lock e deadlock; quest’ultimo viene spesso confuso con il normale lock, ma sono due concetti distinti.

Quando una transazione T2 richiede un lock su una risorsa già bloccata da un’altra transazione T1, la transazione T2 entra in attesa e vi rimane finché il lock acquisito dalla transazione T1 non viene rilasciato. In questo caso, la transazione T2 è bloccata, ma non si tratta di un deadlock. Un deadlock si verifica solo quando due o più transazioni si bloccano reciprocamente, impedendo l’avanzamento di ciascuna di esse. I deadlock vengono risolti quasi immediatamente, l’Engine li rileva automaticamente e termina una delle transazioni coinvolte per sbloccare la situazione. Il lock, invece, può teoricamente durare all’infinito. By default, le transazioni in SQL Server e Azure SQL non hanno un timeout e rimangono in attesa potenzialmente all’infinito, a meno che non venga impostato un timeout con l’opzione LOCK_TIMEOUT o non intervenga manualmente un DBA.

Piani di manutenzione: Strategie per proteggere e ottimizzare i tuoi database!

Sergio Govoni

In questo articolo tratteremo i task fondamentali che un piano di manutenzione per database SQL Server deve avere. Esploreremo il significato di alcune impostazioni di default e la possibilità di arricchire il task di backup database con un task di tipo T-SQL script in grado di testare il ripristino del database archiviato. Dettagli aggiuntivi sono disponibili nella documentazione SQL Server Maintenance plans.

Un piano di manutenzione database è un insieme di attività specifiche e proattive che devono essere eseguite regolarmente sui database di una istanza SQL Server o Azure SQL per garantirne il corretto funzionamento, performance adeguate, e disponibilità. I piani di manutenzione creano un flusso di lavoro che organizza le attività necessarie a garantire che il database sia ottimizzato, sottoposto regolarmente a backup e consistente.