应用型工程数据库系统中性能优化技术研究

时间:2022-10-07 03:09:09

应用型工程数据库系统中性能优化技术研究

摘要:该文分析了应用型工程数据库应用领域及其特点,指出通过数据预处理、合理使用范式规则设计表结构等来优化工程数据库数据表。同时提出了索引和查询语句优化选择、事务执行转向服务器端进行数据操作等手段优化数据库性能。

关键词:工程数据库;数据预处理;规范化;存储过程

中图分类号:TP311文献标识码:A 文章编号:1009-3044(2009)26-7340-02

Research on Technologies of Improving the Performance of Engineering Database

XIA Hong-xia1,2, QIAN Zheng2

(1.Hefei University of technology, Hefei 230041, China; 2.Anhui Vocational College of Electronics & Information Technology, Hefei 230041, China)

Abstract: The characteristics and areas of application of application-oriented engineering database is analyzed in this paper.Throughing the data pre-processing and using rule of paradigm design table structure reasonably to optimize engineering database tables. It also pointed out that the engineering database performance optimization tool including selecting indexing and query appropriately and turned to server-side implementation of services for data manipulation.

Key words: engineering database; data preprocessing; standardization; stored procedures

计算机应用的逐步深入推动了数据库管理系统在各个应用领域的发展。工程与科学研究一直是数据及计算量繁杂的应用领域,其数据量的增加更加迅速,这些数据的产生、处理、传递、存储变得越来越复杂,使用数据库对其数据进行管理也变得极其重要。目前工程数据库理论逐步成熟并进入实际应用,随着工程应用要求的提高工程数据库正向以下几个方面发展:

1)工程数据库正向面向对象、面向多媒体、面向知识等方面发展。由于工程数据库管理对象结构趋于复杂,传统的关系型数据库需要加以扩展方能适应其数据结构模型,面向对象设计思想及多媒体技术的成熟使其在工程数据库的应用成为重要的发展方向。同时由于工程数据库管理内容包含诸如工程装配序列、工艺技术、工程设计等,这就要求工程数据库系统不仅能够对工程设计数据进行管理,还需要进行推理,管理应用中涉及的各领域相关知识。通过人工智能、专家系统和工程数据库的结合,从已有数据中演绎推理出新的数据或归结特征数据来满足实际应用的需要。

2)工程数据库体系结构由基于主机的计算机系统经过文件服务器结构、客户机/服务器方式,逐步发展为在C/S体系基础上扩充的包括客户、数据库服务器、应用服务器构成的三(多)层结构[1]。

3)大型工程数据库以及应用型工程数据库同时快速发展。对于工程数据库的实际应用上,除了应用上述各种新技术的大型工程数据库不断研制成功外,面向各种中小型项目的应用型工程数据库也迅速发展,应用于发动机研制、铸造工程、地铁土建工程、汽车焊装及冷冲模等各领域具体项目[2]。这些应用型项目的特点是项目规模较小,开发周期较快,项目针对性强,数据特征明显,开发模式多选择C/S模式或者B/S模式。

在各种应用型工程数据库设计中,往往注重通过对系统层进行调整来实现数据库优化,而忽视数据处理及表结构设计、数据查询语句编写等问题,但对于各种中小型项目的应用,从这些方面来对的工程数据库进行性能优化可以大幅度提高应用型工程数据库整体性能。

1 进行数据预处理,合理使用范式规则优化数据表结构设计

为工程数据库提供有效数据是优化性能的必要条件。以面向通用类机械产品虚拟装配的工程数据库系统为例,通过对其输入数据进行预处理以及数据表结构进行研究,优化数据管理性能。该系统经过一系列数据模型建模后,确定各数据表结构及具体程序界面,编写对应的数据管理应用程序[3]。

1)对初始数据建立规则库进行推理,通过数据预处理增加系统稳定性。

以某轴零件为例,在设计界面需要输入零件编号等相关信息。在系统进行测试阶段时发现,在读取工程数据库相关数据时出现程序异常中断,装配件显示异常现象,经测试是由于其输入数据时部分数据未按系统要求格式输入而导致的。

其工程信息输入内容如表1。

通过对以上内容建立包括对大径和小径进行比较,各数值上下界检查,件数牌号等数据类型检查,零件编号格式检查等预处理规则,对所输入数据进行按规则进行检查,对与系统格式不相同的输入内容要求更新,提高系统稳定性。

2) 合理使用范式达到规范性和实用性的统一

数据库的设计要求将数据分布到多个表中,以控制数据冗余,达到在磁盘使用空间和性能之间取得平衡的目的。在商用数据库数据表设计中,通过关系规范化的设计手段可以很好的实现这一点,采用范式规则使数据信息在逻辑上更加紧密,有利于建立索引和维护数据完整性。

但在通用型工程数据库中,为保证规范性而要求完全按照关系规范化理论设计数据表往往会牺牲其实用性。面向通用类机械产品虚拟装配的工程数据库系统中物理属性信息表结构设计如表2。

该表中零件编号字段为主关键字,其中零件类别、零件质量、颜色等字段依赖于零件编号字段,密度字段内容依赖于零件类别字段。按照关系规范化理论,零件类别->密度属于传递依赖关系,密度字段属于数据冗余,该关系也不满足3NF。此处可以通过范式分解将此表数据储存在两个表中以满足3NF。

但在实际应用中,此表的设计是合理的,不能为了追求满足3NF或更高范式级别而对表格进行拆分。因为虚拟装配过程中经常需要使用零件的密度和质量来计算体积。如果这些数据存放在多张表中,将会增加I/O代价,多表连接也会延长查询时间,导致系统性能下降。

由此,对于面向具体项目的应用型工程数据库来说,要同时考虑数据表结构设计的规范性以及设计性能,通过范式与非范式相结合的策略,达到设计规范同时避免潜在性能下降的目的。

2 关联规则数据挖掘在教学系统中的应用

2.1 合理利用索引提高数据表检索效率,优化高频数据操作语句

设计工程数据库库时,往往通过对经常使用的数据表以及数据操作语句进行优化,以达到提升系统效率的目的。

1) 索引设计优化技术

虽然建立索引本身会占用一定量的系统资源,但对工程数据库系统中常用的数据表建立索引可以提高检索和更新数据的速度,尤其是需要经常对某些数据表进行操作或者访问的数据表中包含大量完全不同的数据,索引的使用更可以提升系统总体性能。对于面向通用类机械产品虚拟装配的工程数据库系统中多重数据表,可以采用聚集索引(clustered index)或非聚集索引(nonclustered index),但对于特定的任务采用对应索引可能有更高的效率。

对于一张大型或经常使用的数据表,建立索引的顺序通常是首先建立聚集索引,然后再建立非聚集索引以减小非聚集索引的重建时间。这是因为聚集索引和数据表记录的物理顺序一一对应,非聚集索引需要随聚集索引的增删而进行重建。由于聚集索引指定了表中数据的物理顺序,每张表只能有一个聚集索引。因此聚集索引通常基于数据表中的主key进行创建。在经常按顺序访问数据表或返回大量的检索结果时,通过使用聚集索引可以顺序访问表中的数据从而提高数据查询性能;另外在访问包含连接或者GROUP BY字句时也可以使用聚集索引来提高系统性能。

而非聚集索引包含了指向数据页上的表行指针,这样可以通过直接查找数据值后对数据表定位置的数据进行访问从而实现对某些数据的精确匹配查找。由于非聚集索引的顺序和表行的物理顺序不同,一个表可以有多个非聚集索引。通常情况下,在进行精确匹配的查找时或者在确定查询只返回少量数据的情况下往往使用非聚集索引。

2) 查询语句选择

在数据库设计中,查询效率是非常重要的性能指标。对于如服务器内存不足或网络通信存在缺陷等系统问题,较易确定问题所在,解决手段也比较明确。在具体应用中,可能使用多个语句都可以实现同一个查询操作,但效率相差很大。一般数据库均提供一些工具来对查询效率进行比较。如对面向通用类机械产品虚拟装配的工程数据库系统中可以同时使用表连接查询、嵌套查询以及相关子查询来实现对深沟球轴承特征参数的查询。经过查询分析器比较发现三种查询的返回结果相同,但执行效率相差较大,其中I/O操作相关子查询和嵌套查询相同,均优于连接查询,CPU执行时间上相关子查询优于其他两种查询方式,在此例中使用相关子查询较为合适。

在工程应用中,由于不同查询使用的环境不同,随着时间变化查询的对象也会产生变化,因此对系统查询频率较高的语句定期进行比较,使用效率较高的查询方式可以明显提高系统查询效率从而提高系统整体性能。

2.2 事务执行转向服务器端,减轻应用程序的数据处理量

应用型工程数据库多采用C/S模式或者B/S模式开发,在实际开发中,这两种体系结构通常不是直接对数据库进行操作,而是使用应用程序通过各种数据库API,诸如ODBC、ADO、OLE DB等来实现。具体方式是通过以上API来执行数据查询等语句,应用程序处理返回的处理结果集。对于B/S模式常通过后两种方式以XML方式获得处理结果集。

这种方式可以实现程序应用程序前端对数据的处理和交互,是应用型工程数据库的重要组成部分。但是过于依赖这种方式将加大应用程序数据处理量,导致程序响应速度迟缓,同时限制了工程数据库的扩展使用。在实际开发中,可以通过服务器端的应用逻辑来减轻应用程序端的数据I/O及计算量,实现对整体系统的性能进行优化。

在服务器端的应用逻辑包括存储过程和触发器等,存储过程是指在数据库中由用户自定义的预先定义并编译好的事物,它可以通过接收参数后执行规定事务并返回状态值或动态结果,可按应用需求来调用另一存储过程等。和直接在应用程序端利用数据库API执行数据库操作相比,利用存储过程可在执行时进行编译并放置在后台的Cache中,可以直接进行再次执行。同时利用存储过程可以减少网络传输代价,这是因为一方面存储过程在服务器端执行,另一方面存储过程返回的存储过程名、参数、查询结果等少量词句而不是整个事务的查询语句。在特定条件下才执行的相关事务可选用触发器,它具有和存储过程类似的优化效果。

3 结论

总之,在应用型工程数据库设计和使用中,仅通过优化数据模型、调整系统层设置(如处理器数量、文件系统、内存等)来优化系统往往取不到预期效果,对于中小型系统更是如此。工程实践中往往采用以下方式进行优化:1) 通过规则推理对输入数据进行优化,保证数据的完整性和准确性;合理利用范式和非范式策略设计数据表结构,保证实用性和规范性的统一。

2) 对常用的表和执行语句进行索引和查询语句优化选择;将事务执行转向服务器端来节省网络开销,提升事务运行效率。

按以上方式来优化数据库,可以较明显的提升面向通用类机械产品虚拟装配的工程数据库等应用型工程数据库系统实际运行效果。

参考文献:

[1] 乔淑云,孟凡荣,李来喜,等. 工程数据库体系结构的应用研究[J].能源技术与管理,2004(3):88-89.

[2] 陈跃鹏,任建平.发动机工程数据库与机械CAD应用程序间的信息传递[J].机械管理开发,2004,78(3):71-73.

[3] 宛延凯.工程数据库系统[M].北京.清华大学出版社,2000:73-78.

上一篇:一种改进的互信息特征选择方法 下一篇:基于CPLD的光催化空气净化器控制系统设计