Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

SQL Server:unione di tabelle di grandi dimensioni senza bloccare i dati

Modifica il front-end per utilizzare NOLOCK o READ UNCOMMITTED quando esegui le selezioni .

Non è possibile NOLOCK MERGE,INSERT o UPDATE poiché i record devono essere bloccati per eseguire l'aggiornamento. Tuttavia, puoi NOBLOCCARE le SELEZIONI.

Nota che dovresti usarlo con cautela. Se le letture sporche vanno bene, allora vai avanti. Tuttavia, se le letture richiedono i dati aggiornati, è necessario seguire un percorso diverso e capire esattamente perché l'unione di record 3M sta causando un problema.

Sarei disposto a scommettere che la maggior parte del tempo viene dedicato alla lettura dei dati dal disco durante il comando di unione e/o al lavoro in situazioni di memoria insufficiente. Potresti stare meglio semplicemente inserendo più ram nel tuo server di database.

Una quantità ideale sarebbe avere abbastanza ram per caricare l'intero database in memoria secondo necessità. Ad esempio, se hai un database da 4 GB, assicurati di avere 8 GB di RAM... in un server x64 ovviamente.