3

(Lors du test d'une mise en œuvre des transactions distribuées à l'aide Atomikos, j'ai remarqué une surcharge importante (une transaction qui a 30 millisecondes sans utiliser XA a pris 160 avec XA)frais généraux de performance des transactions distribuées

Il semble que la plupart du temps est passé dans "Prepare" et dans "Commit"

Pour les tests, j'ai utilisé le scénario (irréaliste) d'une transaction impliquant une seule source de données (Microsoft SQL Server), sans mise à jour réelle. dans ce cas

Donc mes questions sont:

  • Est-ce un surdébit "normal"?
  • Sinon, où devrais-je regarder ensuite? (Ma meilleure estimation serait d'utiliser SQL Server Profiler pour voir si le temps est passé à l'intérieur de la base de données)

Répondre

1

Pour autant que je sache, cette longue attente ne se produit que la première fois que vous utilisez la transaction.

Cela se produit car une connexion est établie avec les serveurs afin de démarrer la transaction. Après la première fois, chaque fois que vous appelez OpenTransaction ne devrait pas prendre autant de temps.

Vous pouvez le tester vous-même. Sans fermer l'application, appelez une transaction deux fois. Si vous utilisez des transactions distribuées, vous validez vos données deux fois ou plus en fonction du nombre de serveurs que vous utilisez (une fois dans chaque serveur). Mais cela ne devrait pas être aussi long que vous l'avez décrit.

+0

Merci Rafael. Les retards que je vois ne sont pas limités à la première transaction (et l'objet "UserTransaction" est réutilisé). Je suis curieux - avez-vous eu une bonne expérience avec les transactions distribuées? On m'a conseillé de les éviter et de mettre en place un mécanisme spécifique à l'application à la place. –

+0

J'ai de bonnes expériences avec les transactions distribuées. J'ai un logiciel qui l'utilise depuis 6 mois. Peut-être que cette surcharge que vous voyez est quelque chose sur le réseau ou les serveurs (peut-être qu'ils sont fortement utilisés). Mais il sera difficile de vous dire quel est le problème sans voir votre base de données et votre logiciel. –

+0

Vous devez également vérifier si vous disposez des derniers correctifs de serveur SQL et de la charge de vos serveurs. Ce serait bien si vous pouviez poster la requête que vous exécutez. –

Questions connexes