dbaffaleuf >> 01h44 ... insomnie passagère ou bien ?
En fait, je pense que l'explication vient surtout du fait que d'insérer des données directement dans une table pourrait être extrêmement coûteux.
Un thread de gestion de trace est exécuté toutes les 4 secondes lorsqu'une trace est active. Cette trace est responsable de l'écriture des données des buffers utilisés par les providers. Cela permet d'écrire de gros blocs de données sur disque d'un seul coup au lieu d'écrire sur disque à chaque fois qu'un événement est collecté. Cela réduit donc énormément l'impact d'une trace surtout sur un serveur extrêment chargé.
Si l'on permet d'écrire dans une table directement (un provider dédié donc), on aurait un souci majeur : pour une table l'écriture avec de gros blocs de données n'est pas supporté. Celle-ci s'effectue ligne à ligne. Imaginez donc si le nombre d'événements à écrire devient très important on aurait quelques problèmes majeurs :
Le buffer utilisé par le provider pourrait rapidement être saturé du fait de l'insertion ligne à ligne dans la table. Certaines événéments ne seraient donc plus tracés et même si l'on empêchait cette perte d'événements, cela pourrait engendrer un certain nombres de verrous sur la table.
Je pense que c'est la raison pour laquelle un tel provider n'existe pas pour une trace serveur.
++
Partager