在用Jboss3.2.2开发系统时遇到了一些问题:1. 开发环境:MS SQLSERVER 2K , Jboss3.2.2 ,CMP2.0,JSQLConnection
2. 问题描述:在数据库中没有任何记录的时候,CMP进行Create、Set、Get等等操作时都很正常,用SQL SERVER的“事件探查器”跟踪发现数据库CPU的占用率不到2;然而当数据库中的记录操过十万级以后在Create、Set、Get时数据库CPU的占用膨胀到2000左右,同时发现在Create的时候JBOSS会在每条INSERT的前面加上一条相对应的SELECT COUNT(*)在执行SELECT的时候数据库的CPU占用就非常的高,执行INSERT的时候基本不会占用CPU资源;在对JBOSS配置文件进行修改以后(no-select-before-insert)Create方法有所改进,但是在数据库执行Select的时候仍然狂占CPU。
3. 解决方法:通过看了JBOSS的源码以后发现,JBOSS在执行CMP的SQL的时候用的都是PrepareStatement;我就尝试着把CMP的代码用JDBC直接访问数据库重写,在执行SQL语句的时候都用Statement来实现。在对数据库进行跟踪以后发现CPU占用急剧下降。
不知道别人有没有遇到同样的现象?