SQL Server 2016 : Diagnostic

Aborder l'ordonnancement des tâches

Testez gratuitement nos 1250 formations

pendant 10 jours !

Tester maintenant Afficher tous les abonnements
Voyez de quelle manière SQL Server gère, lui-même, l'ordonnancement des tâches d'exécution des requêtes.
06:14

Transcription

Pour les quelques vidéos qui viennent, j'aimerais parler d'un module particulier, dont je vous ai déjà parlé, qui s'appelle SQL OS. Je vous l'ai dit, SQL OS va gérer principalement les ressources physiques de la machine, et deux points importants, il va gérer le temps du processeur, ou des processeurs, de nos jours, et puis il va gérer la mémoire vive. Il va le faire en interne dans SQL Server, puisqu'il est au plus proche des besoins de SQL Server. Donc déjà, entre parenthèses, si vous installez SQL Server sur une machine, il vaut mieux que ce soit une machine dédiée, un serveur qui ne tourne que SQL Server comme service important. Comme ça, les ressources vont être beaucoup plus facilement à disposition de SQL Server, et SQL OS pourra s'en emparer. Il va demander des ressources à Windows, il va demander de la RAM, que Windows peut lui donner, il va demander le temps processeur que Windows peut lui donner, et en interne, SQL OS va le gérer lui-même. Deux points importants pour SQL OS : les processeurs et la mémoire. On va d'abord s'occuper des processeurs. SQL OS a des modules de code, des objets qui sont des objets ordonnanceurs, des « schedulers », comme dans un système d'exploitation. L'idée du scheduling, c'est de prendre un certain nombre de tâches pour une machine qui a plusieurs tâches à accomplir en même temps, et de donner ces tâches à un ordonnanceur de tâches, qui est lié à un processeur physique de la machine, ou à un cœur physique de la machine. Donc, première chose à dire, au démarrage, SQL Server se charge, regarde combien il y a de processeurs, de cœurs sur la machine. Il va créer un objet, une instance de scheduler par processeur, ou par cœur, plus précisément. Ensuite chaque ordonnanceur, ou scheduler, va avoir un certain nombre de workers. Il va créer des objets qui vont pouvoir lui donner du travail. Ces workers ont un nombre qui va varier selon le nombre de sessions qui vont être ouvertes sur SQL Server. Le scheduler va gérer donc son petit cheptel de workers, et les workers vont pouvoir être liés à des tâches, et le scheduler va en exécuter un à la fois, évidemment. Donc, le scheduler est lié à un processeur, il va prendre ses workers, il y en a un qui travaille et donc qui est vraiment en train d'utiliser du temps processeur, c'est évident. SQL OS va attribuer une tâche qui vient d'une requête, comme je vous l'ai mis ici, à un worker. Et ça, ce sont vraiment des objets qu'on va retrouver dans SQL Server, avec des vues de gestion dynamique aussi. La requête, c'est une requête SQL, la tâche, c'est un objet du moteur d'exécution qui va permettre d'être lié à un worker, de façon à réellement exécuter la requête. Le worker lui-même va être en exécution sur le scheduler à l'aide d'un thread, et le thread, c'est la représentation physique du worker, on pourrait dire. C'est vraiment un sous-processus qui va s'exécuter dans Windows, et qui va être lié à un processeur de la machine. Et tout ça, on peut le voir physiquement, à l'aide de vues de gestion dynamique. Donc, « sys.dm_ », et on est dans SQL OS, donc « os_ », on a parlé d'ordonnanceur, donc, « scheduler ». Voici la liste de mes schedulers. Il se trouve qu'il y en a beaucoup plus que de cœurs sur ma machine, mais vous voyez que certains sont marqués « HIDDEN », donc cachés. On ne s'en occupe pas. On va s'occuper uniquement de ceux qui sont dans un statut qui s'appelle « VISIBLE ONLINE ». Ils sont donc en ligne, ils sont visibles. Ils correspondent à des processeurs physiques. On voit ici qu'ils ont un « id », « 0, 1, 2, 3 », un numéro. Ils sont liés à un « cpu_id », « 0, 1, 2, 3 », donc ils sont liés à un cœur physique de mon ordinateur. Il y a ici également l'information de « parent_node_id ». Ils ont tous le même parent qui est « 0 », et en fait, c'est lié à une architecture physique qui s'appelle « NUMA », « Non-Uniform Memory Access ». Si vous avez un serveur qui comporte beaucoup plus de processeurs et que vous avez acheté récemment, il est fort probable que son architecture physique soit en NUMA, à ce moment-là, vous verrez plusieurs « parent_node_id » différents, « 0, 0, 0, 0 », et peut-être « 1, 1, 1, 1», peut-être « 2, 2, 2, 2 », ce qui montrera que vous avez des groupes de processeurs sur différents nœuds NUMA. C'est peut-être un peu obscur, mais c'est pour vous expliquer, disons, cette information. Vous en avez un ici qui est sur le nœud 64. C'est un scheduler qui est caché et qui est dédié à ce qu'on appelle la « DAC », la « connexion d'administration dédiée », qui est une connexion de sécurité, si jamais votre serveur est inaccessible. Donc, peu importe, on reste sur nos quatre scheduler, et vous voyez que j'ai en ce moment, dix tâches par schedulers. Donc, ça correspond finalement à des tâches qui sont liées à des workers. Combien j'ai de workers sur chaque scheduler ? Entre 14 et 16. Et j'en ai huit ou neuf qui sont actifs. Vous voyez, on peut tout voir dans SQL Server, on a vraiment beaucoup d'informations sur ce qui se passe à l'intérieur. Et puis, vous vous en doutez, si je vois les schedulers, je peux de la même façon... ...voir, « dm_ os_worker » par exemple, une liste de mes workers... ...et même chose, on va me dire quelques statistiques sur ce qui se passe. Donc, il y a plein, plein d'infos. Quel est leur statut actuel ? Est-ce qu'ils sont en train de s'exécuter ou est-ce qu'ils sont suspendus ? Et on va reparler un peu de ça. Sur quoi ils attendent, on va reparler de ça aussi bien entendu, et puis des adresses : l'adresse du scheduler, donc sur quel scheduler il se trouve, sur quel ordonnanceur, et puis l'adresse du thread éventuellement, l'adresse de la tâche, pour lier tout ça ensemble. Vous voyez qu'on peut obtenir, grâce à ces vues de gestion dynamique, tous les détails de ce qui se passe dans SQL Server.

SQL Server 2016 : Diagnostic

Prenez en main les outils de diagnostic intégrés à SQL Server. Soyez en mesure de comprendre et d'analyser les problèmes de performance rencontrés le plus fréquemment.

1h58 (20 vidéos)
Aucun commentaire n´est disponible actuellement
 
Logiciel :
Spécial abonnés
Date de parution :14 déc. 2016

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !