优化构架高性能的interbasefirebird系统

优化构架高性能的interbasefirebird系统

ID:23209882

大小:68.51 KB

页数:10页

时间:2018-11-05

优化构架高性能的interbasefirebird系统_第1页
优化构架高性能的interbasefirebird系统_第2页
优化构架高性能的interbasefirebird系统_第3页
优化构架高性能的interbasefirebird系统_第4页
优化构架高性能的interbasefirebird系统_第5页
资源描述:

《优化构架高性能的interbasefirebird系统》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、构架高性能的InterBase/FireBird系统日期:2007-04-23

2、分类:数据库版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://alek.blogbus.com/logs/5120028.html有以下几个诀窍:1、业务主键和数据库物理主键分离在抽象系统业务模型时,我们都习惯于根据业务的情况定义出一个表的唯一不重复的关键字(主键)。然而,更好的做法,是不论具体业务如何,把所有的表的主键都定义成Generator支持下的自增长整数,作为记录编号(命名为xxx_key),把“业务主键”定义为不可重复的索引(甚至于根本不用定义,如果没有特殊的检索要

3、求的话)。在这种主键设计策略中,隐含着一个很深的道理,那就是“将业务逻辑和物理逻辑脱离开”的原则,实体的业务逻辑并不直接运用到真实的物理逻辑实现上。以单据表作为一个典型的例子,单据往往具备着一个不可重复的“单据编号”,一般它的数据类型是一个几十字节的字符串,它相当于是“单据”这个实体在业务逻辑上体现出来的主键。而在这里的规范中,却并不以这个字符串编号为真正物理上的主键,而是采用一个自增长的KEY取代它成为真正的物理上的主键。以此为基础,表与表之间的关联也同样以一个单独整数字段进行关联,这个字段对于主表,一般就是主表的主键字段。在外键的创建中,一般也尽量避免多字段关联的联合外键。在Fi

4、reBird数据库中,这种设计方式利用了FireBird特有的生成器(Generator)机制来实现。在创建外键时,一般都将外键的cascadedelete打开,利用数据库的级联删除功能达到了自动删除从表记录。2、索引的建立要为可能频繁发生的检索的条件组合建立相应的索引。如果定义了主从表的外键关联,那么系统会自动创建所需的索引。但针对不同的数据类型,索引的执行效率也是不同的。对于复杂的查询,可以通过plan子句告诉服务器采用怎样的索引进行数据检索,格式如下:Select语句 PLAN(  表名1 INDEX(索引名称),  表名2 INDEX(索引名称)  )3、自增

5、长字段的建立建立表的时候,在IBExpert中通过打开字段的AutoInc属性设定某字段是自增长字段后,同时建立相应的生成器和触发器;通过调用SQL语句来得到服务器端生成器的值并使之加1:Selectgen_id(AGenerator,1)asidfromrdb$database用一个ibquery控件来执行该语句产生永不重复整数序列。一般情况下,一个表对应着一个生成器。但是在某些情况下,可能多个表共用一个生成器,也可能一个表用多个生成器4、应尽量避免字符串字段作为关联查询的关联条件。5、应尽量避免多重字段、字符串字段(特别是常字符串)作为主键、关联查询的关联字段6、在系统构架方面应

6、该采取划分业务数据生存期的方式,在系统中采用动态创建数据库的机制,使不同的业务区间对应一个单独的数据库文件,比如说,一个会计核算年对应一个GDB文件,到年底核算时,为下年创建一个新的数据库,新数据库中的常量数据从老数据库中继承过来,而动态的业务数据从0开始。划分动态数据库分区的原则就是,把每个数据库文件大约控制在600M左右(更大些也可以,但不太利于备份刻录到光盘上) 看了你的经验收益良多.你在里边提到:在SQL语句不是很多的情况下,应避免在代码中书写动态SQL语句,特别是对于把数据显示界面相关联的Select语句更不推荐使用动态SQL,而是要将不同的语句放在不同的Query元件中,

7、而且将查询控件的字段实体化====================================================这样的话只要用良用到条件查询,就要切换DataSource相关的数据集组件,而且代码中也要用DataSource.DataSet的方式引用数据集来进行同步数据集操作.TIME:2006-12-214:05:31  IP:Protected.NET时代的win32英雄广泛的使用自增长整数作为主键,是不是会在大批量数据的导入时遇到很大的麻烦?如果两表关联还是用的业务主键相关联那么逻辑主键似乎没有存在的必要逻辑主键存在的必要就是提供检索=============

8、=================================两表用逻辑主键相关联这样的确很大程度的精简了两表关联的SQL处理可是会不会造成两表关联的不正确呢?说的非常好。在数据导入过程中,尤其是从逻辑主键的设计升级到物理主键的设计时,两表的关联确实需要一个将逻辑主键关联转化为物理主键关联的过程。处理这种做法,我有两个方法。其一就是客户端处理,方法是在客户端放一个内存表,预先载入被关联的基础数据表,其中既包含物理主键,又包含逻辑主键(别的字段可以省略)

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。