数据库

5个提升 Oracle数据库设计性能的法则

2017-01-19 16:33:35 | 来源:中培企业IT培训网

在Oracle数据库的应用过程中,数据库性能的好坏直接关系到数据库运行的效率。中培伟业《Oracle数据库管理与性能调优》培训专家袁老师指出,对于提升数据库性能来说,合理的数据库设计,比升级服务器的硬件配置还要来的有效。

袁老师根据多年的工作经验在这里介绍了5个提升Oracle数据库设计性能的法则:

(一)在小型表上不要建立索引

毋庸置疑,索引可以提高数据库查询的效率。但是俗话说,过之则不及。索引也必须用在合时的地方。如果索引设置不当,不但不会提升数据库的性能,反而会起到相反的作用。如在小型数据库上设置索引,而且这些表用户更改的比较频繁。当进行这些变更作业的时候,需要对索引进行维护。而这个维护的工作量可能比扫描表空间消耗更多的存储空间。从而不但起步到改善数据库性能的作用,反而是在拖后腿。

所以,在数据库设计的时候,要做到的第一个戒条就是,不要再用户经常更改的小型表上建立索引。否则的话,是得不偿失的。

(二)不要用用户的键

如我们在设计一个ERP系统数据库的时候,有一张销售订单表。在这张表中,有一个销售订单号。那么我们能否利用这个单号作为关联其他表的外键呢?如在销售出货单上,需要关联到销售订单。这个时候,我们能否把销售订单单号作为跟出货单关联的关键字呢?

袁老师的回答是可以,但是不是最优选择,这也是为什么不要用用户的键的原因。通常情况下,不要选择用户可编辑的字段作为外键或者主键。因为这会增加我们额外的工作量。

另外,我们还必须为此设计一些检测和纠正键冲突的方法。如考虑这个外键的直是否在其他数据表中存在等等。虽然这通常只需要我们花点时间就可以搞定。但是从数据库性能上来说,这个代价就比较大了。再则,如此的话,就不能够很好的把系统的基本数据跟企业员工的数据实现很好的隔离。

所以,袁老师认为,不要用用户的键来作为我们数据库设计的主键或则外键。或者说,数据库设计时用到的键要让数据库系统进行自动维护,用户不得更改这个维护规则。

(三)不要用商务规则来实现数据的完整性

数据的完整性有好几种实现方法。如可以通过数据库约束实现数据完整性;也可以通过前台系统的商务规则来实现数据的完整性。不过,袁老师这里要建议的是,在一些大型的数据库中,不要试图通过商务规则来实现数据的完整性,而尽可能的通过数据库的约束来实现。因为若通过商务规则来实现完整性,往往会出现一些莫名其妙的错误。

(四)在可能的情况下,不要让前台应用程序直接访问数据表

其实,在数据库基础表与前台应用程序之间,还有一个很好的“中间人”,那就是视图。试图是数据库基础表的一个抽象。他除了可以保障数据的质量外,还可以有效的访问前台应用程序对于数据的非法访问。所以,一些安全性级别比较高的数据库系统,在数据库设计的时候,往往会在数据库和前台应用程序代码之间提供“视图”这个中间人,让其作为基础表的“新闻发言人”。如此,前台应用程序在没有必要的情况下,可以不直接访问数据表,而是通过视图来对表实现间接的访问。

如在进行数据导入程序设计的时候,通过视图来实现则是一个很理想的方法。这不但效率比较低,而且也不容易实现数据的完整性。此时,我们就可以利用视图,把一些必须要填入的字段组合在一张可更新视图中。如此,前台应用程序只需要访问一个数据库对象即可。

再者,在数据库报表设计上,更是要通过视图来实现。而不要通过传递一段SQL代码来查询基础表。这对于数据的安全性会带来比较大的威胁。所以,第四条法则就是,在可能的情况下,不要让前台应用程序直接访问数据表。

(五)不要一直让用户输入数据

有些字段其实不一定要让用户输入,只需要用户选择即可。这种手段,是提高数据完整性的最佳方式之一。若能够给用户提供一个详细的列表供其选择,这样将减少键入代码的错误,同时提高数据库的一致性;也可以提高用户界面的友好性。

所以,在数据库设计的时候,尽量使用列表字段来供用户选择。如在数据保存的时候,都要去判断用户输入的数据是否合乎完整性的规则。这显然工作量要比设计一个列表字段多得多。

故数据库设计的第五条法则就是不要老是让用户手工输入数据。提供列表让用户进行选择,用户不仅可以提高效率,我们也可以省事,同时,也能够保障数据的准确率。

标签: Oracle