Oracle数据库及应用程序优化开发者网络Oracle
来源:asp之家 发布时间:2010-07-18 13:02:00
介绍:细处着手,巧处用功。高手和菜鸟之间的差别就是:高手什么都知道,菜鸟知道一些。电脑小技巧收集最新奇招高招,让你轻松踏上高手之路。
摘 要:本文对ORACLE数据库及ORACLE应用程序的优化,进行了全面的分析与研究,并提出了自己的一些建议。
关 键 词:ORACLE,优化,数据库,SQL
1.引言
随着信息化时代的到来,人们开始广泛地使用数据库技术对大量而复杂的信息进行科学高效的管理。在数据库领域中的各种应用软件大量涌现,有Visual Foxpro,Power Builder等等,但其中ORACLE是这个领域中最优秀也是最流行的大型数据库应用软件。本文就在ORACAL中如何优化数据库及其应用程序进行了研究。
2.优化数据库
2.1 优化设置控制文件的个数,位置及其备份
建议CONTROL_FILE初始化参数中指定多个文件应大于2,并将控制文件镜像到不同位置,并要把这些控制文件备份到安全的磁盘中。
2.2优化设计表空间,数据文件的大小及位置
2.2.1设计表空间
尽量把同一时间对磁盘的读写操作分散开,如对一个表中数据进行更新时,数据库将同时去读该表中的数据和该表上的索引信息,如果把表的数据信息和索引信息都放在同一个数据文件中,则数据库的速度将会变慢。最好是把数据信息和索引信息分别放在不同磁盘的两个数据文件中,此时数据库对磁盘的读写操作将分散在两个磁盘上,速度将得到显著提高。因此在设计数据库的表空间和数据文件时,首先给表和表的索引分别创建两个表空间(存放用户数据的数据表空间和存放表索引的索引表空间)。另外,还根据该系统的数据量的大小及系统中的数据的性质不同,再考虑创建几个数据表空间或者给数据表空间添加几个数据文件。
2.2.2设计数据文件的大小
把记录大小相当的表放在同一个表空间中,这时一个表空间的存储参数设置,可以保证表中的记录都放在一个范围中,避免了一条记录跨范围存放,可以明显数据库的性能。
2.2.3设计数据文件的位置
为了避免磁盘的I/O操作冲突,应把数据文件创建在不同位置。
2.3优化设计重演日志文件
2.3.1 重演日志文件的大小
由于数据库在利用重演日志文件时是循环使用它们的,而且当LGWR进程在两个日志文件切换时,将自动产生一个检测点,所以重演日志文件的大小会直接影响到检测点出现的频率。而由于在数据库检测点时,对用户而言,数据库的速度会受影响,所以检测点的出现频率大,或者检测点正好出现在数据库处理数据高峰期,将会极大影响数据库的性能。因此,重演日志文件的大小设计,应考虑检测点出现的频率以及检测点应避开数据库处理数据的高峰期。
2.3.2 重演日志文件组的个数
在ARCHIVELOG模式下时,适当增加重演日志文件组的个数,可以降低数据库存档日志文件的频率。
2.3.3 重演日志文件的存档
应把重演日志文件的存档之处设置在磁盘读写更快的物理设备上。这样可以减少日志文件的存档时间。
2.4 回滚段的优化设计
2.4.1 回滚段数目的设计
要考虑数据库需要支持的并发事务的数目,因为每个回滚段有其所能支持的最大事务数,如果回滚段数目不够多,则有些新事务被迫要等待,将影响数据库的性能。
2.4.2 回滚段大小的设计
要考虑该回滚段能容纳数据库可能的最大事务的回滚项数。
2.5 优化数据库使用的内存配置
要调整数据库的高速缓冲区,共享池、重演日志缓冲区和进程全局区的大小平衡问题。
3.优化应用程序
3.1 采取统一的SQL程序
因为ORACLE在执行SQL文时,首先将当前要执行的SQL文与公共区域中保存的先前执行过的SQL文进行比较,SQL文相同时,就会跳过当前要执行的SQL文的解析处理,这样通过减少解析次数就加快SQL文的执行速度。
3.2 选取合适的SQL代码
在进行数据库操作时,同一结果可以用很多方法来实现。我们应当选取合适的SQL代码,使其更容易明了,并且运行速度更快。
3.3 明确列名
使用SELECT取得的列名一定要明确指定,并且应当使抽出的记录要尽量少。用SORT等的场合,因为ORACLE将必要的列的值放到WORK领域,因此减少列数也就节约了I/O回数。
3.4 注意结合索引的顺序
由于列的顺序不同而导致索引的作用效果不同。例如:(AGE,ADDRESS)顺序的结合索引。
WHERE AGE=28 AND ADDRESS='BEI JING' &结合索引有效
WHERE AGE=28 &结合索引有效
WHERE ADDRESS='BEI JING' &结全索引无效
3.5 注意WHERE的使用
3.5.1 索引列不要使用函数
由于索引列一旦使用了函数,索引就会变无效,因此在能用索引的情况下,尽量改变程序来利用索引。如:
WHERE SUBSTR(TELNO,2,2)='88'改为WHERE TELNO LIKE '88%'较好。
3.5.2 索引列不要使用NOT
由于索引列一旦使用不等于,索引就会变得无效,最后导致速度变慢。
3.5.3 不要用NULL
如果用了NULL,索引就会无效,变成全表检索,影响处理速度。
3.5.4 不要对索引列进行计算
如果对索引列进行计算,索引就会无效,也后导致速度变慢。
4.结束语
本文所提出的优化方法,能够起到提高ORACLE数据库性能以及提高ORACLE应用程序执行效率的作用。这仅是个人在实际工作中的经验总结,希望能够对广大同行起到一定帮助作用。


猜你喜欢
- 先看实际效果,现在时间2018.4.26使用python脚本按照年月日生成多级目录,创建的目录可以将系统生成的日志文件放入其中,方便查阅,代
- 非常好的边框样式设置工具,使用该工具您可以很方便的为DIV设置简单的边框样式,如果放在DW中会更好。会制作DW插件的高手,请帮忙制作成DW插
- 目录1、前言2、准备user表2.1 group by规则2.2 group by使用2.3 having使用2.4 order by与li
- 今天把Ext.js源码又读了一遍,不过这次比较认真。看完代码,有了不少收获也遇到不少问题。主要总结如下:1、document.execCom
- 此文译自Fred Wilson 2010年2月在迈阿密举行的Web未来应用的年会上的演讲谢谢青云推荐了这篇这么好的演说谢谢卓和百忙中抽空帮我
- 我突然很好奇,你说那些什么18几年的茅台真的是18几年就开始酿的吗?还有就是一个月要卖那么多,货是怎么供过来的?最后就是,一瓶那么贵,那一个
- Python下有许多款不同的 Web 框架。Django是重量级选手中最有代表性的一位。许多成功的网站和APP都基于Django。Djang
- 密码已经是我们生活工作中必不可少的工具,但一个不安全的密码有又有可能会给我们造成不必要的损失。作为网站设计者,如果我们在网页中能对用户输入的
- 看到别人用td和table标签模拟的办法: 设置table的上、左padding
- 一、requests库1、requests简介requests库就是一个发起请求的第三方库,requests允许你发送HTTP/1.1 请求
- 1.在Scrapy工程下新建“middlewares.py”# Importing base64 library because we
- 引言现在本地创建一个excel表,以及两个sheet,具体数据如下:sheet1: sheet2:读取excel文件pandas.
- 一、表结构TABLE personidname1你2你(一个空格)3你(二个空格)二、查询与结果select * from person w
- 1、 利用操作符+比如:a = [1,2,3]b = [4,5,6]c = a+bc的结果:[1,2,3,4,5,6] 2 利用e
- 二进制日志二进制日志中以“事件”的形式记录了数据库中数据的变化情况,对于MySQL数据库的灾难恢复起
- 如何为list实现find方法string类型的话可用find方法去查找字符串位置:a_list.find('a')如果找到
- 最近开始学习Python开发,“工欲善其事必先利其器”,Python程序都是用什么工具开发出来的呢。
- Dreamweaver中一直变色的超级链接,css+javascript实现超级链接变色,当鼠标移动到链接上时,链接的颜色不停闪烁变色。&l
- 首先官网上的树形控件教程地址为Element - The world's most popular Vue UI framework
- 死锁是指在某组资源中,两个或两个以上的线程在执行过程中,在争夺某一资源时而造成互相等待的现象,若无外力的作用下,它们都将无法推进下去,死时就