前言
【相关文章:SOA随信息服务而演化】 【扩展阅读:微软WCF给SOA带来的影响】绝大多数的oracle数据库性能问题都是由于数据库设计不合理造成的,只有少部分问题根植于database buffer、share pool、redo log buffer等内存模块配置不合理,i/o争用,cpu争用等dba职责范围上。所以除非是面对一个业已完成不可变更的系统,否则我们不应过多地将关注点投向内存、i/o、cpu等性能调整项目上,而应关注数据库表本身的设计是否合理,库表设计的合理性才是程序性能的真正执牛耳者。 【扩展信息:发掘SOA真正的应用价值】 合理的数据库设计需要考虑以下的方面: ·业务数据以何种方式表达。如一个员工有多个email,你可以在t_employee表中建立多个email字段如email_1、email_2、 email_3,也可以创建一个t_email子表来存储,甚至可以用逗号分隔开多个email地址存放在一个字段中。 ·数据以何种方式物理存储。如大表的分区,表空间的合理设计等。 ·如何建立合理的数据表索引。表索引几乎是提高数据表查询性能最有效的方法,oracle拥有类型丰富的数据表索引类型,如何取舍选择显得特别重要。 本文我们将目光主要聚焦于数据表的索引上,同时也将提及其他两点的内容。通过对一个简单的库表设计实例的分析引出设计中的不足,并逐一改正。考虑到手工编写库表的sql脚本原始且低效,我们将用目前最流行的库表设计工具powerdesigner 10来讲述表设计的过程,所以在本文中你还会了解到一些相关的powerdesigner的使用技巧。 一个简单的例子 某个开发人员着手设计一个订单的系统,这个系统中有两个主要的业务表,分别是订单基本信息表与订单条目表,这两张表具有主从关系的表,其中t_order是订单主表,而t_order_item是订单条目表。数据库设计人员的设计成果如图 1所示: 560)this.style.width=560; onmousewheel = javascript:return big(this) style="width: 554px; height: 116px" alt=合理设计优化oracle库表设计的若干方法 hspace=0 src="/files/uploadimg/20051031/1736190.gif" border=1> 图 1 订单主从表 order_id是订单号,为t_order的主键,通过名为seq_order_id的序列产生键值,而item_id是t_order_item表的主键,通过名为seq_order_item的序列产生键值,t_order_item通过order_id外键关联到t_order表。 需求文档指出订单记录将通过以下两种方式来查询数据: ... 下一页