当前位置:首页 -> 焦点新闻

有效提高WebSphere数据库性能

2005/1/7 11:52:56       
 

    有没有办法可以让JDBC应用连接到WebSphere应用服务器时应用更加高效?答案是有的。 看完本文后你会有不小的收获的。

    优化数据访问不是一件容易的事情——即使程序的性能很差,应用也不会抛出异常;即使程序包含了许多差劲的JDBC用法,编译器也不会发出警告;即使网络快要被庞大的通信量吞噬,也没有一种数据库工具能够方便地检测出拙劣的数据请求。然而,当你把JDBC应用连接到WebSphere应用服务器时,仍可以采取一些措施让应用更加高效。例如,下面两则技巧能够有效地提高更新数据库数据的性能。

  一、使用updateXXX方法

  虽然用程序代码更新数据库的办法不一定适用于所有的场合,但大家应该已经试过用程序执行更新和删除操作了。ResultSet对象的updateXXX方法让我们不必构造复杂的SQL命令就可以执行数据更新操作,我们只要提供待更新的列和数据,然后在把游标移出结果集的当前行之前,调用updateRow方法更新数据库。在下面的例子中,getInt方法提取出ResultSet对象Age列的值:
    int n = rs.getInt("Age");
  // n包含rs结果集中Age列的值
  . . .
  rs.updateInt("Age", 25);
  rs.updateRow();

  updateInt方法将Age列的值更新为25,updateRow方法更新数据库中包含被修改数据的行。

  用程序代码更新数据库不仅改善了应用的可维护性,而且往往还提高了性能。这是因为,数据库服务器已经在处理SELECT语句的过程中找到了待修改行的位置信息,不必再次执行代价昂贵的操作来寻找要修改的行。如果你确实需要该行的位置,数据库服务器通常能够提供可用行的内部指针,例如ROWID之类。

  二、使用getBestRowIndentifier

  利用getBestRowIndentifier(),我们可以确定在WHERE子句中最好用哪些列的集合。伪列通常是速度最快的数据访问标识,但要确定这类列只能通过getBestRowIndentifier()。

  有些应用程序不能利用定位式数据更新和删除方式的优势,这时,可以通过调用getPrimaryKeys()或getIndexInfo()来找出属于唯一性索引的列,再用所有可搜索的列构造WHERE子句。这个办法一般都有效,只是可能使最后得到的查询变得相当复杂。考虑下面这个例子:
    ResultSet WSrs = WSs.executeQuery
    ("SELECT user_name, ssn, address, city,
    state, zip
    FROM emp");
  // 提取数据
  ...
  WSs.executeQuery ("UPDATE EMP SET ADDRESS = ?
  WHERE user_name = ? and ssn = ?
  and address = ? and city = ? and state = ?
  and zip = ?");
  // 相当复杂的查询

  应用程序应当调用getBestRowIndentifier()来找出唯一地标识数据库记录的最优列集合(也许是一个伪列)。许多数据库管理系统支持一些特殊的列,这些列不是用户在定义表结构的时候显式定义的,而是每一个表都有的隐含列(例如,ROWID,TID)。这些列称为伪列,由于它们的值通常是直接指向记录精确位置的指针,因此通过伪列访问数据通常是最快的访问方式。另外,由于伪列不是用户定义表结构的时候显式定义的,所以调用getColumns方法返回的结果中不会包含伪列。要确定是否有伪列可用,应当调用getBestRowIndentifier()。

  如果数据源不包含特殊的伪列,getBestRowIndentifier()的结果集包含了指定表的最优唯一索引的列集合(如果存在唯一性索引的话)。也就是说,应用程序不必再调用getIndexInfo就可以得到最小的唯一性索引。

煤炭网版权与免责声明:

凡本网注明"来源:煤炭网www.coal.com.cn "的所有文字、图片和音视频稿件,版权均为"煤炭网www.coal.com.cn "独家所有,任何媒体、网站或个人在转载使用时必须注明"来源:煤炭网www.coal.com.cn ",违反者本网将依法追究责任。

本网转载并注明其他来源的稿件,是本着为读者传递更多信息的目的,并不意味着本网赞同其观点或证实其内容的真实性。其他媒体、网站或个人从本网转载使用时,必须保留本网注明的稿件来源,禁止擅自篡改稿件来源,并自负版权等法律责任。违反者本网也将依法追究责任。 如本网转载稿件涉及版权等问题,请作者在两周内尽快来电或来函联系。

  • 用手机也能做煤炭生意啦!
  • 中煤远大:煤炭贸易也有了“支付宝”
  • 中煤开启煤炭出口贸易人民币结算新时代
  • 下半年煤炭市场依然严峻
市场动态

网站技术运营:北京真石数字科技股份有限公司、喀什中煤远大供应链管理有限公司、喀什煤网数字科技有限公司

总部地址:北京市丰台区总部基地航丰路中航荣丰1层

京ICP备18023690号-1      京公网安备 11010602010109号


关注中煤远大微信
跟踪最新行业资讯