2009-06-22 7 views
2

Dans notre projet, nous utilisons le pool Oracle XA Connection. Seul un petit sous-ensemble des requêtes (transactions) est distribué. Les repos sont une simple modification simple de la base de données.Performances XAConnection dans Oracle (10g)

Je voudrais savoir s'il existe une différence de performance en utilisant XAConnections Vs les normales.

Nous utilisons websphere v6.1 comme serveur. Si XAConn n'est pas très performant, alors iam prévoit d'avoir deux sources de données et d'utiliser des connexions comme il convient.

Tous les pointeurs seraient d'une grande aide.

Répondre

2

Je n'ai aucun repère pour justifier ce qui suit, c'est juste "nous savons tous que" sagesse conventionnelle. Comme pour toutes les discussions sur les performances, Your Milage Will Vary, si cela est absolument essentiel à votre application, vous devez effectuer vos propres tests. Je pense qu'il n'y a pas de perte de performance significative en utilisant un pool de connexions compatible XA pour un travail non-XA - WebSphere prend soin d'utiliser les transactions 1PC lorsqu'une seule ressource est utilisée dans une transaction. Le surcoût primaire de XA est l'ensemble supplémentaire de messages XA Prepare/Commit/Forget, ceux-ci ne se produiront pas dans un simple cas 1PC.

Ainsi, le principal danger est d'initier par inadvertance une transaction 2PC. Cela peut arriver si vous faites plusieurs travaux supposés contre le même resorber mais avec (par exemple) différents niveaux d'isolation. Vous obtenez une connexion du pool et effectuez un travail, cette connexion est maintenant associée à votre transaction jusqu'à COMMIT. Vous "fermez" la connexion, en la conservant théoriquement dans le pool, mais en fait, la mise en pool de WebSphere conserve la connexion pour votre transaction. Vous demandez à nouveau la connexion pour faire plus de travail, à condition que vous demandiez exactement la même connexion, vous recevrez à nouveau la même connexion et que le travail continue en une seule transaction - nous avons seulement 1PC, sans surcharge. Je voudrais prendre l'approche d'avoir initialement un seul pool XA, mais avoir deux références de resoruce séparées, une pour le travail 2PC, une pour le travail 1PC. Les deux références pointent vers le même pool de connexions. Votre code est maintenant isolé de tout besoin d'avoir des pools de connexion séparés, c'est juste une question de relier la ressource-ref si vous avez besoin de faire le changement.

Questions connexes