J'ai une grande table avec environ 70 colonnes dans SQL Server 2008. Une application .NET multithread appelle une proc stockée sur la base de données pour insérer/mettre à jour la table. La fréquence est d'environ 3 fois par seconde.Insérer/mettre à jour des verrous de table sur SQL Server
J'ai fait des partitions hebdomadaires sur la table puisque presque toutes les requêtes ont une contrainte datetime
sur la table.
Parfois, l'insertion/la mise à jour de la table prend du temps. Je me méfie que parfois INSERTION fait attendre UPDATE; parfois UPDATE fait attendre INSERTION. C'est possible?
Comment puis-je concevoir la table pour éviter de tels verrouillages? La performance est le problème principal ici.
Est-il possible d'insérer des entrées en bloc? Si c'est le cas, vous pouvez accumuler les valeurs pendant une minute et faire une insertion en masse. Vérifiez également s'il y a une opération de performance intensive effectuée dans les déclencheurs de cette table. –
L'insertion en masse n'est pas possible. Parce que chaque enregistrement est reçu par un appel de service Web –
Quelle est la fréquence de lecture de la table? Si la table est fréquemment lue, vous pouvez considérer "noLock" sur certaines requêtes. De même, si les mises à jour ne sont pas effectuées sur la base de la même clé primaire, vous pouvez aussi considérer nolock dans update/insert. –