数据库物理设计经验谈
日期:2007年8月10日 作者: 查看:[大字体 中字体 小字体]-
概述
我们无论使用哪种数据库,无论怎样设计数据库,我想都会遵从一个原则:数据安全性和性能高效这两个主要方面,但是关于这两个方面的话题太多,在这里就不一一陈述,我只是从数据库物理分布设计方面和大家一起简单的探讨一下。 因为数据库良好的物理分布设计也是对数据安全性和性能高效影响比较大, 就象我们在建大楼之前一定要先打好地基一样。
現实中我们在应用各种不同数据库的时候,往往会忽略数据库的物理布局,只有在数据库性能遇到问题的时候才去考虑,但这是得不偿失的,这样一来不仅会导致与设计相关的问题出现,而且会影响性能的调整效果,所以我们在创建数据库之前先进行规划数据库的物理布局也是很必要的,这也符合人们常说的”磨刀不误砍柴工”的道理。下面我就以Oracle为例从优化操作系统、磁盘布局优化和配置、数据库初始化参数的选择、设置和管理内存、设置和管理CPU、设置和管理表空间、设置和管理回滚段、设置和管理联机重做日志、设置和管理归档重做日志、设置和管理控制文件等几个方面作以陈述。
一. 优化操作系统
为了获得最佳的服务器性能, 对操作系统的优化也是很必要的, 因为操作系统性能问题通常会涉及到进程管理、内存管理、调度等,所以用户需要确保有足够的I/O带宽、CPU的处理能力、交换空间来尽可能的降低系统时间。如果应用程序在缓冲区出现过多的”忙”等待, 那么系统调用的进程将会增加, 虽然可以通过优化SQL语句等方法来降低调用的数目,但是这也是治病不治根的。用户可以启动Oracle的初始化参数timed_statistics来增加系统调用的数目, 反之如果关闭此参数,那么系统调用的数目也会减少。操作系统的缓存和Oracle自己的缓存管理是不相冲突的, 虽然它能消耗一定的资源, 但是它对性能还是有一定好处的, 因为一般所有数据库的I/O需要通过系统文件缓存来访问文件存储器。
Oracle的操作可能会用到许多的进程(有的系统叫线程), 所以用户应该确保所有Oracle的进程、后台进程、用户进程具有相同的优先级, 否则就会产生恶化的现象, 导致高优先级的进程等待低优先级的进程处理完毕释放出CPU资源后再处理, 更不能将Oracle的后台进程绑定到CPU中, 这样一来也会导致被绑定的进程被CPU资源饿死。
比较好的是有些操作系统提供有操作系统资源管理器(Operating System Resource Manager), 通过它可以对系统资源访问划分优先级来降低峰值负载模式的影响,来实现多种管理策略和方法,控制用户资源的访问,限制用户资源的可消耗量。
二.磁盘布局优化和配置
在大多数产品数据库应用中,数据库文件一般都放在磁盘上,因此磁盘的良好使用和布局也是很重要的。磁盘布局的目标是:磁盘性能是不能阻碍实现数据库性能,数据库磁盘必须专用于数据库文件,否则非数据库将会影响到该数据库,且这种影响是不可预测的; 系统硬件和镜像必须满足恢复和性能的要求,数据文件大小和I/O不能超过磁盘的大小和I/O,数据库一定是可以恢复的,必须使后台进程之间的竞争最小化。在规划硬盘配置时也要注意:首先所用的磁盘容量,有时用多个容量小的磁盘比用一个大的磁盘效果更好,因为可以进行更高级的并行I/O操作; 其次磁盘的速度,如反应时间和寻道时间都将影响I/O的性能, 可以考虑使用合适的文件系统作为数据文件; 再者使用合适的RAID。
RAID(Redundant Arrays of IneXPensive Disks)廉价冗余阵列可以改善数据的可靠性,而I/O的性能又取决于RAID配置的方式:RAID1可以提供比较好的可靠性和较快的读取速度,但写的代价比较大,所以不适合频繁写的应用;RAID0+1在原RAID1的基础上读取的速度更快,所以这也是大家常会选择的方式;RAID5可以提供比较好的可靠性,有顺序的读操作比较适合这种方式,但性能会受到影响,对于写操作频繁的应用也不适合这种。对于该选择那种方式不能一概而论,要根据具体的情况而定。
有些应用软件先天性受到磁盘的I/O限制, 所以在设计的时候应尽量使Oracle的性能不受I/O的限制, 所以在设计一个I/O系统时要考虑以下的数据库需要: 存储磁盘的最小字节; 可用性, 如24X7, 9X5; 性能如I/O的输出和响应时间。决定Oracle文件的I/O统计信息可以来查询下列: 物理读数量(V$filestat.phyrds)、物理写数量(V$filestat.phywrites)、平均时间, I/O=物理读+物理写。而I/O的平均数量=(物理读+物理写)/共用秒数), 估计这个数据对于新系统是有用的, 可以查询出新应用程序的I/O需求与系统的I/O能力是否匹配以便及时调整。 - [1] [2] [3] [4] [5] [6] [7] 下一页
-
- 数据库物理设计经验谈 相关文章:
- ·Excel XP函数实用教程精华集
- ·ASP函数库
- ·轻松了解MySQL数据库中的CONVERT()
- ·在Excel中将文本转换为数字的七种方法
- ·关于oracle日期函数的介绍和使用
- ·图片保存到数据库和从数据库读取图片并显示(c#)
- ·UDT协议-基于UDP的可靠数据传输协议
- ·ASP.NET中数据库的操作初步----增加、删除、修改
- ·数据库连接字符串大全
- ·oracle函数之常见单行字符串函数
- 数据库物理设计经验谈 相关软件
- ·DataExplore数据恢复大师 V2.5
- ·数据结构与算法
- ·我有数备份专家(免引导盘GHOST) V1.6.1 绿色版
- ·小学数学伴侣 V5.0
- ·MathType 数学公式编辑器 V5.2 汉化版
- ·P8数字娱乐传播平台 V1.0.1.55
- ·数字小键盘指法练习 V1.2
- ·初中数学课件大全 V1.0
- ·数码宝贝2
- ·数谜(Kakuro Quest)
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
上一篇:MySQL中文参考手册3(MySQL邮件列表及如何提问或报告错误)
精品推荐
热点TOP10
- ·精妙SQL语句收集
- ·SQLPLUS命令的使用大全
- ·收集的host文件网站黑名单
- ·数据库连接字符串大全
- ·SQL Server 练习题
- ·SQL中CASE的用法
- ·认识VF--Visual FoxPro 漫谈
- ·什么是SQL注入法攻击
- ·一道褒贬不一的SQL考试题
- ·学习SQL语句之SQL语句大全
- ·SQL数据库高级教程:SQL UNION 和 UNION ALL
- ·SQL Server不存在或访问被拒绝 问题的解决
- ·SQLSERVER中,数据库同步的实现
- ·MS-SQL开发常用汇总和t-sql技巧集锦
- ·MySQL管理工具SQLyog最新6.1下载
- ·“SQL Server不存在或访问被拒绝”问题的解决
- ·MySQL数据库学习手册之MySQL客户工具和API
- ·学习SQL SERVER的存储过程-之一认识存储过程语法
- ·如何删除数据库中的冗余数据(翻译)
- ·数据库物理设计经验谈
特别推荐
- ·什么是SQL注入法攻击
- ·用SQL语句删除重复记录的四种方法
- ·数据库查询优化
- ·MySQL常见错误问答!
- ·MySQL从后门进企业市场
- ·精妙SQL语句收集
- ·如何在WinNT/2K/XP下启动纯DOS
- ·自己动手做一个SQL解释器
- ·SQL SERVER实用技巧
- ·动态创建MSSQL数据库表存储过程
- ·数据库的分页问题
- ·DM分区软件使用详解
- ·对ADSL接入方式铜缆可用线对率分析
- ·收集的host文件网站黑名单
- ·修复SQL Server 2000数据库之实战经验
- ·实用的存储过程之一
- ·IIS5 ISAPI Extension Back Door
- ·MySQL中文参考手册7(MySQL存取权限系统)grant设置密码password
- ·Sql server 如何得到汉字的声母
- ·数据库物理设计经验谈
