在ASP中优化数据库处理
ASP是一个WEB服务器端的开发环境,它提供了一种简单易学的脚本(VBScript或Jscript),并带有许多内置的对象,从而提供了一条简捷的编程之路。更为重要的是,ASP中提供了ADO对象,让程序员可以轻松 *** 作各种数据库,从而可以产生和运行动态的、交互的WEB服务应用程序。目前,国内很多电子商务站点都采用了ASP技术来与数据库交互,为用户提供各类服务。
由于电子商务站点的大部分信息都存放在数据库中,要提高WEB的响应速度,建立高性能的电子商务站点,很大一部分取决于ASP与数据库之间的处理性能。因此,在ASP编写时,要注意数据库处理方法。
1、 使用Connection pool机制
在数据库处理中,资源花销最大的是建立数据库连接,而且用户还会有一个较长的连接等待时间。若每一个用户访问时,都重新建立连接,不仅用户要长时间等待,而且系统有可能会由于资源消耗过大而停止响应。如果能够重用以前建立的数据库连接,而不是每次访问时都重新建立连接,则可以很好地解决这些问题,从而提高整个系统的性能。在IIS+ASP处理体系中,采用了Connection pool机制来保证这一点。
Connection pool的原理是,IIS+ASP体系中维持了一个连接缓冲池,建立好的数据库连接在ASP程序中的断开都是逻辑断开,而实际的物理连接被存储在池中并被维护。这样,当下一个用户访问时,直接从连接缓冲池中取得一个数据库连接,而不需重新连接数据库,因此,可以大大地提高系统的响应速度。
为了正确使用Connection pool时,必须注意以下几点:
a) 在MDAC20以前的版本中,必须经过数据库驱动程序的配置才能使用Connection Pool;在以后的版本中(比如MDAC21),缺省是使用Connection Pool机制。具体配置情况可以参见微软公司的站点()。
顺便提一句,在使用ORACLE数据库时,最好使用微软提供的驱动程序。
b) 每次数据库连接串参数必须相同,否则会被认为是不同的连接而重新去连接数据库,而不是使用缓冲池中的连接。最好的做法是将连接串存储在Application变量中,所有的程序在建立连接时使用Application变量的值。
c) 为了更好地使用和维护连接缓冲池,建议在程序中使用以下的方法对数据库连接进行 *** 作,因为隐式使用数据库连接时不能利用缓冲池的机制:
¨ 显示地创建连接对象: Set conn=ServerCreateObject(“Adodbconnection”)
¨ 建立数据库连接:connopen Application(“connection_string”),…
¨ 进行数据库 *** 作:…
¨ 显式地关闭连接对象:connclose
2、 利用直接的Ole DB驱动程序
在Asp中,通过ADO可以使用两种方式连接数据库,一种是传统的ODBC方式,一种是Ole DB方式。由于ADO是建立在Ole DB技术上的,为了支持ODBC,必须建立相应的Ole DB 到ODBC的调用转换(如MS Oledb provider for ODBC)。而使用直接的Ole DB方式(如MS Oledb provider for Sql, Oracle),则不需转换,从而提高处理速度,同时,还能利用Ole DB的新特性。
3、 在内存中缓存ADO对象或其内容
通常,在ASP程序中,都会涉及到一些存储在数据库中的常用信息,如省份列表,商品分类等,这些信息对于每一个访问用户都是相同的。若每一个用户访问时,都要去数据库里取出来,然后显示给用户,不仅会使数据库服务器负载加重,无法快速服务于更重要的事务处理,而且WEB服务器也必须不停地创建ADO对象,消耗大量资源,导致了当用户很多时几乎失去响应。若能把一些常用信息事先存储在内存中,当用户访问时,直接从内存中取出,显示给用户,则可以大大减小系统的压力,提高响应速度。
比如,我们可以把已经取得了数据的RecordSet对象存储在Application变量中,当用户访问时,从Application变量中取得RecordSet对象,而不需再次建立数据库连接;也可以将RecordSet对象里的数据以其他方式存储,比如存储在数组中,然后再将数组存储在Application变量中,使用时用数组的方式读取。
需要注意的是,一个对象要存储在Application变量中,线程模式必须是Both;对于不满足该条件的对象,必须以其他方式,比如转换成数组的方式存储在Application变量中,这也是上面所说的将内容存储在数组中的原因。
4、 使用数字序列
在Asp程序中,从诸如RecordSet中读取数据时,为了方便,常使用数据库列名的方式进行:
Responsewrite rs(“fieldnameN”)
而很少采用该数据库列名所在的数字序列来读取,即:
Responsewrite rs(N)
其实,为了从RecordSet得到列值,ADO必须将列名转化为数字序列,因此,若直接使用数字序列,则可以提高读取速度。若感觉使用数字序列,程序可读性不直观,可以采用建立常量的方法,定义:
const FIELDNAME1 1
5、 使用数据库过程(procedure)
在电子商务站点中,尤其是要进行交易的站点,为了完成交易,可能需要多次查询大量的信息,用于判定是非,然后更新入库。若在编写Asp时,直接在一个程序中作多次数据库 *** 作,不仅IIS要创建很多ADO对象,消耗资源,而且加重了数据库服务器的负担,增大了网络流量。若把多次数据库 *** 作流程定义为一个数据库过程,用如下方式调用:
connectionexecute “”
则可以利用数据库的强大性能,大大减轻Web系统的压力,而且由于页面内容与业务分开,管理维护也变得方便。
6、 使用优化过的sql语句
对于电子商务网站,最主要的就是要保证,不论访问用户的多少,系统都要有足够快的响应速度。由于在Asp技术中,ADO对象消耗的资源是非常大的,若一个sql语句要执行很长的一段时间,对整个资源也将一直占用,使系统没有足够的资源服务于其它用户。因此,尽量使用优化过的sql语句,减少执行时间。比如,不使用在in语句中包含子查询的语句,充分利用索引。
7、 利用数据库的特性
ADO是一套通用的对象控件,本身没有利用数据库的任何特性。但若在Asp程序编写时,有意识地考虑结合数据库的特性,往往可以有很好的效果。
比如,Oracle数据库服务器对于执行过的sql语句,通常都经过了分析优化,并存储在一个sql内存缓冲区中,当下次同样的sql语句请求时,直接从内存缓冲区取出执行,不再进行分析优化,从而可以大幅度提高性能。这就要求在Asp程序编写时,尽量使用相同的Sql语句,或者参数化的Sql语句:
Set cmd=Servercreateobject(“adodbcommand”)
cmdCommandText=”select from product where productcode=”
8、 用时创建,用完释放
在前面也提到过,ADO对象是非常消耗资源的,因此一定要牢牢记住,只在用到ADO对象时才创建,用完后马上释放:
set rs=Servercreateobject(“adodbrecordset”)
…
rsclose
set rs=nothing
愿您愉快地编程,让人们享受社会信息化所带来的好处。
石河子大学图书馆现有各类数据库上百个,文献类型包括电子图书、电子期刊、文摘索引、学位论文、会议论文、专利、成果、多媒体等多种数据库,基本涵盖我校全部学科。
为方便我校师生在校内外使用图书馆的文献资源,现将我校图书馆常用电子资源及使用方式说明如下:
01
如何使用图书馆预约借书服务?
4月13日(周一)起,图书馆为返校学生提供无接触预约借书服务。借书服务通过邮件预约、邮件回复、定点配送的方式,满足学生借书需求。图书出借范围为大学图书馆(中区、北区、东区分馆)。
1邮件预约。即日起,读者可在图书馆书目查询系统中查询所需图书,查询网址:,图书可借的状态下,填写“读者借书预约表”(点击“阅读原文”下载),以附件的形式发送到以下邮箱:
中区tsg_zxg@shzueducn
南区tsg_nxg@shzueducn
北区tsg_bxg@shzueducn
东区tsg_dxg@shzueducn
邮件标题:姓名+学号+借书预约表
(说明:居住在不同区域的同学对应不同的邮箱,例如:住在北区的同学将预约书单发至北区 tsg_bxg@shzueducn )
联系电话:2057050-125(中区一层总服务台)
2请求响应。馆员根据“读者借书预约表”查找图书,图书准备好后,馆员及时配送。
3定点配送。馆员按照读者提供的住宿楼栋,在接到预约书单后的第二天下午配送至读者提供的住宿楼栋的值班室,由值班人员楼层负责人或志愿者将图书送至读者宿舍门口。(周末正常配送)
4纸质图书只借不还,假期前借阅图书还书时间延长到5月15日。
特别说明:
1每位读者只能预约一次,每次借阅图书3册。
2每位读者请详细提供一卡通账号,由工作人员手工借阅。
3每位读者请详细提供住宿区域、楼号、层号、房号。
例如:南区 10号楼 一层 106号
02
学校图书馆的电子资源如何使用?
校园网内访问:可通过图书馆网站直接访问(进入石河子大学图书馆官方网站——选择常用数据——点击右下角MORE——进入数据库列表)
因疫情因素,部分数据库开通了校外使用方式,详见各数据库介绍。
03
学校都可以提供哪些电子图书数据库?
高校学科教参资源库
校外访问网址:
shzdx
(账号密码已提供给各个学院)
数据库资源介绍:方正Apabi教参全文数据库,是方正与CALIS管理中心全面合作,针对高校数字内容需求,整理、搜集和解决数字版权的专业的经典教材、高校指定教参的专业数据库,教参数据库覆盖“文、理、工、医、农、林、管”等重点学科,着重发展“计算机”、“经济管理”、“外语”、“通信”、“生物”等热门、新兴、前沿学科。该库包含51所高校,670个重点学科的在用教参书约10万种。我校师生校外通过账号与密码登录(账号密码已提供给各个学院),登陆后可以在线阅读与下载。
超星电子书
校外访问网址:
校外访问账号:shzdx123
密码:0f8xH493_(密码最后一位是下划线)
数据库资源介绍:此库包括的电子图书涉及文化教育 、文学艺术 、历史地理、生物科学、医药卫生、工业技术等22个学科领域,数百万册电子图书。我校师生校外访问通过账号与密码登录,登录后可以在线阅读与下载。
博看书苑数字阅读系统(武汉博看网数据库)
手机APP:扫码下载APP,就可下载博看书苑。
数据库资源介绍:博看书苑数字阅读系统主要收录涉及党政、时事、军事、管理、财经、文摘、文学、艺术、情感、家庭、健康、时尚、娱乐、科技、教育、教学等40多类4000多种主流畅销人文期刊。以及30000多册近五年出版的图书,200种网络主流报纸。包括听书、期刊、图书、报纸、专题、党政等模块,符合读者阅读习惯、以在线翻页的原貌版为基础,同时提供文本版等多种阅读形式。支持PC端,APP端、微信端和触摸大屏阅读系统。
寻知学术文献数据库系统
04
学校都可以提供哪些中文数据库?
中国知网(CNKI)
校外使用方式:通过研学平台访问知网资源
访问地址:/qikancqvipcom
校外使用说明:进入维普中文期刊服务平台(地址:qikancqvipcom,手机浏览器端地址 mqikancqvipcom)注册个人账号,登录平台就可以免费查阅、下载相关文献。
数据库资源介绍:《维普中文期刊服务平台》是维普资讯最新推出的期刊资源型产品。它在《中文科技期刊数据库》的基础上,以数据质量和资源保障为产品核心,对数据进行整理、信息挖掘、情报分析和数据对象化,充分发挥数据价值,完成了从“期刊文献库”到“期刊大数据平台”的升级。平台累积收录期刊14000余种,其中现刊9456种,核心期刊1983种,文献总量6400余万篇,回溯年限1989年,部分期刊回溯至创刊年,学科分类包括医药卫生、农业科学、机械工程、自动化与计算机技术、化学工程、经济管理、政治法律、哲学宗教、文学艺术等35个学科大类,457个学科小类。
万方数据库
校外访问地址:>自考/成考有疑问、不知道自考/成考考点内容、不清楚当地自考/成考政策,点击底部咨询官网老师,免费领取复习资料:>
dblink内的计算是消耗的服务器2的资源,然后在服务器1上显示dblink内的查询结果。
其实dblink只是数据库访问数据库的方式,它和你用客户端访问数据库一样。数据库2的服务器会划分部分内存给他使用,就相当于你用一台机器远程的访问数据 库,是一样的。
可以做一个假设,假设dblink消耗的是数据库1的资源,那么数据来源于数据库2,那么网络是不是要传输所有用到的数据,这样的话,如果数据量稍微大一点,就很容易造成网络拥堵,而且如果查询条件很多会有大量网络浪费,而且会占用很大的服务器1的内存,这样的话,我想不会有人想用dblink的。
以上就是关于delphi如何打开资源文件里的数据库全部的内容,包括:delphi如何打开资源文件里的数据库、毛亮丽什么候出生、在数据库访问量过大时,怎样提高访问速度等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)