
一个设计良好的数据库系统很少遇到效率问题,也就是说一般不需要经常优化。通过大量数据库系统所进行的调查结果显示,绝大多数系统的效率问题都是由于数据库系统的设计和程序的开发所引起的,因此如果数据库系统的设计和应用程序的开发阶段的质量得到足够的保证,多数数据库系统以后的优化工作都会变得十分轻松。
一个好的数据库系统,设计固然是关键,但当软件开发完成后,通过不断地对数据库系统进行跟踪监控和优化也是必不可少的。可以认为,优化是数据库设计的一种顺延,和设计是相辅相成的。
性能调整需要的角色分配
Oracle性能优化涉及的方面很多,贯穿整个数据库管理系统始末,需要各个角色的数据库从业者通力配合,而单纯依靠数据库管理员(DBA)只能完成部分优化功能。
Oracle性能调整需要的角色分配如图15-1所示。

图15-1 Oracle性能调整需要的角色分配
应用周期中调整的代价
多数用户认为,只有在性能差时才需进行调优,但这时进行调优会使用某些最有效的调整策略发挥不了作用。如果用户不愿意重新设计应用,则只能通过内存优化和I/O 优化的办法提高性能。
通过良好的系统设计,就可以在应用系统的生命周期中消除性能调整的代价和挫折,图15-2所示的是在应用的生命周期中,调整的相对代价和收益,由图可知,最有效的调整时间是在设计阶段,在设计期间进行的调整,能以最低的代价获得最大的收益。

图15-2 应用周期中调整的代价
对于有明显提示的错误,只要时间充足,大多数DBA都能通过错误提示对未知问题做出基本的判断,找到改正错误的方向。
但是在大多数数据库操作人员的眼里,数据库的性能优化是看不见摸不着,难以掌握的。
之所以带给人这样的感觉,是因为数据库在出现性能问题时不报错,这就给诊断问题、解决问题带来了一定的难度。
数据库性能优化重点
在实际运作中,最好的切入点是优化数据库系统内存。
就像在前几篇文章中介绍的数据库体系结构中讲到的,只要将大多数磁盘(I/O)操作转换成内存操作,数据库系统的效率就会显著提高。
之后就要考虑优化数据库系统的I/O,因为如果能减少I/O的数据量或平衡I/O,系统的效率也会大大提高。
这两个部分将是DBA继续优化工作的重点。
数据库性能优化目标
数据库性能优化并没有统一的标准步骤,“不管黑猫白猫,捉住老鼠就是好猫”这句话在数据库性能优化领域也同样适用。
一个性能优化项目的目标可以简述如下。
(1)增大数据库吞吐量。如通过数据库优化增加每秒执行的事务数。
(2)高效利用服务器硬件资源。如开启并行充分利用CPU和存储I/O资源,以加快执行速度。
数据库性能优化基本方法
尽管引起数据库性能故障的原因千变万化,但是解决方法还是有一定规律可循的。
下面介绍一些常见的性能优化的基本方法。
(1)建立数据库性能基线(Baseline)。观察数据库运行正常时的各种指标,主要包括主机资源和数据库资源的消耗情况。
(2)寻找关键变化,对照性能基线找出偏差所在。
(3)定位主要影响因素,在进行数据库性能优化时抓住主要矛盾,找出影响数据库性能的“瓶颈”。
(4)检查操作系统资源,包括CPU、内存与I/O,以及网络资源。
参考书籍
《Oracle数据库系统管理与运维-微课视频版》
ISBN:9787302566106
作者:张立杰 主编 陈恒 陶永鹏 副主编
定价:69.9元

本书从Oracle数据库系统、管理以及运维的角度深入浅出地加以介绍,对于Oracle初学者以及Oracle相关从业人员都是适用的。本书的所有例题以及实验都是在最新的Oracle 19c版本下运行实验的。
全书共15个章节,包括Oracle系统、管理以及运维相关知识,内容包括oracle体系结构、数据库实例、存储结构、数据字典与动态性能视图、Oracle监控、数据库备份、数据库恢复、闪回技术以及数据库优化等;包括20个完整的项目案例。书中案例侧重应用性、趣味性强、分布合理、通俗易懂,使读者能够快速掌握Oracle系统、管理以及运维方面的的基础知识、方法、工具以及技巧。
张立杰
张立杰,硕士,副教授。研究方向为数据库、大数据。在各级学术期刊上发表论文10余篇,其中EI检索论文3篇,SCI检索论文1篇,计算机中文核心论文2篇。主持并完成省级项目3项;大连外国语大学校级教改项目4项、科研项目1项、校级开放课程一门。主编相关教材3部。从事Oracle专业教学十多年,为企事业员工,校企合作组织进行多次Oracle培训与讲座;受聘于Oracle Academy进行全球教师培训。
本书附有教学视频、课件、教学大纲、电子教案、教学日历、习题答案、案例源码等配套资源,可以作为大学计算机及相关专业的教材,也可以作为Oracle技术的培训教材。

精彩推荐
Oracle数据库系统管理与运维 | Oracle并发与一致性(附实例) Oracle数据库系统管理与运维 | Oracle备份实例 Oracle数据库系统管理与运维 | 项目案例 Oracle数据库系统管理与运维 | 数据库进程 Oracle数据库系统管理与运维 | Oracle体系结构 鸿蒙开发实例|构建轻量级智能穿戴设备用户界面
CCF CSP-J/S第一轮认证必考知识点:回溯算法 CCF CSP-J/S第一轮认证必考知识点:二值图像的最大连通块 CCF CSP-J/S第一轮认证必考知识点:哥德巴赫猜想 CCF CSP-J/S第一轮认证考纲详解 Python 韩信点兵思政案例(含优惠码) 机器学习案例︱人脸识别和人脸检测(附视频) Python ︱爬取天气预报信息(附视频) 《机器学习》实验指导书(附实验参考+代码) Python爬虫综合实战 │ 创建云起书院爬虫(附代码) Python爬虫实战 │ Email提醒(附代码) Python深度学习 │一文掌握卷积神经网络