|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
ASP由于使用了COM组件所以它会变的十分强大,但是这样的强大由于Windows NT系统最初的设计问题而会引发大量的安全问题。只要在这样的组件或是操作中一不注意,哪么外部攻击就可以取得相当高的权限而导致网站瘫痪或者数据丢失; 摘要
这篇文章引见了在设计、编写和完成Microsoft Access 数据库使用法式时为包管具有最高速度而需求注重的几点。
引见
作为一位数据库法式员,你的次要义务是让你的用户能疾速地选择、办理和会见他们所需求的信息。其他的任务几近都是原封不动的,只需你的数据库使用法式履行速度越快,你的法式效力越高。这篇文章的目标就是凸起各类分歧的技能和战略,经由过程优化法式来进步速度,让你的Microsoft Access 数据库使用法式的效力更高,如许也能够匡助你完成作为一位数据库开辟者的次要任务。
硬件
对准速度成绩的基本
为了进步你的数据库法式的速度,天然而然地你会想到去注重影响速度最根基的几个局部,咱们将从处置这几个局部着手。在你力争进步你的数据库法式功能的时分,你的法式所运转的硬件平台将是独一的决意要素。不言而喻,完成优化的第一条准绳应当是较快的硬件=较快的数据库,固然CPU和RAM是这个等式的中心地点。信任你必定注重到Microsoft Access 所声明的,要到达一个使人写意的功能,最少需求8MB的RAM和一个80486的CPU。普通情形下,用户注重到这一点是理所应该的,但我却见过很多用户为他们的Microsoft Access 的履行速度而感应懊丧,当我问及他们利用甚么机械运转此法式时,他们告知我是一台80386,而且是在运转一台办事器上的一个MSACCESS.EXE。所以,在信任你的用户经由过程上面的办法当然能进步其法式功能的同时,一直需求强调的依然是,在Microsoft Access 履行过程当中,硬件才是关头的成绩。
无效的磁盘会见
假定已有了一个使人写意的硬件设置装备摆设,上面让咱们会商一下若何才干进步Microsoft Access 在此平台上的运转速度。就这个成绩,对你的数据库法式而言,影响其功能的第二位要素就是磁盘会见了。在履行过程当中,对物理磁盘的会见老是一个速度的瓶颈(与会见存储在 RAM中的数据比拟较而言),所以,你应当尽可能削减对磁盘的会见。但是,因为你的使用法式老是要和一些磁盘或其他一些物理装备打交道,所以,你的方针应当是包管一切的磁盘会见都尽量无效。要完成这一点,办法是常常收拾整顿你的磁盘数据碎片,收拾整顿你的数据库地点的磁盘驱动器和一切你履行你的数据库法式时要触及的磁盘驱动器,并且你还应提示你的用户按期清算磁盘碎片,以此包管磁盘会见一向无效。这将最大水平地削减在对物理磁盘停止读写而消费的工夫,虽然这些读写是不成防止的,同时优化了全部系统的功能。
使RAM最大化/对磁盘会见的频率最小化
下一个主题是使你的数据库法式与物理磁盘驱动器打交道的频率最小。要做到这一点关头是尽量多的释放RAM空间给你的使用法式利用。要完成这一点,你需求做到以下几点:
增添最大缓冲区的尺寸
起首触及到你对最大缓冲区尺寸的设置。最大缓冲区的尺寸指的是Microsoft Access作为外部存储空间而保存的RAM的数量。存储空间越大,用户需求的数据能在RAM中找到能够性越大,同时削减了对物理磁盘的会见频率。Microsoft Access 需求的最小缓冲区是512KB,假如你的硬件体系有多于4MB的RAM,那末你就能够为Microsoft Access 多分派一些供其利用(如许也增添了体系的功能)。要做到这一点,只需求在MSACCESS.INI(在你的windows目次下)文件中增添对最大缓冲区的设置,利用你的文本编纂器,例如记事本,在此文件中找到 [Option] 段,在个中加如许一句话:
MaxBufferSize = xxxxx
这个中的xxxxx便是为你的使用法式对存储空间分派而作的新设置(例如,设置MaxBufferSize=2048将为Microsoft Access分派2MB的缓冲区空间)。那末,你事实应当分派几何才算适合呢?除“尽量多”,其他的还真难说。你需求手动地调理这个设置,同时需求试着让你的硬件都能供应以下前提:1)不克不及妨害用户同时正在运转的法式,2)不会影响其本身底层操作体系的运转效力(你能够会在法式启动时想经由过程.INI文件检查一下Microsoft Access本身的设置装备摆设,因而,任何对MSACCESS.INI文件的修正都将只能鄙人一次Microsoft Access启动时才干见效,而对如今正在运转的Microsoft Access法式没有任何的影响)。
防止装载Wizards
为了释放更多的内存以供Microsoft Access利用,另外一个你可以接纳的步调是:假如你不利用Wizards,那末就不要装载它。你可以翻开MSACCESS.INI文件,找到[libraries]局部,在“wizards.mdb=ro”这一句之前加一个分号,如许就防止了主动加载Wizards。如许做将可以释放315B的RAM供应给Microsoft Access以作己用,如许做的优点不但在于进步了运转工夫的功能,同时使每一个使用法式均匀削减了大约10秒的装置工夫。
消除墙纸/后台位图
消除尺度windows墙纸后台可以释放RAM中任何一处25K到350K的空间。消除庞杂的位图将释放更多的内存空间。
创立永世互换文件
创立一个永世互换文件(相对一时文件而言)将增添你额定的功能。关于这一点,你可以乞助于关于这方面的匡助文档,它将指点你在运转数据库使用法式的机械上创立这一文件。
到如今为止,咱们已处理了有关硬件平台、最大的磁盘会见效力的成绩,而且为你的使用法式增添了无效的RAM存储空间,接上去让咱们转向优化使用法式自己。
Microsoft Access本身特色
紧缩、紧缩
要包管常常性的紧缩你的法式代码。当你在开辟和利用Microsoft Access数据库时,你要常常性地增添和删除数据、代码等等。如今的成绩是Microsoft Access其实不能无效地释放已分派的但被删除的对象空间,这将意味着即便你删除一个对象,而这个对象依然在你的数据库中占有空间。紧缩数据库将迫使Microsoft Access真正删除这些对象并收受接管其占有的空间,从而使得你的数据库尽可能小但却更无效。我曾把逐字逐句查询的均匀工夫削减了30%――50%,而做到这一点仅仅是经由过程去紧缩那些因为常常利用又缺少紧缩而变得过度收缩的数据库法式,因而,在运转法式的过程当中,不要无视紧缩进程的主要性。正如你要按期排除硬盘数据碎片一样,你和你的用户也应该按期紧缩数据库来包管它一直最无效地运转。
只用代码
你能够但愿经由过程宏操作来搭建一个使用法式的模子,一旦你入手下手优化你的法式的终究功能,必定要把一切的宏从头写成代码。这次要是由于Microsoft Access代码要比宏运转得快的多。但遗憾的是有三个宏操作你不克不及将他们改写成代码,这三个宏是Autokeys、Autoexec和Addmenu操作,这三个宏在Microsoft Access中没有响应的等价类,因而你只能自愿利用他们。不外,你可以克制Autoexec的限制,只需求界说Autoexec为挪用你的Access Basic Autoexec函数。
优化数据类型声明
当你在你的代码中声明数据类型时,你应当试着尽量准确。由于若是一个变量的类型(假如没有出格声明,缺省为可变类型)十分天真自在的话,那末这类类型同时也将是最华侈内存的一品种型。如许一来,假如你晓得check Balance这个变量不需求超越4位小数精度的话,那末就把它界说成肯定类型而不是可变类型。对你的进程函数的界说一样也能够如斯操作(好比说,把函数PostCredit()声明为整形,而不是Function PostCredit())。请注重如许一个现实,假如你估量一个变量将会被处置成一个空值,那末你需求去把它界说成一个可变类型而不是一个肯定的严厉的数据类型,不然你会失掉一个毛病信息。一样地,要注重整形除法和浮点除法之间的不同。
常常利用From/Report变量
在你的法式中,你需求包管你能提早处理尽量多的查询任务。这意味着甚么呢?举个例子来讲明:假如你想在代码中查阅一个名为[NetPrice]的文本框,你可使用如许一条语句:
Mytemprariable=Forms![Customer Invoice]![Net price]
关于这条指令,Microsoft Access起首在Forms对象里搜刮名为[Customer Invoice]的表,一旦它找到这张表,Microsoft Access接上去寻觅名为[NetPrice]的掌握,并停止准确的操作。从这个例子可以看出,Microsoft Access经由两次查询终究肯定咱们指定的掌握。假如你想在统一法式(函数或子函数)中再次查询[Customer Invoice]表中任一掌握,你可以删除能够会鄙人次呈现的过剩语句,而只利用以下语句:
Dim F as form
Set F = Forms![Customer Invoice]
如今,你的Form变量将主动指向Form[Customer Invoice],答应Microsoft Access 防止每次在你需求查找[Customer Invoice]表中任一对象时,都要把数据库的Form对象中全体搜刮一次。为了查阅掌握[NetPrice],你只需求复杂地利用上面的语句:
Mytempvariable=F![NetPrice]
你也能够对Report对象作不异的操作(好比,set R=Reports![MyReport])。当你在一个函数中仅仅只对一个Form或Report会见一次,你能够在速度功能方面得不到甚么太大得优点,然而一旦你入手下手在统一个Form或Report中停止的会见操作超越一次,你将会看到分明的工夫削减。因而,经由过程使Microsoft Access防止作过剩的查阅,你将大大地进步你法式的速度。
在可以使用的中央利用windows函数
不管什么时候,只需相干,老是可以用一个windows函数挪用来取代Access Basic代码履行统一个操作。如许你将节俭开辟工夫,由于windows函数挪用是已完成编码并经由优化,同时也由于它们是用C言语编写的(机械可履行),而Access Basic代码则要被编译成P代码模式,同时需求在履行时一行一行地注释。一个最通俗的例子是custom.ini设置。你可使用Access Basic文件函数去失掉一个自在文件指针,翻开文件,读/写文件,然后封闭它。然而假如你完整可以复杂地利用GetPrivateProfileString和WritePrivateProfileString函数来完成,它们既快且已编码优化顺手可用,你为何还要自寻懊恼呢?(参考:“Enhanced Microsoft Access: Using the Win16 API”)
你的Microsoft Access数据库使用法式运转速度越快,你就可以更好地完成你的义务,也就是向你的用户供应最无效的选择、办理、发送他们的数据的才能。我朴拙但愿以上这些小技能能协助你到达这个方针。由于ASP提供的是一对多的服务,所以用户的一些特殊需求很难得到满足。 |
|