· [Java论坛][安全论坛][数据库论坛][操作系统论坛]
· [推荐] 江民安全专家永久免费 立即下载  RSA 2010
· [专题] 谷歌遭黑客攻击事件 2010网页挂马爆发之年
· [IT技术周刊][IT资源下载专区][病毒求助专区]
· [热点] 《拆弹部队》藏木马 看Xbox360与PS3背后秘密
· [热点] 报告:PDF漏洞远超微软 十款免费电子邮件程序

提高DB2 Web应用程序性能的五条规则 (1)

发布时间:2009.05.14 05:06     来源:赛迪网    作者:fen

优秀的代码行行相似,糟糕的代码各个不同。

规则其实并不重要,重要的是养成良好习惯。

                         ——译者题记

简介

速度和可升级性是网络开发重要的性能要求,而且它们也不难达到。应用一些简单的规则会提高网络应用的性能。在本文中,您将了解到使用Borland® C#Builder和IBM® DB2®通用数据库(UDB)8.1开发快速Microsoft® ASP.NET Web应用程序的5条规则。

分析Web应用程序的性能需要利用一些手段来检测每个操作的性能。为此,我创建了一个TimeDiff类(见程序清单1),它可以计算数据库操作的用时。你可以利用TimeDiff类的检测结果作为衡量数据库操作性能的基准,来观察哪些操作最为有效。我还创建了一个配合TimeDiff 类使用的LOTSOFRECORDS表(见程序清单2),它包含10,000条记录,你可以通过对它的操作来观察不同技术之间的性能差异。DB2具有内部缓冲池,一旦运行一个查询,内部缓冲池启用,因此二次查询的速度较快。在检测查询速度时,请忽略缓冲池启用前的结果而采用启用后的结果。

程序清单1. TimeDiff类

using System;
namespace Effeciency
{
/// 
/// 这个类用于时间计算。在例子中,
/// 我们将利用它检测数据库操作的速度,
/// 以便作性能上的比较。 
/// 
public class TimeDiff
{
DateTime StartTime;
DateTime EndTime;

public TimeDiff() {}

public void Start()
{
StartTime = DateTime.Now;
}

public void Stop()
{
EndTime = DateTime.Now;
}

public string TimeDifferenceText
{
get
{
TimeSpan TimeDifference = EndTime - StartTime;
return TimeDifference.ToString();
}
}
}
}

程序清单2. LOTSOFRECORDS的表定义

CREATE TABLE "GLENN "."LOTSOFRECORDS" (
"KEYCOL" INTEGER NOT NULL , 
"COL1" CHAR(50) , 
"COL2" CHAR(50) , 
"COL3" CHAR(50) , 
"COL4" CHAR(50) , 
"COL5" CHAR(50) , 
"COL6" CHAR(50) , 
"COL7" CHAR(50) , 
"COL8" CHAR(50) , 
"COL9" CHAR(50) , 
"COL10" CHAR(50) ) 
IN "USERSPACE1" ; 
COMMENT ON TABLE "GLENN "."LOTSOFRECORDS" IS 'Table designed to Contain Lots of Records';

-- DDL Statements for primary key on Table "GLENN "."LOTSOFRECORDS"

ALTER TABLE "GLENN "."LOTSOFRECORDS" 
ADD CONSTRAINT "CC1058255334652" PRIMARY KEY
("KEYCOL");

下面,我们就开始介绍这些提高DB2 UDB Web 应用程序性能的规则。我会先介绍提高数据库性能的基本规则,然后列出一些适合以Borland Data Provider开发ASP.NET应用时的性能规则。

规则1:按需检索

如果你只能记得住一条规则,那一定要记住这一条:按需检索。如果你是“幸存者”电视节目的忠实观众,您会记得其中的参赛者通过限额分配来保证每个人都有充足的食物。这种做法对于数据库开发同样适用。如果你的应用程序能够按需运行,那么就会合理地将数据库和网络资源留给其他应用。这听起来很简单,但我们还是来看一个例子

假设有一个包含10,000 行记录和10 个字段的表,以及一个需要显示所有记录但只显示3个字段的Web页。很多开发者经常图省事而使用"select *"语句选择所有的字段:

select * from GLENN.LOTSOFRECORDS

这种做法应当避免,而应力求只检索需要的字段。可以在SQL 语句中定义要检索的字段,例如:
<CENTER><ccid_nobr>
<table width="400" border="1" cellspacing="0" cellpadding="2"
bordercolorlight = "black" bordercolordark = "#FFFFFF" align="center">
<tr>
    <td bgcolor="e6e6e6" class="code" style="font-size:9pt">
    <pre><ccid_code> 
select 
KEYCOL, COL1, COL2, COL7 
from 
GLENN.LOTSOFRECORDS

在本文附带的源程序中,有两个ASP.NET页面:一个是RetrievingAllFields.aspx,它执行第一个查询;另一个是RetrievingLimitedFields.aspx ,它执行第二个查询,即只检索需要的字段。

用TimeDiff类进行检测,执行第一个查询用了1.622 秒,执行第二个查询用了1.311秒。后者用时只是前者的80%,不仅用时少,而且还减少了Web应用程序和数据库服务器之间的网络数据堵塞。

这个例子只限制了检索的字段,你还可以使用WHERE语句限制检索的记录数。WHERE 语句可以限制服务器返回的记录数(见程序清单3)。要记住,通过网络发送的记录数据越少,对应用程序、数据库、用户和网络越有好处。

1 2 3 下一页>>


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· 如何操作Excel读取数据导入DB2数据库 (05-13) · 浅谈DB2数据库的故障处理及最佳实践 (05-13)
· 使用"DB2"数据库临时表的6个注意事项 (05-11) · 经验:解决DB2中出现的SQL1032N错误现象 (04-29)
· 解决DB2数据库备份参数修改后的报错问题 (04-28) · IBM即将发布DB2 9.7版本数据库 添加新功能 (04-28)
· 数据库动态:IBM DB2锁定甲骨文数据库程序员 (04-28) · 数据库基础:利用DB2 pureXML管理XML数据实践 (04-21)
· 在DB2数据库中应当如何更新执行计划 (04-20) · 讲解主机DB2 9存储过程的规划和实施技巧 (04-08)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
资讯 通信 IT产品 IT技术 信息化
专题:政策力挺 新能源汽车及电池将“井喷”
·3.15赛迪网特别策划:消..
·专题:惠普栽在3.15前..
·深度观察:中国新能源汽..
专题:三网融合 看起来很美!
·专题:动力100——助企..
·专题:三大运营商"扎堆"..
·专题:谷歌推智能手机Ne..
专题:回顾2009 原装耗材与兼容耗材发展
·专题:HP Photosmart Pl..
·专题:超薄超强 戴尔推..
·2009赛迪网年终评选 惠..
专题:RSA 2010信息安全大会
·专题:谷歌遭黑客攻击事..
·无处不挂马 2010年网页..
·龙存科技:由BizSpark成..