Sql-Server

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

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.

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

Sergio Govoni

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

Sergio Govoni

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!

Sergio Govoni

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.

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

Sergio Govoni

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.