2023年7月4日发(作者:)
2010年6月 思茅师范高等专科学校学报 Jun.2010 ;26卷第3 Journal of Simao Teache ̄’Coil, Vo1.26 No.3 Access数据库访问速度的提高 龚文生 (思茅师范高等专科学校计算机科学系,云南普洱665000) [摘 要] ASP开发的Web应用程序中调用Access数据库,在多用户并发访问时有一 定的极限,很多时候不能达到实用的要求。通过《学生成绩查询管理系统》开发过程中Access 数据库的表由大变小、逐级分类(分班建表)、多表关联查询的方法,有效的提高Access数据库 WEB访问速度,使Access数据库WEB多用户并发访问达到完全实用的效果。从实用的角度 出发,对开发过程中的经验及ASP代码实例进行分析,对从事ASP中使用Access数据库开发 者,有一定的参考价值。 [关键词] ASP程序;access数据库;访问速度;提高;实例 [中图分类号]Tit311。13[文献标识码]A[文章编号]1008—8059(2010)03—0043—03 ASP是微软开发的服务器端脚本环境,通过 致网页打开非常慢甚至页面执行超时。网络数据 ASP可以结合HTML网页、ASP指令和ActiveX 库加速技术很多,有的是采用缓存的技术实现加 组件建立动态、高效的交互WEB服务器应用程 速,当有人访问指定的页面时,加速模块会自动检 序。当用户使用浏览器请求ASP主页时,WEB服 测刚才处理过的数据页面是否有效,如果还没过 务器响应,调用ASP引擎来执行ASP文件,并解 期就立刻输出给访问者,因此明显提升访问速度。 释其中的脚本语言(JScript或VBScript),通过 当然如果缓存已经过期就重新生成缓存网页,实 ODBC连接数据库,由数据库访问组件ADO(Ac— 现智能更新。有效地解决了网页打开速度慢,数 tiveX Data Objects)完成数据库操作,最后ASP生 据库因并发太多锁死的问题。但最根本的方法是 成包含有数据查询结果的HTML主页返回用户 从数据库查询的方式来解决。 端显示。 笔者用ASP编写的《学生成绩查询管理系 在ASP中,Access数据库是一种最常用的数 统》中,使用Access数据库。在1.50版以前,由 据库,在处理少量数据或单机访问的数据库时是 于把全校学生成绩储存在一个表中(表名:cxb), 很好的,效率也很高。但是网络数据库都有一个 而cxb表中的字段达到200多个(学生基本信息 共同的问题:数据越多,所占用的内存和CPU资 2O多个,每学期最多20门课程,四年8个学期 源就越大,常规网站在查询大量数据时一定会需 160门课程)。当记录数达3000多条时,WEB单 要很多时间,有时查询时间高达几十秒,在这几十 用户本机读写access数据库时,查询1秒内完成, 秒内如果还有其他用户提交类似的请求,数据库 写一条记录,也是1秒内完成。WEB单用户局域 (如ACCESS)就可能因并发线程太多而锁死,从 网(100Mbps)内读写,1秒内完成。所以单用户 而导致网站无法继续工作,而且服务器的CPU常 使用是完全能满足要求的。WEB多用户(4用户 常也是满负荷。查询量较多、页面较大、网站访问 以内并发)局域网(100Mbps)内读写测试,查询3 人数比较多的时候,网站的速度就会变慢,常常导 至8秒内完成,写记录,6至15秒内完成,在这种 ① [收稿日期]2009—09—15 [作者简介]龚文生(1968~),男,苗族,重庆人,思茅师范高等专科学校计算机科学系高级实验师。 43 思茅师范高等专科学校学报 情况下也不会造成服务器iis假死。l0用户以上 并发局域网(1OOMbps)内读写access数据库时, 查询和用户写记录,都可能造成服务器iis假死, 无法完成。这样,在实际应用时,学生查询成绩时 的并发用户可能达几十人,《学生成绩查询管理 系统》也无法使用。 在解决这个问题时,尝试过多种方法。如把 每学期的课程成绩分开,这样记录数不减,而且一 个学期一张表,单独查询某个学生某个学期的成 <center><font face:”华文行楷”size=” 6”color=”#FFO000”><b>增加班级记录</b ></f0nt></center> <form action=in2.asp method=post> 表单发送文件。 <center> <table width:55 1 cellpadding=4 eellspacing :1 bgcolor:掰 O00 align=center height=”I1”> <tr bgcolor=#FFcccc> 绩速度稍有提高,而要查询某个学生在校的全部 成绩,多表关联,速度比一个表中有某个学生全部 成绩的表查询要慢。最后采用了分班建表的方 法:保留cxb(成绩查询)表,只留班级、学号、姓 名、性别、系别5个最基本的字段。建zybjmc(专 业班级名称)表,有班级、系别、班主任、班主任性 别、班级编号、毕业学分、该教学班四年8个学期 最多160门课程的名称等字段。建cxbO表,有原 cxb表所有字段(学生基本信息20多个,每学期 最多2O门课程成绩,四年8个学期160门课程成 绩)。在系统使用时,必须首先创建班级 班级一 创建,zybjmc表中的班级编号字段自动生成,同时 复制cxbO表,复制后的cxbO表名改为zybjmc表 中的班级编号字段自动生成的名字。这样同一个 教学班的记录的范围只有30到70左右。在学生 查询成绩时,由学生首先选择班级,进入指定班级 的记录进行查找,这样对同一张表的并发查询一 般都不会大于5个,而且记录很少,结果WEB多 用户局域网(1OOMbps)内读写access数据库时, 查询和写记录,1秒内完成。后来《学生成绩查 询管理系统》1.80版在学校使用,全校3300多学 生在期末查询成绩,并发用户可能达几十人,结果 局域网(1OOMbps)内读写access数据库时,查询 和写记录,1秒内完成。从上述测试内容可以看 出,经过分班建表的方法,完全解决了Access数 据库WEB访问时多并发用户造成服务器iis假 死,或者消耗掉服务器的内存导致服务器崩溃的 问题。 由于思茅师专的学生自由选修课比较少,必 修课程很多,所以分班建表的方法只适合于教学 班必修课程及统一选修课程成绩的录入查询。在 学生查询成绩时,除了由学生首先选择班级,进 人指定班级的记录进行查找,还可以在不知道 学生所属班级时查找,只要你输入学号或姓名, 就可以在保留的cxb表中找到此学生所属班级, 自动进入此学生所属班级查找此学生四年中的 所有成绩。 首先,分班建表的第一步是建立班级,只有建 立了班级才能进行相关的操作。 下面是分班建表文件lrbjg1.ASP代码的一小 部分: 44 <td align=center width:100 height:”19” >系 <td height=”19”width=”432”colspan:” 3”><input type=text name=”s”size=14 max— length=20 class:i><font size=”2”>&nbsp: 不大于l0个汉字</font> 各表单项。 <input type=submit value=”提交”>    <input type=reset value =”清除”> 下面是接收表单内容文件in2.asp代码的一 小部分: <!一一#include file=”conn.asp”一一> <body bgcolor=”#FFFFFF”text=”群 000000”background=”bgO1.gif”> <% randomize timer bjbh=int(md 10000000) 产生班级名称随机代码 S=request(”S”) glymm=request(”glymm”、 byxf=request(”byxf”) zybj=request(”zybj”) 取得表单内容。 set rs=server.createobject f”adodb.record— set”) sql=”select from zybjmc where zybj= + z)rbj+“’ rs.open sql,conn,3,3 if not rs.eof then rs.close set rs:nothing conn.close set corm=nothing response.redirect(”error.asp word=该专业班 级已经存在”) else set rs=server.createobjcct f”adodb.record- set”) 龚文生: Access数据库访问速度的提高 sql=”select from zybjmc where zybj is end if null” response.write(”<center>新班级录人成功! rs.open sql,conn,3,3 </center>” rs.addnew %> 首先向zjbjmc(专业班级名称)表中查询该专 <center> 业班级是否已经存在,如果不存在则写入这个班 <a href=trbjg1.asp><font color=”撑 级的名称。 FFO000”>下一条记录</font></a> set rsl=server.createobjeet f”adodb.record— </center> set”) 经过上述过程,分班建表就完成了,同时也把 sqll=”select from xfwhere zybj is null” 与新建立的班级的相关信息写入了与它关联的几 rs1.open sqll,conn,3,3 个表中。在后面的查询中就可以用关联的表查询 rsl。addnew 到每一个学生的全部成绩及其它相关信息。经过 向)【f(学分)表写入这个班级的名称。 2年多的实际使用(教师每学期期末的提交学生 set rs2=server.createobject f”adodb.record— 成绩及3300多学生查询成绩),Internet网上查询 set”) 和写记录,所有页面都是1秒内完成。 sql2=”select from jS where zybj is null” [参考文献] rs2.open sql2,CORn,3,3 [1]李建敏,吴智文.网络数据库解决方案 rs2.addnew l J 1.职业圈,2007,(02)。 向js(教师)表写入这个班级的名称。 [2]傅向华.一种基于数据访问流的数据库 set rs3=server.createobject f”adodb.record— 索引优化方法[J].计算机工程,2007,(12). set”) [3]冯柯.缓存关联对数据库系统性能的影 sql3=”select from xg where zybj is null” 响及其优化策略[J].计算机科学,2005,(03). rs3.open sql3,conn,3,3 [4]张传红。提高数据访问处理速度的一种 rs3.addnew 新方法[J]。河北建筑科技学院学报,2004,(o1). 向xg表写人这个班级的名称。 [5]刘琳.提高基于Java的数据库访问效率 的研究[J].现代电子技术,2006,(08). key:”b”+cstr(bjbh、 [6]周珊珊。网络数据库的安全及性能优化 set rs4=server.createobjeet f”adodb.record— [J].计算机与现代化,2006,(o1). set”) [7]韩秀蓉.提高VFP数据库访问速度的方 sql4=”select:l=into”&key&”from cxb0 法[J]。微电子学与计算机,2005,(O1). where l<>1” [8]赵贵菊.提高WEB访问数据库速度的 rs4.open sql4,conn,3,3 方法与技巧I.J 1.油气田地面工程,2002,(O5). 把cxb0表复制成名称为随机产生且保存在 [9]周忠丽.采用内存数据访问对象提高数 前面几张表中名称的表。 据库访问速度[J].四川大学学报(自然科学版), 2002,(03). Improving Rate of Accessing Access Database GONG Wen—・sheng (Department of Computer Science,Simao Teacher’S College,Puer,665000) 『Abstract] If Access database is called from Web application developed by ASP,there will be some limit in the simuhane0us access of the same data by muhi users and practical requirements cannot usually be attained.In the process of the development of Student’S Score Management System,Access database forms are changed from big ones to small ones,classiifed at all levels(by class)and relative ofrms can be inquired. It can raise Web speed visited by Access database and get practical result in the simultaneous access of the same data by multi users.From practical view,this paper analyzes the developing experience and ASP code examples.which are referential to the developers by using Access database in ASP. [Key Words] ASP program;Access database;visiting speed;raise;examples 45
发布者:admin,转转请注明出处:http://www.yc00.com/news/1688434794a137357.html
评论列表(0条)