ADO数据库访问的最优方法
几乎所有关于ADO数据库访问性能分析的文章,都认为二进制组件的性能总是超过解释执行的ASP代码。事实上,这是错误的。从本文的测试结果可以看出,有些时候ASP代码的性能远远超过了组件。一、引言
“地球是平坦的...”;
“太阳绕着地球转...”;
“总是通过组件访问数据库...”,
上面三个命题有两个共同的特点:首先,它们都曾经被认为是正确的;其次,这三个命题实际上都是错误的。
我们都已经读到过无数的文章建议在Internet应用中用组件封装业务逻辑和进行数据库访问,但有关这种技术的实际性能数据却很少看到。随着Windows 2000的发行,IIS平台特别是ASP的性能表现也有了显著的提高。由于先行绑定(Early-binding)内部对象、模板缓冲等诸多改进,在通过ADO访问数据库、格式化并输出记录集等各个方面,ASP都有一流的性能表现。
从本文测试结果可以看出,ASP在ADO数据库访问、记录集格式化方面胜过组件,而且在某些情形下两者的差异达到了难以置信的程度。对于大多数Internet应用来说,性能总是首要因素,所以在根据传闻或书本知识确定最优方案之前,使用测试工具对方案进行完整的测试是很重要的。
在进行测试之前,本文的所有三组代码(ASP,VB和C++)都经过了优化。为了确保参与测试的代码其编码方法和测试结果都是各自领域中最优的,它们都经过了多次测试。某些优化工作尚未进行,这是为了让代码更真实地反映出实际应用环境中可能出现的典型情况。
二、测试环境
本次测试只在Windows 2000平台上进行,在Windows NT平台上测试结果可能会有很大的不同,所以测试所得到的结果不适用于Windows NT平台。下面是本次测试所用系统的示意图及其说明:
由于测试客户机和Web服务器、数据库服务器所处的物理位置不同,客户机通过三个Cisco 2924交换机连接到Web服务器。所有这些机器都在同一大楼内,但服务器位于数据中心,而测试客户机位于另一个房间,客户机通过一个400Mb Fast EtherChannel连接到数据中心的交换机。
在这个配置下,测试案例的网络延迟所引起的开销是非常小的。在日常运行中交换机之间的流量总是小于其能力的5%。
三、测试代码
由于这是一个从ASP、VB组件、C++组件通过ADO进行数据库访问的测试,因此测试代码的功能限于从结果记录集创建一个表格。所有测试程序都可以从本文后面下载。这些程序的执行流程都类似,具体如下:
补充:asp教程,技巧与性能优化