做我曾在一个JBoss AS运行7容器女巫通过JPA,一个它的配置委托给JTA一个PostgreSQL 9.1数据库保存我们的数据的Web软件。测量许多交易是如何在JTA应用
去年它适应于在AWS EC2云上运行。随着用户需求的增长,我们的数据库使用量也在增长。正如预期的那样,我们的数据库服务器在高峰时间变得繁忙,这影响了我们用户的使用体验。
经过对PostgreSQL的复制研究之后,我们意识到PGPool2对于我们的情况可能是一个不错的复制解决方案:它为SELECT查询提供负载均衡,并为CUD操作提供复制(UPDATE,INSERT和DELETE)。
到目前为止好,但事实证明软件缓慢。如果事实如在PGPool2文档中所阐明的那样,那么SELECT查询如果在明确的BEGIN/END事务中定义,则不会进行负载均衡。
For a query to be load balanced, all the following requirements must be met: - PostgreSQL version 7.4 or later - the query must not be in an explicitly declared transaction (i.e. not in a BEGIN ~ END block) - it's not SELECT nextval or SELECT setval - it's not SELECT INTO - it's not SELECT FOR UPDATE nor FOR SHARE - it starts with "SELECT" or one of COPY TO STDOUT, EXPLAIN, EXPLAIN ANALYZE SELECT... - ignore_leading_white_space = true will ignore leading white space.
两个问题:
- 我怎么能弄清楚,在明确的交易运行我们的SELECT查询?
- _javax.ejb.TransactionAttributeType.NOT_SUPPORTED_是否修复事务范围,使我的SELECT方法以“无事务”方式运行?
感谢您的有用的答案。事实上,我已经找到了自己的一些答案,但是解释的一致性让我在选择时感到安全。非常感谢。 – Miere
不客气。 –