2011-06-08 3 views
2

Les verrous sont-ils supprimés lors de l'interrogation d'une table temporaire? Si oui, à quel point sont-ils granulaires par défaut? Y a-t-il un impact sur les performances similaire au verrouillage des lignes/tables normales?SQL: Verrouillage des tables temporaires

Je suppose qu'aucun verrou n'est pris car des tables temporaires (au moins à partir de SQL 2008) sont créées par instance.

select x,y,z into #MyTempTable 
from SomeOtherTable 
+0

http://stackoverflow.com/questions/1302670/sql-server-select-into-and-blocking-with-temp-tables –

+0

@Mitch qui était une bonne lecture, je ne pensais pas à propos de le TempDB. Je demande spécifiquement au #MyTempTable. Ces requêtes de longue durée utilisent des tables temporaires partout, comme si c'était une religion et je me demandais si les verrous pouvaient nuire à la performance. –

+0

avez-vous déterminé que vous avez un goulot d'étranglement tempDB? Est-ce sur sa propre matrice RAID 10? –

Répondre

1
  • Une table temporaire comme celui-ci est locale à votre connexion. Il ne peut pas affecter la concurrence, car personne d'autre ne peut le lire.

  • tables temporaires se comportent généralement comme des tables normales pour la concurrence, l'isolement, les serrures, les transactions etc

  • Vous pouvez (ou non!) Se tempdb contention (link about TF 1118) sous une lourde charge qui n'est pas le même que le verrouillage de table

  • Votre question vous est-elle posée par l'un des SQL Server 6.x myths (DBA.SE)?

+0

@Andriy M: c'est surtout impossible. Chaque connexion peut avoir une requête et toutes les demandes sont sérialisées dans la base de données. Une application utilisant plusieurs threads dans le même objet de connexion se bloquerait très rapidement (et est-ce même possible?) – gbn

+0

Vous avez raison. J'ai commencé à penser à partager une connexion et j'ai oublié la concurrence (même si la question concerne essentiellement la concurrence, idiot moi). –

+0

ma question est, sont les verrous retirés sur les tables temporaires? pas le tempdb, la table temporaire #MyTempTable. Dois-je fournir des astuces nolock ou peut-être forcer tablock sur les requêtes en sélectionnant, insérant, mettant à jour, supprimant de #MyTempTable –

Questions connexes