日期:2011-05-02 15:22:00 来源:本站整理
优化Microsoft Access提高速度[MSSQL防范]
本文“优化Microsoft Access提高速度[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
择要
这篇文章介绍了在计划、编写和实现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真正删除这些对象并回收其占据的空间,从而使得你的数据库尽大概小但却更有效.我曾把逐字逐句查询的平均时间削减了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对象中全部搜.
更多关于数据拜候&数据库:http://www.microsoft.com/china/msdn/catalog/databas
以上是“优化Microsoft Access提高速度[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论