[转载]EJB: 降低事务隔离级别

EJB: 降低事务隔离级别


尽可能降低 EJB 事务隔离级别,以降低数据库并发的开销。在许多情况下,通过改变缺省值可以实现更佳性能。

读者: 开发人员、管理人员

产品: WebSphere Application Server

版本:3.0.2.x、3.5.x 和 4.0

平台: 所有平台

关键字: EJB

摘要

尽可能降低 EJB 事务隔离级别,以降低数据库并发的开销。在许多情况下,通过改变缺省值可以实现更佳性能。

建议

缺省情况下,大多数开发人员部署 EJB 时,将事务隔离级别设置成TRANSACTION_SERIAliZABLE或TRANSACTION_REpEATABLE_READ。 TRANSACTION_REpEATABLE_READ是 IBM VisualAge for Java 企业版和其它 EJB 部署工具中的缺省值。TRANSACTION_SERIAliZABLE是限制最严、保护最强的事务隔离级别,它会导致最大的开销。

有些工作负载不需要TRANSACTION_SERIAliZABLE或 TRANSACTION_REpEATABLE_READ提供的隔离级别和保护。某个给定的应用程序可能从不更新底层数据,或者从来不与其它并发更新程序 一起运行。在这种情况下,应用程序将不必执行非法的、不可重复的或虚幻的读操作。TRANSACTION_READ_UNCOMMITTED可能就够了。

因为 EJB 的事务隔离级别是在部署描述符中设置的,所以具有不同事务隔离级别的不同应用程序可以重用同一个 EJB。请重新考虑您的事务隔离级别需求,然后对它们做适当的调整以提高性能。图 1 显示了降低事务隔离级别带来的性能影响。


图 1. 性能影响 — 降低事务隔离级别

应被取代的方法

您可以使用在 EJB 的部署描述符中提到的上述缺省值,但是通过修改这些值以满足应用程序的特定需要,可以获得更佳性能。

结束语

对于 EJB 应用程序,请根据实际的并发需求设置事务隔离级别。如果不需要,请不要使用较高的事务隔离级别。较高的限制隔离级别增加了开销。

请使用浏览器的分享功能分享到微信等