web-dev-qa-db-fra.com

Est-ce que la lecture est non engagée apporter une différence de performance sur les données statiques?

J'ai des tables statiques qui obtiennent beaucoup de requêtes sélectionnées

Je me demande si j'ajoute cela à chaque requête, cela fait-il une différence de performance?

SQL Server 2014

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

voici mes temps d'attente après avoir exécuté la requête ci-dessous

    select * 
from sys.dm_os_wait_stats
WHERE [wait_type] NOT IN (
        N'CLR_SEMAPHORE',    N'LAZYWRITER_SLEEP',
        N'RESOURCE_QUEUE',   N'SQLTRACE_BUFFER_FLUSH',
        N'SLEEP_TASK',       N'SLEEP_SYSTEMTASK',
        N'WAITFOR',          N'HADR_FILESTREAM_IOMGR_IOCOMPLETION',
        N'CHECKPOINT_QUEUE', N'REQUEST_FOR_DEADLOCK_SEARCH',
        N'XE_TIMER_EVENT',   N'XE_DISPATCHER_JOIN',
        N'LOGMGR_QUEUE',     N'FT_IFTS_SCHEDULER_IDLE_WAIT',
        N'BROKER_TASK_STOP', N'CLR_MANUAL_EVENT',
        N'CLR_AUTO_EVENT',   N'DISPATCHER_QUEUE_SEMAPHORE',
        N'TRACEWRITE',       N'XE_DISPATCHER_WAIT',
        N'BROKER_TO_FLUSH',  N'BROKER_EVENTHANDLER',
        N'FT_IFTSHC_MUTEX',  N'SQLTRACE_INCREMENTAL_FLUSH_SLEEP',
        N'DIRTY_PAGE_POLL',  N'SP_SERVER_DIAGNOSTICS_SLEEP')
order by wait_time_ms desc;

enter image description here

2
MonsterMMORPG

Si vos données sont immuables marquent la base de données comme uniquement. Le moteur d'exécution de la requête reconnaît cela et saute le verrouillage. Cependant, les avantages sont marginaux. Si le verrouillage est préoccupé, cela signifie que A) Vous avez des conflits de verrouillage, ce qui implique des données n'est pas immuable ou b) vous acquérez trop de verrous, ce qui implique de grandes analyses qui doivent être traitées en ajoutant un index au besoin.

Pour plus de détails, lisez Comment analyser les performances SQL Server .

4
Remus Rusanu

READ UNCOMMITTED est identique à utiliser NOLOCK, et si les données ne changent pas, il fournira les mêmes avantages de performance que NOLOCK.

Ceci est [~ # ~] pas [~ # ~ ~] Un bouton Go-plus rapide pour tout, cependant. Les données non engagées sont des données non engagées et ne doivent pas être approuvées si les données sous-jacentes changent souvent. Assurez-vous que vous l'utilisez dans le bon contexte.

Je regarderais également les index de couverture, ce qui signifie que les index répondant à vos questions. Vous pouvez également trouver la joie avec des index filtrés. Je vais plus tôt regarder là avant d'allumer NOLOCK/READ UNCOMMITTED.

1
Randolph West