PHP头条
热点:

三.数据库查询

a.测试标准

循环N次做数据库打开,查询,关闭操作。主要对JSP直接连数据库,JSP连接池连数据训,PHP直接连数据库,PHP持久连数据库做比较。

b.测试代码

  1. JSP  
  2.  
  3. String dbUrl, dbUser, dbPwd, strSQL;  
  4. dbUrl = "jdbc:mysql://localhost:3306/zhoutang";  
  5. dbUser = "root";  
  6. dbPwd = "";  
  7. strSQL = "update tblUser set UserLC=UserLC+1 where UserID=100";   
  8. Class.forName("com.mysql.jdbc.Driver");  
  9. Connection con;  
  10. Statement stmt;  
  11.  
  12. int i = 0;  
  13. while (i < XXX) {  
  14.       con = DriverManager.getConnection(dbUrl,dbUser,dbPwd);  
  15.       stmt = con.createStatement();  
  16.       stmt.executeUpdate(strSQL);  
  17.       stmt.close();  
  18.       con.close();  
  19.       stmt = null;  
  20.       con = null;  
  21.       i++;  

  1. JSP连接池   
  2.  
  3. Context ctx = new InitialContext();  
  4. DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/mysql");   
  5. String strSQL = "update tblUser set UserLC=UserLC+1 where UserID=100";  
  6.  
  7. Connection con;  
  8. Statement stmt;  
  9.  
  10. int i = 0;  
  11. while (i < XXXX) {  
  12.       con = ds.getConnection();  
  13.       stmt = con.createStatement();  
  14.       stmt.executeUpdate(strSQL);  
  15.       stmt.close();  
  16.       con.close();  
  17.       stmt = null;  
  18.       con = null;  
  19.       i++;  
  1. PHP   
  2.  
  3. $dbHost = "localhost";  
  4. $dbUser = "root";  
  5. $dbPwd = "";  
  6. $dbName = "zhoutang";  
  7. $strSQL = "update tblUser set UserLC=UserLC+1 where UserID=100";   
  8. $i = 0;  
  9. while ($i < XXXX) {  
  10.       $link = mysql_connect($dbHost, $dbUser, $dbPwd) or die('Could not connect: ' . mysql_error());  
  11.       mysql_select_db($dbName);  
  12.       mysql_query($strSQL);  
  13.       mysql_close($link);  
  14.       $i++;  
  1. PHP持久连接   
  2.  
  3. $dbHost = "localhost";  
  4. $dbUser = "root";  
  5. $dbPwd = "";  
  6. $dbName = "zhoutang";  
  7. $strSQL = "update tblUser set UserLC=UserLC+1 where UserID=100";   
  8. $i=0;  
  9. while ($i< XXXX) {  
  10.       $link = mysql_pconnect($dbHost, $dbUser, $dbPwd) or die('Could not connect: ' . mysql_error());  
  11.       mysql_select_db($dbName);  
  12.       mysql_query($strSQL);  
  13.       mysql_close($link);  
  14.       $i++;  

测试结果(单位:毫秒)

测试结果

c.结论

普通连接,Java连Mysql的速度是要比PHP慢的一倍左右。Java使用连接池技术,性能提升非常明显。

PHP使用的持久连接(pconnect)性能即然相当于Java的连接池,结果实在让人不可思议,本来挺担心PHP连数据库的,因为没连接池可用,特意在网上找了一些资料,没发现PHP可用的连接池,相关提法都很少,很多PHP程序员甚至没听过这概念,这样的结果,确实让我也大吃一惊。不过,话说回来,pconnect的原理,和连接池差不多的,都是程序关闭连接,但PHP并不真正关闭,再次打开时,直接使用可用的连接。但是,PHP的实现确实比Java方便多了,只需加个字母,就轻易实现,Java则麻烦一些,我配置Tomcat的连接池都费了些时间,按官方文档,在tomcat5.0.28下没配置成功,在CSDN上面,也看到很多新手发出求救,很多配置不成功的,最后自己摸索出来了,配置方法可参考我的Blog。

如果将连接数据库和关闭数据库的操作,移到循环外面,刚PHP和JSP的执行时间都差不多,循环50次约16ms。可见,数据库操作中,打开连接是相当耗资源的,其它操作,与语言差别不大。JSP在连接数据库的时候,开销比PHP大很多。(这里特意将打开数据库操作放在循环体做比较)


www.phpzy.comtrue/php/10351.htmlTechArticle三.数据库查询 a.测试标准 循环N次做数据库打开,查询,关闭操作。主要对JSP直接连数据库,JSP连接池连数据训,PHP直接连数据库,PHP持久连数据库做比较...

相关文章

相关频道:

PHP之友评论

今天推荐