Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

SQL Server - Fusionner de grandes tables sans verrouiller les données

Modifiez votre frontal pour utiliser NOLOCK ou READ UNCOMMITTED lors des sélections .

Vous ne pouvez pas NOLOCK MERGE, INSERT ou UPDATE car les enregistrements doivent être verrouillés pour effectuer la mise à jour. Cependant, vous pouvez NOLOCK les SELECTS.

Notez que vous devez l'utiliser avec prudence. Si les lectures sales sont correctes, alors allez-y. Cependant, si les lectures nécessitent des données mises à jour, vous devez suivre un chemin différent et déterminer exactement pourquoi la fusion des enregistrements 3M pose problème.

Je serais prêt à parier que la plupart du temps est passé à lire les données du disque pendant la commande de fusion et/ou à contourner les situations de mémoire insuffisante. Vous feriez peut-être mieux de simplement mettre plus de RAM dans votre serveur de base de données.

Une quantité idéale serait d'avoir suffisamment de RAM pour extraire toute la base de données en mémoire selon les besoins. Par exemple, si vous avez une base de données de 4 Go, assurez-vous d'avoir 8 Go de RAM... dans un serveur x64 bien sûr.