如何提高Visual FoxPro的性能--免费毕业论文、毕业论文范文、毕业论文格式、毕业论文提纲,毕业论文网,提供计算机应用论文,计算机论文,工学论文毕业论文提纲、毕业论文范文、毕业论文格式等.
喜欢WitkeyCity.Com,请把WitkeyCity.Com告诉你QQ上的5位好友,多谢支持!
网站地图
合作联系
收藏本站

首 页 经济学论文 财政税收 证券金融 管理学论文 会计审计 工商管理 财务管理 公共管理 法学论文 理学论文 医药学论文
政治论文 社会学论文 文学论文 教育类论文 工学论文 计算机论文 艺术类论文 哲学论文 文化论文 英语论文 应用文 论文写作指导
邮电通信

   
 ·推荐免费论文
·2007县委办公室先进性教育活动工
·用科学发展观统领农业和农村经济
·计算机实习报告范文
·调查报告:大学生眼中的电子商务
·当前农村初中生学习心理的调查报
·求职信的格式和写作要点 
·英文简历写作的注意事项 
·毕业论文写作的基本要求
·计算机软件许可证协议书
 ·最近更新论文
·在电子商务中如何正确的使用数据
·大型ORACLE数据库优化设计方案
·在VB6.0数据库程序开发中使用ADO
·浅谈VFP报表打印问题
·通用网页查询函数的设计与应用
·构建校园网页面电子邮件系统
·Delphi中画布应用两则
·利用RCM2200实现以太网与异步串口
·Oracle数据库的优化
 ·推荐链接
   当前位置:首页 > 计算机论文 > 计算机应用 > 论文正文
联系我们 客户反馈

如何提高Visual FoxPro的性能

来源:  [ 2007-3-8 21:28:00 ]  作者:未知  编辑:
收藏到VIVI | 收藏到365KEY | 收藏到YOUNOTE | 收藏到博采| 收藏到天极网摘 | 收藏到和讯网摘
摘要:本文介绍一些实用技巧和技术。如果我们能正确地应用这些技术,就可以大大改进Visual FoxPro的性能,提高数据的访问速度。
关键词:Visual FoxPro ;性能;技术

高性能是 Microsoft FoxPro数据库管理系统(特别是它的数据库引擎)的最大特点。Visual
FoxPro关系型数据库引进了对象模型,提高了引擎的存取速度并增强了客户/服务器特性,因此整个管理系统的功能变得更加强大。但是,这些强大功能的代价是使管理系统变得更加复杂。因此,一方面,很容易开发出性能稳定、面向对象、使用远程数据的应用程序,另一方面,也很难避免出现低性能的应用程序。
本文从改善、提高Visual FoxPro性能的目标出发,介绍一些实用技巧和技术。

一、改善本地数据访问的性能
1.使用索引
Visual
FoxPro中的索引是基于树的数据结构,因此查询经过索引的表是很快的。但当表中有较多的索引时,更新表和向表中输入数据就会变得慢一些,因为
Visual FoxPro 需要更新每个索引。通常,只需在用于筛选和联接的数据上建立索引。
应该避免以 FOR <条件> 或 NOT <条件> 这样的形式建立索引表达式,因为这些表达式无法优化。例如:INDEX ON DELETED
() TAG DEL是可以进行 Rushmore 优化的,但是,INDEX ON NOT DELETED ()TAG
NOTDEL则不能。在特殊情况下,我们不想包含被删除的记录,可以先设置 SET DELETED ON,再创建索引,这样可以加速操作。
此外,注意不要在那些只有少数离散数据中取值的字段(例如逻辑型字段)上建立索引。
2.优化查询的条件
Visual FoxPro 通过查找与筛选表达式左边相匹配的索引表达式来优化筛选条件。我们经常试图将索引的标识名与一个筛选表达式相匹配,而
Visual FoxPro 无法通过这种方式优化查询。下面使用的索引是错误的:
USE CUSTOMERS
INDEX ON UPPER(cu_name) TAG name
SELECT * FROM customers ;
WHERE cu_name="BILL" && not optimized. No index on "cu_name"
在一个筛选的查询中正确使用索引的方法是∶
SELECT * FROM customers WHERE UPPER(cu_name)="BILL" && Optimized!
3.使用 SYS(3051) 函数
SYS(3051)S 函数控制从一个记录(表、索引或备注文件)的锁定失败到再次尝试锁定它之间的时间间隔,以毫秒为单位,默认值为 333
毫秒。
如果在我们的系统中存在大量的锁定竞争,可以将这个值调大(最大值为
1000),以提高我们应用程序的性能,因为应用程序不会因徒劳锁定记录而浪费时间。但是,如果锁定竞争不多,应将该值调小(最小值为
100),以加速记录锁定的尝试。
4.注音标记和机器排序序列
在 Visual FoxPro
中,已经改进了查询包含国际化字符(带有区分标记的字符)数据的优化方式。但如果我们的索引表达式的结果包含的字符都不带注音标记(例如 B 或
M),则查询还能更快。

非机器排序序列(例如“通用”排序序列)比机器排序序列慢,有下列几个原因:非机器索引关键字的大小是机器索引关键字的两倍,因为必须为每个字符记录注音信息;为了返回正确的结果,非机器排序序列要使用很多特定的规则来断定索引的顺序。因为机器排序序列更快,所以它通常用于联接和查找,而其他排序序列用于排序记录。
5.使事务安排紧凑
事务应该只包含更新数据操作,在事务中包含其他任何操作(如使用我们界面,使用编程结构的 CASE、WHILE 或 IF
语句)都会降低更新数据的效率。
这对于 Visual FoxPro
是很重要的,因为使用事务需要锁定记录。在事务中以及更新记录时会锁定记录,并且在提交或回滚事务之前不会释放这些锁定的记录。即使我们使用了 RLOCK
() 或 FLOCK (),然后执行 UNLOCK,记录在 END TRANSACTION 或 ROLLBACK
语句之前也一直保持锁定。另外,在追加记录时需要 Visual FoxPro
锁定标头(即其他我们可以修改,但不能添加或删除),并且在事务结束(提交或回滚)之前一直锁定标头。因此,在一个高容量多我们的系统中,减少锁定记录的时间就变得很关键。
6.使用新的数据类型
在 Visual FoxPro
中引入了四种新数据类型∶日期时间型、整型、双精度型和货币型。所有这些类型的数据都以二进制数据的形式保存在磁盘上(整型是四字节的二进制数据,其他数据类型是八字节的二进制数据)。
使用这些数据类型有两个优点:首先,由于在磁盘上保存数据时所占的空间更小(一个八位数的数据若用数值型保存将占用八个字节,而保存为整形只需要四个字节),这样,从磁盘向内存加载数据和索引时,一次可以加载更多的有用数据,从而提高应用程序的性能。第二个优点是不需要任何的数据转换。Visual
FoxPro 内部将整型数据表示为四字节的二进制值,而数值型数据在磁盘上保存为 ASCII 码形式,因此,在每次读数据时,都必须将 ASCII
码转换为二进制值,存盘时再转换回去。由于整型和双精度型数据(以及日期型和货币型数据)不需要这种转换,所以数据访问就更快。
在新数据类型中,整型数据对速度的影响最大。要尽量使用整型数据作为主关键字和外部关键字的值。这样可以得到更小的 DBF
文件,更小的索引,更快的连接。

二、提高远程数据访问的性能
在任何后端数据库中检索数据是很费时的。为了加快数据的下载(或更新),可使用下面的方法。
1.只下载需要的数据

在一个应用程序的功能单元(比如,表单或报表)中,很少需要访问表中的所有数据。通过创建远程视图,只得到(或更新)我们需要的字段和记录,就可以减少通过网络的数据数量。例如,在我们的表单上有四个控件,分别绑定了远程视图的字段(客户标识号、公司名、联系人和来自客户表的地址),可使用SELECT
customer_id, company, contact, address FROM customers SELECT则会好得多。
2.使用一个 WHERE 子句
为了进一步限制下载(或更新)的数据数量,可以使用 WHERE 子句。对于上面的示例,如果我们只需要西南部的客户记录,我们视图的 SELECT
语句可以是:
SELECT customer_id, company, contact, address FROM customers
WHERE region = 'NORTHWEST'
Visual FoxPro 提供的视图灵活性以及 SQL Pass Through 技术使我们可以在 SELECT、UPDATE 和
DELETE 等 SQL 语句的 WHERE 子句中使用参数。例如,对于上例,我们可以使用参数在运行时刻下载任何地区的信息:
SELECT customer_id, company, contact, address FROM customers
WHERE region = ?pcRegion
式中,“pcRegion”是参数的名称。
3.使用正确的更新条件
视图设计器中的“更新条件”选项卡允许我们指定视图中的数据如何被更新(插入和删除)。在选项卡中的“SQL WHERE
子句包括”部分,我们可以控制 UPDATE 和 DELETE 操作中 WHERE
子句的内容。这对于在后端控制数据冲突是很关键的,对于改善性能也是很重要的。

因为我们向后端更新的字段总是可更新字段的子集(并且一定是视图中字段总数的子集),在大多数情况下都使用“关键字和已修改字段”选项。对于支持时间戳的服务器数据库,建议使用“关键字和时间戳”设置,这种更新方式比用“关键字和已修改字段”更快。
4.使用 BatchUpdateCount 属性
有些服务器 (例如 Microsoft SQL ServerServer ) 允许我们在一个单独的数据包中发送一批 SQL
语句,这个技术加速更新、删除和插入,因为通过网络传送的网络包的绝对数量减少了,而且服务器数据库可以成批编译多个语句而不是单独编译。
我们应该对于这个属性和 PacketSize
属性用不同的值来试验,以优化我们的更新。可以在“查询”菜单的“高级选项”对话框中设置该属性,或者通过 DBSETPROP () 或
CURSORSETPROP () 函数来设置。注意若要使用这个属性,必须通过调用 DBSETPROP () 或 SQLSETPROP ()
函数设置“Transactions”属性来启动人工事务。
5.使用 PacketSize 属性
PacketSize属性控制向数据库服务器传送和下载的网络包的大小(按照字节)。它实际上是由 ODBC
设置的,并且可以是任何非零值。不同的网络对该属性有不同的处理,因此我们应该参阅网络服务文档。该属性的默认值是 4096
字节。如果我们的网络支持更大的数据包,我们可以在每次请求 (SELECT、INSERT、UPDATE、DELETE)
时将该属性值增加以加大网络吞吐量。

本论文共2页,当前在第1页  1  2  

论文首页】【设为主页】【字体: 加入收藏】【打印本文】【回到顶部
 
上篇文章: CIMS环境下的企业经营过程重构研究  下篇文章: 用VB构键Internet的应用-
网站首页 - 友情链接 - 网站地图 - 加入收藏

声明:中国论文网毕业论文资料来源于网络,如有侵犯您的权益,请立即告知,我们将删除!
联系方式: E-mail:Laozhanga@QQ.COM QQ:75931341
喜欢WitkeyCity.Com,请把WitkeyCity.Com告诉你QQ上的5位好友,多谢支持!
冀ICP备07000828号