在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
愿您愉快地编程,让人们享受社会信息化所带来的好处。
一、文件系统有明显的缺点:
1、编写应用程序很不方便。
2、文件的设计很难满足多种应用程序的不同要求,数据冗余经常是不可避免的。
3、文件结构的修改将导致应用程序的修改,应用程序的维护量将很大。
4、文件系统不支持对文件的并发访问(concurrent access)。
二、优点:
1、提供高级的用户接口。
2、查询处理和优化。
3、数据目录管理。
4、并发控制。
5、恢复功能。
6、完整性约束检查。
7、访问控制。
相同:
数据管理和数据处理一样,都是计算机系统的最基本的支撑技术。尽管计算机科学技术经历了飞速的发展,但数据管理的这一地位没有变化。数据管理将作为计算机科学技术的一个重要分支一直发展下去,社会信息化,对数据管理的要求也愈高。
一、数据
1、数据(data)是事实或观察的结果,是对客观事物的逻辑归纳,是用于表示客观事物的未经加工的原始素材。
2、数据可以是连续的值,比如声音、图像,称为模拟数据;也可以是离散的,如符号、文字,称为数字数据。
3、在计算机系统中,数据以二进制信息单元0、1的形式表示。
二、数据库
数据库是存放数据的仓库。它的存储空间很大,可以存放百万条、千万条、上亿条数据。但是数据库并不是随意地将数据进行存放,是有一定的规则的,否则查询的效率会很低。当今世界是一个充满着数据的互联网世界,充斥着大量的数据。即这个互联网世界就是数据世界。数据的来源有很多,比如出行记录、消费记录、浏览的网页、发送的消息等等。除了文本类型的数据,图像、音乐、声音都是数据。
三、数据库管理系统
1、数据库管理系统(Database Management System)是一种 *** 纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户通过DBMS访问数据库中的数据,数据库管理员也通过DBMS进行数据库的维护工作。
2、它可以支持多个应用程序和用户用不同的方法在同时或不同时刻去建立,修改和询问数据库。大部分DBMS提供数据定义语言DDL(Data Definition Language)和数据 *** 作语言DML(Data Manipulation Language),供用户定义数据库的模式结构与权限约束,实现对数据的追加、删除等 *** 作。
四、数据库系统
数据库系统DBS(Data Base System,简称DBS)通常由软件、数据库和数据管理员组成。其软件主要包括 *** 作系统、各种宿主语言、实用程序以及数据库管理系统。数据库由数据库管理系统统一管理,数据的插入、修改和检索均要通过数据库管理系统进行。数据管理员负责创建、监控和维护整个数据库,使数据能被任何有权使用的人有效使用。数据库管理员一般是由业务水平较高、资历较深的人员担任。
五、数据、数据库、数据库管理系统、数据库系统四者之间的关系
1、首先数据库系统(baiDBS)包括数据库(DB)和数据库管理系统(DBMS),数据库管理系统包括数据库,数据库包括数据。
2、数据库是用来存放数据的仓库。
3、数据库管理系统是 *** 纵和管理数据库的系统。
扩展资料:
数据库的发展现状
1、在数据库的发展历史上,数据库先后经历了层次数据库、网状数据库和关系数据库等各个阶段的发展,数据库技术在各个方面的快速的发展。
2、特别是关系型数据库已经成为目前数据库产品中最重要的一员,80年代以来, 几乎所有的数据库厂商新出的数据库产品都支持关系型数据库,即使一些非关系数据库产品也几乎都有支持关系数据库的接口。这主要是传统的关系型数据库可以比较好的解决管理和存储关系型数据的问题。
3、随着云计算的发展和大数据时代的到来,关系型数据库越来越无法满足需要,这主要是由于越来越多的半关系型和非关系型数据需要用数据库进行存储管理。
4、以此同时,分布式技术等新技术的出现也对数据库的技术提出了新的要求,于是越来越多的非关系型数据库就开始出现,这类数据库与传统的关系型数据库在设计和数据结构有了很大的不同, 它们更强调数据库数据的高并发读写和存储大数据,这类数据库一般被称为NoSQL(Not only SQL)数据库。 而传统的关系型数据库在一些传统领域依然保持了强大的生命力。
早期的数据库管理都是采用文件系统。在文件系统中,数据按其内容、结构和用途组成若干命名的文件。文件一般为某个用户或用户组所有,但可供其他用户共享。用户可以通过 *** 作系统对文件进行打开、读、写和关闭等 *** 作。
文件系统有明显的缺点:
(1)编写应用程序很不方便。
应用程序的设计者必须对所用的文件的逻辑及物理结构有清楚的了解。 *** 作系统 只能打开、关 闭、读、写等几个低级的文件 *** 作命令,对文件的查询修改等处理都须在应用程序内解决。应用程序还 不可避免地在功能上有所重复。在文件系统上编写应用程序的效率不高。
(2)文件的设计很难满足多种应用程序的不同要求,数据冗余经常是不可避免的。
为了兼顾各种应用程序的要求,在设计文件系统时,往往不得不增加冗余的数据。数据冗余不仅浪费空间,而且会带来数据的不一致性(inconsistency)在文件系统中没有维护数据一致性的监控机制,数据的一致性完全有用户负责维护。在简单的系统中勉强能应付,但在大型复杂的系统中几乎是不可能完成的。
(3)文件结构的修改将导致应用程序的修改,应用程序的维护量将很大。
(4)文件系统不支持对文件的并发访问(concurrent access)。
(5)数据缺少统一管理,在数据的结构、编码、表示格式、命名以及输出格式等方面不容易做到规范化、标准化;数据安全和保密方面,也难以采取有效的办法。
针对文件系统的缺点,人们发展了以统一管理和共享数据为主要特征的数据库系统。在数据库系统中,数据不再仅仅服务于某个程序或用户,而是看成一个单位的共享资源,由一个叫数据库管理系统(Data Management System,简称DBMS)的软件统一管理。由于有DBMS的统一管理,应用程序不必直接介入诸如打开、关闭、读写文件等低级的 *** 作,而由DBMS代办。用户也不必关系数据存储和其他实现的细节,可在更高的抽象级别上观察和访问数据。文件结构的一些修改也可以由DBMS屏蔽,使用户看不到这些修改,从而减少应用程序的维护工作量,提高数据的独立性。由于数据的统一管理,人们可以从全单位着眼,合理组织数据,减少数据冗余;还可以更好地贯彻规范化和标准化,从而有利于数据的转移和更大范围的共享。由于DBMS不是为某个应用程序服务,而是为整个单位服务的,DBMS做得复杂一些也是可以接受的。许多在文件系统中难以实现的动能,在DBMS中都一一实现了。
例如:适合不同类型用户的多种用户界面,保证并发访问时的数据一致性的并发控制(concurrent control),增进数据安全性(security)的访问控制(access control),在故障的情况下保证数据一致性的恢复(recovery)功能,保证数据在语义上的一致性的完整性约束(integrity constraints)检查功能等。随着计算机应用的发展,DBMS的功能愈来愈强,规模愈来愈大,复杂性和开销也随之增加。目前,在一些功能非常明确且无数据共享的简单应用系统中,为减少开销,提高性能,有时仍采用文件系统;不过在数据密集型应用系统中,基本上都使用数据库系统。
现代的数据库管理系统应该具备的7个功能:
1、提供高级的用户接口
2、查询处理和优化
这里的查询(query)泛指用户对数据库所提的访问要求,不但包含数据检索,也包括修改\定义新数据等
3、数据目录管理
4、并发控制
5、恢复功能
6、完整性约束检查
7、访问控制
数据管理和数据处理一样,都是计算机系统的最基本的支撑技术。尽管计算机科学技术经历了飞速的发展,但数据管理的这一地位没有变化。数据管理将作为计算机科学技术的一个重要分支一直发展下去,社会信息化,对数据管理的要求也愈高。
如果两种数据库系统之间的数据定义模型不同,如分别为关系模型和层次模型,那么需要重新定义实体属性和联系,以防止属性或联系信息的丢失。
----总之,在进行数据转换后,一方面源数据库模式中所有需要共享的信息都转换到目的数据库中,另一方面这种转换又不能包含冗余的关联信息。
----数据库转换工具可以实现不同数据库系统之间的数据模型转换,需要进一步研究的问题是:如果数据库转换同时进行数据定义模式转换和数据转换,就可能引起同一数据集合在异构数据库系统中存在多个副本,因此需要引入新的访问控制机制。在保证各个参与数据库自治,维护其完整性、安全性的基础上,对于异构数据库系统提供全局的访问控制、并发机制和安全控制。
----如果数据库转换只进行数据定义转换,不产生数据的副本,那么在新的目的数据库定义模型的框架下访问数据,实现上仍是对源数据库系统中数据的访问。这时利用新的数据库系统中的数据处理语言实现的事务,不能直接访问源数据库,必须进行事务级的翻译才可以执行。
在开发数据库软件的过程中 由于实际需求不断发生变化 数据库结构也将随之改变 这会给文档更新工作带来很大困难 如果能够用软件自动获得数据库的结构信息并生成报告文件 将减轻软件的文档工作量
TSession对象
为了管理应用程序与数据库系统的多重连接 Delphi提供了TSession对象 Delphi中的数据访问对象(Data Access Object)均包含Session属性 用来指向与之对应的TSession对象 如果应用程序需要同时建立对数据库系统(尤其是BDE数据库)的多个连接 就必须定义多个TSession对象 属于不同连接的数据访问对象的Session属性不能相同 否则将无法同时使用
在数据库应用程序运行时 Delphi会自动生成一个缺省TSession对象 名字为Session 数据访问对象在缺省情况下均与之相连
TSession对象除了自动管理数据库连接外 还能够取得数据库信息 下面就分别介绍这方面的函数
获取数据库别名信息
TSession对象在获取数据库别名方面有 个函数/过程
以下是引用片段 procedure TSession GetAliasNames(List: TStrings); procedure TSession GetAliasParams(const AliasName: string; List: TStrings); function TSession GetAliasDriverName(const AliasName: string): string;
GetAliasNames用来获得所有的BDE别名名称 结果保存在变量List中;GetAliasParams用来获得某个BDE别名的参数 结果保存在变量List中;GetAliasDriverName用来取得某个BDE别名使用的数据库驱动程序的名字
这 个函数不太复杂 就不多加介绍了 一般情况下 我们只需要使用GetAliasNames即可
获取数据表信息
在知道了数据库别名后 如何取出该别名对应数据库中包含的数据表呢可以使用TSession对象中的 GetTableNames过程 该过程描述如下
以下是引用片段 procedure TSession GetTableNames(const DatabaseName Pattern: string;
各参数意义如下
DatabaseName 数据库别名;
Pattern 过滤器 用来过滤结果 可以使用通配符 比如 dbf t 等 如果为空字符串 则表示不需要过滤;
Extensions 为布尔量 表示是否显示数据表扩展名 该参数只对DBF和Paradox数据库有效;
SystemTables 为布尔量 表示是否显示系统数据表;
List 为返回结果 结果按字母顺序排序
lishixinzhi/Article/program/Delphi/201311/8542
在数据库中,通常会将权限分为以下五类:
访问权限:控制用户对数据库资源的访问权限。
数据 *** 作权限:控制用户对数据库中数据的 *** 作权限,如插入、更新、删除等。
结构 *** 作权限:控制用户对数据库中表、视图、存储过程等结构的 *** 作权限,如创建、修改、删除等。
安全权限:控制用户对数据库安全设置的权限,如设置密码、角色等。
系统权限:控制用户对数据库系统的 *** 作权限,如创建数据库、备份数据库等。
注意:不同的数据库系统可能会有所差异,上述权限类别仅供参考。
以上就是关于在数据库访问量过大时,怎样提高访问速度全部的内容,包括:在数据库访问量过大时,怎样提高访问速度、利用文件系统处理数据与数据库系统处理数据有什么不同各有何优缺点、试述数据 数据库 数据库管理系统 数据库系统的概念以及四者之间的关系等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)