SQL Server exécute-t-il des requêtes en parallèle?


10

SQL Server exécute-t-il des requêtes en parallèle? En d'autres termes, si j'exécute une requête lourde qui prend 10 secondes à exécuter et en même temps que je lance une autre requête lourde qui prend 10 secondes, la deuxième requête démarrera-t-elle réellement après 10 secondes, ou démarrera-t-elle les deux en même temps ?


1
aucune vraie réponse possible, renseignez-vous sur la mise en commun des connexions et le mécanisme de verrouillage

2
Plus pertinent pour lire sur les travailleurs SQL Server et le mécanisme de planification coopérative IMO. En général, la réponse à votre question est "oui".
Martin Smith

Réponses:


14

Vous voulez dire "simultanément". La réponse est oui, avec des mises en garde trop larges pour être discutées ici. En fait, tout l'intérêt du SGBDR est la concurrence.

"Parallèle" a une signification précise dans SQL Server: "une seule requête est répartie sur plusieurs cœurs de processeur".


6

Tant que votre première requête ne verrouille pas une table nécessaire dans votre deuxième requête, elles s'exécuteront en parallèle.


5

Les requêtes s'exécutent en parallèle, dans la mesure du possible.

La base de données utilise différents verrous pour la lecture et l'écriture, sur des lignes, des blocs ou des tables entières, selon ce que vous faites.

Si une requête ne lit qu'à partir d'une table, une autre requête peut également lire à partir de la même table en même temps. Si une requête met à jour certains enregistrements d'une table, une autre requête peut toujours lire à partir de la table tant qu'elle ne lit aucun enregistrement verrouillé pour la mise à jour.


2

Dépend des données - généralement, elles s'exécutent en parallèle, mais certains scénarios de verrouillage peuvent entraîner l'attente d'une requête par une autre. Bien sûr, si le sous-système de disque est faible et que vous n'avez pas beaucoup de RAM, plusieurs requêtes peuvent s'exécuter plus lentement.


0

DDL (langage de définition de données) fonctionne en parallèle comme l'instruction SELECT
DML (langage de données modifié) ne fonctionne pas en parallèle comme l'instruction INSERT et UPDATE


SELECT n'est pas une instruction DDL
a_horse_with_no_name

-1

Si vous écrivez les requêtes comme ci-dessous ... cela fonctionnera parallèlement

SET XACT_ABORT ON
Begin Try
     Begin Tran
        --Your Sql Statement
     Commit Tran
End Try
Begin Catch
    Rollback Tran
End Catch

Remarque - Votre requête parallèle sera en attente dans le cas où une insertion en bloc dans une table

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.