Opzione query wait

L'opzione query wait consente di specificare il tempo in secondi (da 0 a 2147483647) per l'attesa di risorse da parte della query, trascorso il quale si verifica il timeout della query. Se viene utilizzato il valore predefinito -1, il timeout viene impostato automaticamente su un valore pari a 25 volte il costo previsto della query.

In MicrosoftSQL Server le query che impegnano una notevole quantità di memoria, ad esempio quelle che eseguono operazioni di ordinamento e di hashing, vengono inserite in una coda se la memoria disponibile è insufficiente per la loro esecuzione. Il timeout della query si verifica dopo un determinato periodo di tempo calcolato da SQL Server (equivalente a 25 volte il costo previsto della query) o dopo il periodo di tempo specificato come valore non negativo dell'opzione query wait.

Nota importanteImportante

Durante l'attesa di memoria disponibile, è possibile che una transazione contenente la query in attesa mantenga attivi i blocchi acquisiti. In rari casi è possibile che si verifichi un deadlock non rilevabile. La riduzione del periodo di tempo rappresentato dall'opzione query wait consente di ridurre la probabilità che si verifichino deadlock di questo tipo. Una query rimasta in attesa verrà infine terminata e i blocchi delle transazioni verranno rilasciati. L'aumento del tempo massimo di attesa può tuttavia determinare un aumento del periodo di tempo prima che la query venga terminata. È pertanto sconsigliabile apportare modifiche a questa opzione.

query wait è un'opzione avanzata. Se per modificare l'impostazione di query wait si utilizza la stored procedure di sistema sp_configure, il valore dell'opzione potrà essere modificato solo quando show advanced options è impostata su 1. L'impostazione diventa effettiva senza dover riavviare il server.