大型数据库设计原则.doc

上传人:PIYPING 文档编号:11663568 上传时间:2021-08-29 格式:DOC 页数:2 大小:126.50KB
返回 下载 相关 举报
大型数据库设计原则.doc_第1页
第1页 / 共2页
大型数据库设计原则.doc_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

《大型数据库设计原则.doc》由会员分享,可在线阅读,更多相关《大型数据库设计原则.doc(2页珍藏版)》请在三一文库上搜索。

1、操作 2Fetch Mycursor into vcount- noEnd改为Update COUNT set 操作 1 for 条件 1Update Count set 操作 2 for 条件 2在某些场合 ,有时也非得使用游标 ,此时也可考 虑将符合条件的数据行转入临时表中 ,再对临时表定义游标进行操作 ,可时性能得到明显提高 。笔者 在某地市电信收费系统数据库后台程序设计中 ,对一个表 ( 3 万行中符合条件的 30 多行数据) 进行 游标 操 作 ( 硬 件 环 境 : PC 服 务 器 , PII266 64Mram ,NT4 . 0 Ms Sqlserver 6 . 5) 。示例如

2、下 : Create # tmp / 3 定义临时表 3 /(字段 1字段 2)Insert into # tmp select 3 from TOTAL where条件 / 3 TOTAL 中 3 万行 符合条件只有几十1命名的规范不同的数据库产品对对象的命名有不同的要求 ,因此 ,数据库中的各种对象的命名 、后台程序的代码编写应采用大小写敏感的形式 ,各种对象命名 长度不要超过 30 个字符 ,这样便于应用系统适应不同的数据库 。游标 ( Cursor) 的慎用游标提供了对特定集合中逐行扫描的手段 ,一 般使用游标逐行遍历数据 ,根据取出的数据不同条 件进行不同的操作 ,尤其对多表和大表定

3、义的游标(大的数据集合) 循环很容易使程序进入一个漫长的等待甚至死机 ,笔者在某市住房公积金管理系统 进行日终帐户滚积数计息处理时 ,对一个 10 万个帐 户的游标处理导致程序进入了一个无限期的等待(后经测算需 48 个小时才能完成) ( 硬件环境 : Al2pha/ 4000 128Mram , Sco Unix , Sybase11 . 0) , 后根据 不 同的条件改成不同的 UPDATE 语句得以在二十分钟 之内完成 。示例如下 :2行3 /Declare Mycursor cursor for select 3 from # tmp/ 3 对临时表定义游标 3 / 索引 ( Inde

4、x) 的使用原则 创建索引一般有以下两个目的 : 维护被索引列Declare MycursorCOUNTOpen Mycursorcursorforselectcount- nofrom3Fetch Mycursor intovcount- no的唯一性和提供快速访问表中数据的策略 。大型数据库有两种索引即簇索引和非簇索引 ,一个没有簇 索引的表是按堆结构存储数据 ,所有的数据均添加在表的尾部 ,而建立了簇索引的表 ,其数据在物理上 会按照簇索引键的顺序存储 ,一个表只允许有一个簇索引 ,因此 ,根据 B 树结构 ,可以理解添加任何一 种索引均能提高按索引列查询的速度 ,但会降低插入 、更新

5、、删除操作的性能 ,尤其是当填充因子 ( FillFactor) 较大时 。所以对索引较多的表进行频繁的插While ( sqlstatus = 0)BeginIf vcount - no = 条件 1操作 1If vcount- no = 条件 2收稿日期 :2001 03 21作者简介 :张海龙 ,男 ,1970 年出生 ,1991 年毕业于大连理工大学 ,从充因子 ,以便在各数据页中留下较多的自由空间 ,减提交语句时 ,这时才把物理数据写入磁盘 。少页分割及重新组织的工作 。6数据库性能调整在计算机硬件配置和网络设计确定的情况下 ,4数据的一致性和完整性为了保证数据库的一致性和完整性 ,

6、设计人员影响到应用系统性能的因素不外乎为数据库性能和客户端程序设计 。而大多数数据库设计员采用两步 法进行数据库设计 :首先进行逻辑设计 ,而后进行物理设计 。数据库逻辑设计去除了所有冗余数据 ,提高了数据吞吐速度 ,保证了数据的完整性 ,清楚地表 达数据元素之间的关系 。而对于多表之间的关联查 询 (尤其是大数据表) 时 ,其性能将会降低 ,同时也提高了客户端程序的编程难度 ,因此 ,物理设计需折衷往往会设计过多的表间关联 ( Relation) ,尽可能的降低数据的冗余 。表间关联是一种强制性措施 ,建立 后 ,对 父 表 ( Parent Table) 和 子 表 ( Child Tab

7、le ) 的 插入 、更新 、删除操作均要占用系统的开销 ,另外 ,最好不要用 Identify 属性字段作为主键与子表关联 。如 果数据冗余低 ,数据的完整性容易得到保证 ,但增加了表间连接查询的操作 ,为了提高系统的响应时间 ,合理的数据冗余也是必要的 。使用规则 ( Rule) 和约 束 ( Check) 来防止系统操作人员误输入造成数据的错误是设计人员的另一种常用手段 ,但是 ,不必要的规则和约束也会占用系统的不必要开销 ,需要注意 的是 ,约束对数据的有效性验证要比规则快 。所有这些 ,设计人员在设计阶段应根据系统操作的类型 、 频度加以均衡考虑 。考虑 ,根据业务规则 ,确定对关联

8、表的数据量大小 、数据项的访问频度 ,对此数据表频繁的关联查询应适当提高数据冗余设计 。7数据类型的选择数据类型的合理选择对于数据库的性能和操作具有很大的影响 ,有关这方面的书籍也有不少的阐述 ,这里主要介绍几点经验 。Identify 字段不要作为表的主键与其它表关联 ,这将会影响到该表的数据迁移 。Text 和 Image 字段属 指 针 型 数 据 , 主 要 用 来 存 放二进制大型对象 (BLOB) 。这类数据的操作相比 其它数据类型较慢 ,因此要避开使用 。日期型字段的优点是有众多的日期函数支持 , 因此 ,在日期的大小比较 、加减操作上非常简单 。但 是 ,在按照日期作为条件的查

9、询操作也要用函数 ,相比其它数据类型速度上就慢许多 ,因为用函数作为 查询的条件时 ,服务器无法用先进的性能策略来优 化查询而只能进行表扫描遍历每行 。例如 : 要 从 DAT- TAB1 中 ( 其 中 有 一 个 名 为DATE 的日期字段) 查询 1998 年的所有记录 。5事务的陷阱事务是在一次性完成的一组操作 。虽然这些操作是单个的操作 ,SQL Server 能够保证这组操作要么全部都完成 ,要么一点都不做 。大型数据库的这一 特性 ,使得数据的完整性得到了极大的保证 。众 所 周 知 , SQL Server 为 每 个 独 立 的 SQL 语句都提供了隐含的事务控制 ,使得每个

10、 DML 的数 据操作得以完整提交或回滚 , 但是 SQL Server 还提供了显式事务控制语句B EGIN TRANSACTION 开始一个事务 COMMIT TRANSACTION 提交一个事务 ROLLBACK TRANSACTION 回滚一个事务 事务可以嵌套 ,可以通过全局变量 trancount检索到连接的事务处理嵌套层次 。需要加以特别注 意并且极容易使编程人员犯错误的是 ,每个显示或 隐含的事物开始都使得该变量加 1 ,每个事务的提 交使该变量减 1 ,每个事务的回滚都会使得该变量 置 0 ,而只有当该变量为 0 时的事务提交 ( 最后一个Select 3DATE) = 19

11、98from DAT- TAB1 where datepart ( yy ,责任编辑 :姚彦茹( 上接第 18 页)For i = n - 1 To 0 Step k = i 3 Rndmx = pt ( k) . xmy = pt ( k) . y方块坐标从数组中删掉pt ( k) . y = pt (i) . yFor j = 0 To 20000Next jNext i- 1随机显示小方块延时Pic2BitBlt PicDest . hDC , mx , my , size , size ,Src . hDC , mx , my , SRCCOPY以上代码均在 VB6 . 0 下调试通过 。责任编辑 :杨立民pt ( k) . x = pt (i) . x将已经显示的小

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1