oracle物理设计原则
- 格式:doc
- 大小:136.50 KB
- 文档页数:19
1.1软件系统设计中的详细设计所涉及的数据库物理设计1.1.1项目中的数据库表结构设计1、本项目的数据库(1)采用MS SQLServer2000本项目的数据库采用MS SQLServer2000,在前面工作的基础上,根据对其进行的各种分析(包括数据分析),提出数据库建设方案。
数据库建模工作主要利用类图建模。
经过分析,依据数据库的规范形式,本着减少冗余的原则,可以整理出该系统所需要的数据库表(2)本项目的数据库设计特点因考虑网络执行速度及其自身数据库的太小,设计基本采用的是一层设计,没有设计父子表;数据关系基本采用的是同关系字段以避免产生复杂的父子关系结构,从而简化后面的实体模块设计,同时也提高数据访问的速度。
2、设计数据库中的各个表为了唯一标识每条数据库记录,我们需要一个主键。
在MS SQL Server和Oracle中可以使用自动递增的主键生成方式。
但是很多数据库不支持自动递增的主键,考虑到移植性不采用自动递增的主键生成方式。
(1)数据库表BookAuthor●数据库表的需求分析:该BookAuthor表中的各个字段的功能说明如下该表主要代表图书的作者信息,其中authorID为主键,而BookInfo表中的bookID 主键为本表中的外键。
该BookAuthor数据库表与BookInfo表形成“一对多”的关联关系。
●数据库表的逻辑设计:BookAuthor表的结构如下●创建该表的SQL语句create table BookAuthor (authorID int primary key,authorName nvarchar (50),authorTelPhone nvarchar (50),bookID int,authorKind int,);注意:必须对数据库表设计出主键以满足EJB 中findByPrimaryKey 的要求。
(2)数据库表BookInfo●数据库表的需求分析:该BookInfo表中的各个字段的功能说明如下该表主要代表图书的信息,其中bookID为主键,而BookAuthor数据库表中的authorID主键为本表中的外键。
oracle数据库物理储存结构和原理
Oracle数据库的物理储存结构是由数据文件、控制文件和重做日志文件三部分组成的。
其中,数据文件是存储实际数据的文件,控制文件是用于记录数据库的结构信息和管理数据文件的文件,重做日志文件则是用于记录数据库中数据的变动情况,以便进行恢复操作。
Oracle数据库的数据文件是由一系列数据块组成的,每个数据块的大小可以配置为2KB、4KB、8KB、16KB等不同大小。
同时,Oracle 数据库在存储数据时采用了多种技术,包括行式存储和列式存储等,以提高数据的存储效率和检索效率。
在Oracle数据库中,数据文件的存储方式也非常灵活,可以采用裸设备方式、文件系统方式、ASM(Automatic Storage Management)方式等多种方式进行存储。
不同的存储方式具有各自的优缺点,可以根据实际需求进行选择。
除了数据文件之外,Oracle数据库的控制文件也非常重要。
控制文件不仅记录了数据库的结构信息,还记录了数据文件的位置、大小等信息,以便进行管理和维护。
同时,Oracle数据库还采用了多个控制文件的方式进行备份和恢复操作,以提高数据库的安全性和可靠性。
最后,Oracle数据库的重做日志文件也是非常重要的一部分。
重做日志文件记录了数据库中数据的变动情况,包括事务的开始、提交、回滚等操作,以便在系统故障或其他异常情况下进行恢复操作。
重做日志文件采用了循环缓冲区的方式进行存储和管理,同时还支持
多种模式的归档方式,以满足不同的业务需求。
數据庫物理設計經驗談数据库物理分布设计作者: CCBZZP概述我们无论使用哪种数据库,无论怎样设计数据库,我想都会遵从一个原则:数据安全性和性能高效这两个主要方面,但是关于这两个方面的话题太多,在这里就不一一陈述,我只是从数据库物理分布设计方面和大家一起简单的探讨一下。
因为数据库良好的物理分布设计也是对数据安全性和性能高效影响比较大, 就象我们在建大楼之前一定要先打好地基一样。
現实中我们在应用各种不同数据库的时候,往往会忽略数据库的物理布局,只有在数据库性能遇到问题的时候才去考虑,但这是得不偿失的,这样一来不仅会导致与设计相关的问题出现,而且会影响性能的调整效果,所以我们在创建数据库之前先进行规划数据库的物理布局也是很必要的,这也符合人们常说的”磨刀不误砍柴工”的道理。
下面我就以Oracle为例从优化操作系统、磁盘布局优化和配置、数据库初始化参数的选择、设置和管理内存、设置和管理CPU、设置和管理表空间、设置和管理回滚段、设置和管理联机重做日志、设置和管理归档重做日志、设置和管理控制文件等几个方面作以陈述。
一. 优化操作系统为了获得最佳的服务器性能, 对操作系统的优化也是很必要的, 因为操作系统性能问题通常会涉及到进程管理、内存管理、调度等,所以用户需要确保有足够的I/O带宽、CPU的处理能力、交换空间来尽可能的降低系统时间。
如果应用程序在缓冲区出现过多的”忙”等待, 那么系统调用的进程将会增加, 虽然可以通过优化SQL语句等方法来降低调用的数目,但是这也是治病不治根的。
用户可以启动Oracle的初始化参数timed_statistics来增加系统调用的数目, 反之如果关闭此参数,那么系统调用的数目也会减少。
操作系统的缓存和Oracle自己的缓存管理是不相冲突的, 虽然它能消耗一定的资源, 但是它对性能还是有一定好处的, 因为一般所有数据库的I/O需要通过系统文件缓存来访问文件存储器。
Oracle的操作可能会用到许多的进程(有的系统叫线程), 所以用户应该确保所有Oracle的进程、后台进程、用户进程具有相同的优先级, 否则就会产生恶化的现象, 导致高优先级的进程等待低优先级的进程处理完毕释放出CPU资源后再处理, 更不能将Oracle的后台进程绑定到CPU中, 这样一来也会导致被绑定的进程被CPU资源饿死。
数据库设计物理设计(原创实用版)目录1.物理设计的概念和目的2.物理设计的主要步骤3.物理设计的关键技术4.物理设计的实际应用案例5.物理设计的发展趋势和未来展望正文数据库设计物理设计是指在逻辑设计的基础上,通过对数据存储结构、存储方式、存取路径、存储空间分配等方面的具体设计,使数据库能够在物理设备上实现高效、安全、可靠的存储和访问。
物理设计的目的是为了提高数据库的性能,包括查询速度、数据存储效率和系统可扩展性。
物理设计的主要步骤包括:数据存储选择、存储结构设计、存取路径设计、存储空间分配和物理优化。
数据存储选择需要根据数据的性质和访问模式,选择合适的存储设备和介质。
存储结构设计则是根据数据的存储需求和访问模式,设计合适的存储结构,如顺序存储、链式存储、索引存储等。
存取路径设计是为了优化数据的存取路径,提高数据的访问速度,通常采用 B 树、索引等技术。
存储空间分配需要合理分配数据存储空间,以提高存储效率和系统性能。
物理优化则是在物理设计的基础上,通过调整存储结构、存取路径等,进一步提高数据库的性能。
物理设计的关键技术包括:存储管理技术、索引技术、缓存技术、数据压缩技术等。
存储管理技术用于管理数据库的存储空间,包括存储分配、存储回收和存储优化等。
索引技术用于提高数据库的查询速度,包括 B 树、哈希索引、全文索引等。
缓存技术用于提高数据库的访问速度,包括页缓存、行缓存、列缓存等。
数据压缩技术用于减小数据库的存储空间,提高存储效率,包括数据压缩、编码技术等。
物理设计的实际应用案例包括:金融行业的客户数据存储、电商行业的订单数据存储、医疗行业的病历数据存储等。
以金融行业的客户数据存储为例,需要设计合适的存储结构和存取路径,以满足频繁的客户信息查询和修改需求。
同时,还需要采用数据压缩和加密技术,保证数据的安全性和隐私性。
物理设计的发展趋势和未来展望包括:大数据时代的存储挑战、云计算环境下的数据存储需求、人工智能和机器学习对数据库物理设计的影响等。
数据库设计物理设计
数据库的物理设计主要包括以下几方面:
1. 硬件选择:选择适合数据库应用的硬件平台,包括服务器和存储设备。
考虑数据库的规模、性能要求和可靠性需求,选择合适的硬件配置。
2. 存储设备布局:根据数据库的大小和访问模式,确定数据存储的布局。
常见的存储布局包括磁盘阵列(RAID)、分区和表空间划分等。
3. 数据库文件组织方式:确定数据在物理磁盘上的组织方式,包括表空间、数据文件和日志文件等。
可以选择不同的组织方式来满足不同的访问需求,如堆文件组织方式、索引文件组织方式和哈希文件组织方式等。
4. 数据库缓存管理:通过设置数据库缓冲区大小和缓存调度策略来提高数据库的性能。
合理设置缓冲区大小可以避免频繁的磁盘读写,提高查询性能。
5. 数据库备份和恢复策略:制定数据库的备份和恢复策略,包括全量备份、增量备份和差异备份等。
根据业务需求和数据重要性确定备份频率和保留时间。
6. 数据库性能调优:通过对数据库的物理设计进行优化,提高数据库的性能。
可以通过建立合适的索引、优化查询语句和调整参数等方式来达到性能优化的目的。
7. 数据库安全性考虑:通过合理的物理设计来保护数据库的安全性,包括访问控制、权限管理和加密等。
确保只有授权用户可以访问数据库,并且数据在传输和存储过程中得到保护。
综上所述,数据库的物理设计是对数据库进行硬件选择、存储设备布局、文件组织方式、缓存管理、备份和恢复策略、性能调优和安全性考虑等方面的设计和优化。
这些设计和优化可以提高数据库的性能、可靠性和安全性,满足业务需求。
数据库系统中的物理设计和优化方法随着信息技术的发展,越来越多的企业、机构和组织开始采用数据库系统进行数据管理和存储。
数据库系统不仅提高了数据管理的效率和安全性,还可以为企业提供更好的决策支持和数据分析。
然而,在数据库系统的设计和开发中,物理设计和优化方法的正确运用非常重要,能够大大提高数据库系统的性能和效果。
一、物理设计的基本原则物理设计是指根据数据库逻辑设计,采用现有的硬件和操作系统环境来设计数据库系统的存储结构和物理对象。
物理设计的基本原则如下:1. 适当选择存储设备物理设计应该根据数据存储容量和性能需求来选择存储设备。
例如,对于大型数据库系统,应该选择高速硬盘(如RAID)来提高数据库的性能和容量;对于小型数据库系统,可以选择低速、廉价的存储设备来降低成本。
2. 性能优先数据库的性能和效果是物理设计的最重要目标。
为达到最优性能,物理设计应该优化系统的存储结构、存储方式、索引结构和查询性能等方面。
3. 数据安全性物理设计应该考虑数据的安全性。
例如,采用数据备份和恢复功能、嵌入式安全特性、事务控制等技术来保护数据的安全性。
4. 可维护性物理设计应该考虑数据库的可维护性,并且应该能够方便地更新或修改系统而不影响数据的正常使用。
例如,合理的备份和恢复策略、数据库的容量扩展和缩减等都应该是物理设计的考量因素。
二、物理优化的方法物理优化是指通过优化数据库的物理存储结构、访问路径和查询优化等方式来提高数据库的性能和效果。
下面是一些常见的物理优化方法:1. 索引优化索引是物理优化的一个重要环节。
正确地选择、建立和使用索引能够大大提高数据库的查询效率。
索引的优化可以从以下几个方面考虑:(1) 建立合理的索引类型合理的索引类型可以大大提高查询的效率。
例如,表的主键、外键、唯一索引等认为建立适当的索引类型能够提高查询效率。
(2) 建立合理的索引数量并不是每个字段都需要建立索引。
过多的索引会影响数据库的性能,因此应该根据具体情况来选择建立索引。
数据库物理模型设计原则数据库的物理模型设计是数据库开发过程中的重要环节,它直接决定了数据库的性能、可扩展性和数据的安全性。
在进行物理模型设计时,需要遵循一些原则以确保数据库的有效性和稳定性。
本文将介绍一些常用的数据库物理模型设计原则,以帮助读者更加全面地了解和掌握这一领域。
一、规范命名在数据库物理模型设计中,规范命名是非常重要的原则之一。
良好的命名规范可以提高数据库的可读性和可维护性。
在为表、字段、索引等对象命名时,应尽量使用有意义的、描述性的名称,避免使用含糊不清或者过于简短的名称。
此外,还应避免使用保留字和特殊字符,以免引起命名冲突或者转义问题。
二、合理选择数据类型和长度在数据库物理模型设计中,选择合适的数据类型和长度对于数据的存储和处理是至关重要的。
如果选择的数据类型过于宽松或者过于严格,都可能导致空间浪费或者数据截断的问题。
因此,在选择数据类型时应根据实际需求和数据特征进行权衡,尽量选择最小的数据类型来存储数据,同时还要保证数据的完整性和准确性。
三、合理设置索引索引是数据库中常用的性能优化手段之一,它可以加快数据的检索速度。
在进行数据库物理模型设计时,需要合理地设置索引以提高数据库的查询性能。
一般来说,对于经常被查询的字段,可以考虑在其上创建索引;而对于更新频率较高的字段,则应慎重考虑是否创建索引,以免影响数据的更新操作。
四、避免数据冗余数据冗余是数据库设计中需要尽量避免的问题之一。
过多的数据冗余不仅会占用存储空间,还会增加数据更新和维护的难度。
在进行物理模型设计时,应尽量将数据拆分到不同的表中,避免重复存储相同的数据。
此外,还可以通过合理的关联和连接来避免冗余数据的出现。
五、确保数据安全数据安全是数据库设计中需要高度关注的方面。
在进行数据库物理模型设计时,应采取一系列的措施来保护数据的安全性。
例如,可以使用合适的权限管理和用户认证机制,限制用户对数据库的访问和操作权限;还可以进行数据加密,确保敏感数据在传输和存储过程中的安全。
数据库物理设计原则1.1 数据库环境配置原则1.1.1 操作系统环境:对于中小型数据库系统,采用linux操作系统比较合适,对于数据库冗余要求负载均衡能力要求较高的系统,可以采用Oracle9i RAC的集群数据库的方法,集群节点数范围在2—64个。
对于大型数据库系统,可以采用Sun Solaris SPARC 64位小型机系统或HP 9000 系列小型机系统。
RAD5 适合只读操作的数据库,RAD1 适合OLTP数据库1.1.2 内存要求对于linux操作系统下的数据库,由于在正常情况下Oracle对SGA的管理能力不超过1.7G。
所以总的物理内存在4G以下。
SGA的大小为物理内存的50%—75%。
对于64位的小型系统,Oracle数据库对SGA的管理超过2G的限制,SGA设计在一个合适的范围内:物理内存的50%—70%,当SGA过大的时候会导致内存分页,影响系统性能。
1.1.3 交换区设计当物理内存在2G以下的情况下,交换分区swap为物理内存的3倍,当物理内存>2G的情况下,swap大小为物理内存的1—2倍。
1.1.4 其他环境变量参考Oracle相关的安装文档和随机文档。
1.2 数据库设计原则1.2.1 数据库SID数据库SID是唯一标志数据库的符号,命名长度不能超过5个字符。
对于单节点数据库,以字符开头的5个长度以内字串作为SID的命名。
对于集群数据库,当命名SID后,各节点SID自动命名为SIDnn,其中n n为节点号:1,2,…,64。
例如rac1、rac2、rac24。
1.2.2 数据库全局名数据库全局名称:1.2.3 数据库类型选择对于海量数据库系统,采用data warehouse的类型。
对于小型数据库或OLTP类型的数据库,采用Transaction Processing类型。
1.2.4 数据库连接类型选择Oracle数据库有专用服务器连接类型和多线程服务器MTS连接类型。
对于批处理服务,需要专用服务器连接方式,而对于OLTP服务则MTS的连接方式比较合适。
由于采用MTS后,可以通过配置网络服务实现某些特定批处理服务采用专用服务器连接方式,所以数据库设计时一般采用MTS类型。
1.2.5 数据库SGA配置数据库SGA可以采用手工配置或按物理内存比例配置,在数据库初始设计阶段采用按比例配置方式,在实际应用中按系统调优方式修改SGA。
1.2.6 数据库字符集选择为了使数据库能够正确支持多国语言,必须配置合适的数据库字符集,采用UTF8字符集。
注意:如果没有大对象,在使用过程中进行语言转换没有什么影响,具体过程如下(切记设定的字符集必须是ORACLE支持,不然不能start)1.2.7 数据库其他参数配置1.2.7.1 DB_FILESDb_files是数据库能够同时打开的文件数量,默认值是200个。
当数据库规划时文件数量FILES接近或超过200个时候,按以下估计值配置:1.2.7.2 Db_block_size一个extent要是5个blocks的倍数为好,如:一个blocks是4096字节,那一个extent就是2M、4M或8M为好。
Db_block_size是数据库最小物理单元,一旦数据库创建完成,该参数无法修改,db_block_size 按以下规则调整:数据仓库类型: db_block_size尽可能大,采用8192 或 16384OLTP类型: db_block_size 用比较小的取值范围: 2048 或 4096Blocks推荐是系统操作的块倍数(裸设备块大小是512字节,NTFS是 4K,使用8K的方式在大部分系统上通用)。
1.2.8 数据库控制文件配置1.2.8.1 控制文件镜象多个控制文件存放在不同的物理位置。
1.2.8.2 控制文件配置控制文件中参数设置,最大的数据文件数量不能小于数据库参数db_files。
1.2.9 数据库日志文件配置1.2.9.1 日志文件大小日志文件的大小由数据库事务处理量决定,在设计过程中,确保每20分钟切换一个日志文件。
所以对于批处理系统,日志文件大小为几百M 到几G的大小。
对于OLTP系统,日志文件大小为几百M以内。
1.2.9.2 日志文件组数量对于批处理系统,日志文件组为5—10组;对于OLTP系统,日志文件组为 3—5组,每组日志大小保持一致;对于集群数据库系统,每节点有各自独立的日志组。
1.2.9.3 日志成员数量为了确保日志能够镜象作用,每日志组的成员为2个。
1.2.10 数据库回滚段配置在Oracle9i数据库中,设计Undo表空间取代以前版本的回滚段表空间。
Undo 表空间大小的设计规范由以下公式计算:Undospace = UR * UPS *db_block_size+ 冗余量UR:表示在undo中保持的最长时间数(秒),由数据库参数UNDO_RETENTION值决定。
UPS:表示在undo中,每秒产生的数据库块数量。
例如:在数据库中保留2小时的回退数据,假定每小时产生200个数据库块。
则Undospace = 2 * 3600 * 200 * 4K = 5.8G1.2.11 数据库临时段表空间配置数据库临时段表空间根据实际生产环境情况调整其大小,表空间属性为自动扩展。
1.2.12 数据库系统表空间配置系统表空间大小1G左右,除了存放数据库数据字典的数据外,其他数据不得存储在系统表空间。
1.3 数据库表空间设计原则1.3.1 表空间大小定义原则当表空间大小小于操作系统对最大文件限制时,表空间由一个文件组成。
如果表空间大小大于操作系统对最大文件限制时,该表空间由多个数据文件组成,表空间的总大小为估算为:Tablespace + sum (数据段+索引段)*150%。
1.3.2 表空间扩展性设计原则表空间数据文件采用自动扩展的方式,扩展容量快大小按2的整数倍(1M、2M、4M、8M、16M、32M、64M)进行扩展,创建表空间时尽量采用nologing选项。
表空间的最大限制一般采用unlimited,除非确切知道表空间数据文件的最大使用范围。
(一般windows 32位系统的文件最大2G,64位的unix系统系统文件最大128G,但也要注意文件格式设定的文件大小),建议最大为2G。
表空间采用local管理方式,例如:1.4 裸设备的使用一个scsi设备可以 14个分区,unix操作系统256个分区,性能比文件系统方式高15%左右,空间大于要小于(实际分区大小减两个ORACLE的数据块),比如100M,大于为100000K,推荐在unix使用软连接(ln)方式把裸设备形成文件,用加入表空间时加resue 选项,当然也可只接把设备加入表空间,移动裸设备使用dd命令对于windows平台,oracle提供软连接工具,实现裸设备的使用,计算一条记录的长度2 数据库逻辑设计原则2.1 命名规范2.1.1 表属性规范2.1.1.1 表名前缀为Tbl_ 。
数据表名称必须以有特征含义的单词或缩写组成,中间可以用“_”分割,例如:tbl_pstn_detail。
表名称不能用双引号包含。
2.1.1.2 表分区名前缀为p 。
分区名必须有特定含义的单词或字串。
例如:tbl_pstn_detail 的分区p2004100101表示该分区存储 2004100101时段的数据。
2.1.1.3 字段名字段名称必须用字母开头,采用有特征含义的单词或缩写,不能用双引号包含。
2.1.1.4 主键名前缀为PK_。
主键名称应是前缀+表名+构成的字段名。
如果复合主键的构成字段较多,则只包含第一个字段。
表名可以去掉前缀。
2.1.1.5 外键名前缀为FK_。
外键名称应是前缀+ 外键表名 + 主键表名 + 外键表构成的字段名。
表名可以去掉前缀。
2.1.2 索引4.1.2.1 普通索引前缀为IDX_。
索引名称应是前缀+表名+构成的字段名。
如果复合索引的构成字段较多,则只包含第一个字段,并添加序号。
表名可以去掉前缀。
2.1.2.2 主键索引前缀为IDX_PK_。
索引名称应是前缀+表名+构成的主键字段名,在创建表时候用using index指定主键索引属性。
2.1.2.3 唯一所以前缀为IDX_UK_。
索引名称应是前缀+表名+构成的字段名。
2.1.2.4 外键索引前缀为IDX_FK_。
索引名称应是前缀+表名+构成的外键字段名。
2.1.2.5 函数索引前缀为IDX_func_。
索引名称应是前缀+表名+构成的特征表达字符。
2.1.2.6 蔟索引前缀为IDX_clu_。
索引名称应是前缀+表名+构成的簇字段。
2.1.3 视图前缀为V_。
按业务操作命名视图。
2.1.4 实体化视图前缀为MV_。
按业务操作命名实体化视图。
2.1.5 存储过程前缀为Proc_ 。
按业务操作命名存储过程2.1.6 触发器前缀为Trig_ 。
触发器名应是前缀 + 表名 + 触发器名。
2.1.7 函数前缀为Func_ 。
按业务操作命名函数2.1.8 数据包前缀为Pkg_ 。
按业务操作集合命名数据包。
2.1.9 序列前缀为Seq_ 。
按业务属性命名。
2.1.10 表空间2.1.10.1 公用表空间前缀为Tbs_ 。
根据存储的特性命名,例如: tbs_parameter 。
2.1.10.2 专用表空间Tbs_<表名称>_nn。
该表空间专门存储指定的某一个表,或某一表的若干个分区的数据2.1.11 数据文件<表空间名>nn.dbf 。
nn =1,2,3,4,…等。
2.1.12 普通变量前缀为Var_ 。
存放字符、数字、日期型变量。
2.1.13 游标变量前缀为Cur_ 。
存放游标记录集。
2.1.14 记录型变量前缀为Rec_ 。
存放记录型数据。
2.1.15 表类型变量前缀为Tab_ 。
存放表类型数据。
2.1.16 数据库链前缀为dbl_ 。
表示分布式数据库外部链接关系。
2.2 命名2.2.1 语言命名应该使用英文单词,避免使用拼音,特别不应该使用拼音简写。
命名不允许使用中文或者特殊字符。
英文单词使用用对象本身意义相对或相近的单词。
选择最简单或最通用的单词。
不能使用毫不相干的单词来命名当一个单词不能表达对象含义时,用词组组合,如果组合太长时,采用用简或缩写,缩写要基本能表达原单词的意义。
当出现对象名重名时,是不同类型对象时,加类型前缀或后缀以示区别。
2.2.2 大小写名称一律大写,以方便不同数据库移植,以及避免程序调用问题。
2.2.3 单词分隔命名的各单词之间可以使用下划线进行分隔。
2.2.4 保留字命名不允许使用SQL保留字。
2.2.5 命名长度表名、字段名、视图名长度应限制在20个字符内(含前缀)。
2.2.6 字段名称同一个字段名在一个数据库中只能代表一个意思。