仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 708|回复: 8
打印 上一主题 下一主题

[学习教程] MYSQL教程之Oracle数据库体系调优办法

[复制链接]
逍遥一派 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:13:09 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
与其他数据库相比,MySQL易学易用。Oracle数据库普遍使用在社会的各个范畴,出格是在Client/Server形式的使用,可是使用开辟者常常碰着全部体系的功能跟着数据量的增年夜光鲜明显下落的成绩,为懂得决这个成绩,从以下几个方面:数据库服务器、收集I/O、使用程序等对全部体系加以调剂,充实发扬Oracle的效能,进步全部体系的功能。
1调剂数据库服务器的功能
Oracle数据库服务器是全部体系的中心,它的功能上下间接影响全部体系的功能,为了调剂Oracle数据库服务器的功能,次要从以下几个方面思索:
1.1调剂
操纵体系以合适Oracle数据库服务器运转
Oracle数据库服务器很年夜水平上依附于运转服务器的操纵体系,假如操纵体系不克不及供应最好功能,那末不管怎样调剂,Oracle数据库服务器也没法发扬其应有的功能。
1.1.1为Oracle数据库服务器计划体系资本
据已有盘算机可用资本,计划分派给Oracle服务器资本准绳是:尽量使Oracle服务器利用资本最年夜化,出格在Client/Server中只管让服务器上一切资本都来运转Oracle服务。
1.1.2调剂盘算机体系中的内存设置
多半操纵体系都用虚存来摹拟盘算机上更年夜的内存,它实践上是硬盘上的必定的磁盘空间。当实践的内存空间不克不及满意使用软件的请求时,操纵体系就将用这部分的磁盘空间对内存中的信息举行页面交换,这将引发大批的磁盘I/O操纵,使全部服务器的功能下落。为了不过量地利用虚存,应加年夜盘算机的内存。
1.1.3为Oracle数据库服务器设置操纵体系历程优先级
不要在操纵体系中调剂Oracle历程的优先级,由于在Oracle数据库体系中,一切的背景和前台数据库服务器历程实行的是一律主要的事情,必要一律的优先级。以是在安装时,让一切的数据库服务器历程都利用缺省的优先级运转。
1.2调剂内存分派
Oracle数据库服务器保存3个基础的内存高速缓存,分离对应3种分歧范例的数据:库高速缓存,字典高速缓存弛缓冲区高速缓存。库高速缓存和字典高速缓存一同组成共享池,共享池再加上缓冲区高速缓存便组成了体系全程区(SGA)。SGA是对数据库数据举行疾速会见的一个体系全程区,若SGA自己必要频仍地举行开释、分派,则不克不及到达疾速会见数据的目标,因而应把SGA放在主存中,不要放在假造内存中。内存的调剂次要是指调剂构成SGA的内存布局的巨细来进步体系功能,因为Oracle数据库服务器的内存布局需求与使用亲切相干,以是内存布局的调剂应在磁盘I/O调剂之行进行。
1.2.1库缓冲区的调剂
库缓冲区中包括私用和共享SQL和PL/SQL区,经由过程对照库缓冲区的射中率决意它的巨细。要调剂库缓冲区,必需起首懂得该库缓冲区的举动情形,库缓冲区的举动统计信息保存在静态功能表v$librarycache数据字典中,可经由过程查询该表来懂得其举动情形,以决意怎样调剂。
1.2.2数据字典缓冲区的调剂
数据字典缓冲区包括了有关数据库的布局、用户、实体信息。数据字典的射中率,对体系功能影响极年夜。数据字典缓冲区的利用情形纪录在静态功能表v$librarycache中,可经由过程查询该表来懂得其举动情形,以决意怎样调剂。
1.2.3缓冲区高速缓存的调剂
用户历程所存取的一切数据都是经由缓冲区高速缓存来存取,以是该部分的射中率,对功能相当主要。缓冲区高速缓存的利用情形纪录在静态功能表v$sysstat中,可经由过程查询该表来懂得其举动情形,以决意怎样调剂。
2调剂Client/Server形式下的收集I/O
Client/Server情况中的使用处置是散布在客户使用程序和数据库服务程序之间的。在Client/Server情况中Client与Server之间的收集I/O是全部体系功能进步的瓶颈,一个客户使用程序引发的收集I/O越少,使用及全部体系的功能越好。削减收集I/O的最主要的一条准绳:将使用逻辑会合在数据库服务器中。
2.1利用Oracle数据库的完全束缚性
当为使用建表时,应该为一些有特别请求的数据加上得当的完全性束缚,如许就可以完成由数据库自己而不是使用程序来束缚数据切合必定的前提。数据库服务器真个完全束缚的实行操纵是在比SQL语句级别更低的体系机制上优化,它与客户端有关,只在服务器中运转,不需在Client端和Server端之间传送SQL语句,无效地加重收集I/O包袱。
2.2利用数据库触发器
完全束缚性只能完成一些较复杂的数据束缚前提,对一些较庞大的事物处置划定规矩就力所不及,这时候最好不要在使用程序中实行庞大的程序把持,而是应该接纳数据库触发器来实行庞大的事物划定规矩。数据库触发器能完成由数据库自己,而不是使用程序,来束缚数据切合庞大的事物处置划定规矩,而且简单创立,便于办理,制止大批的收集I/O。
2.3利用存储历程、存储函数和包
Oracle的存储历程和存储函数是定名的能完成必定功效而且存储在Server真个PL/SQL的汇合。包是一种把有关的历程和函数构造封装成一个数据库程序单位的办法。它们相对使用程序的历程、函数而言,把SQL命令存储在Server端。利用存储历程和存储函数,使用程序不用再包括多个收集操纵的SQL语句往实行数据库服务器操纵,而是复杂挪用存储历程和存储函数,在收集上传输的只是挪用历程的名字和输入了局,如许便可削减大批的收集I/O。
3使用程序的调剂
3.1SQL语句的优化
SQL语句的实行速率,能够受良多要素的影响而变更。但次要的影响要素是:驱动表、实行操纵的前后按次和索引的使用。能够由良多分歧的办法直接地改动这些要素,以到达最优的实行速率。这里次要切磋当对多个表举行毗连查询时应遵守的优化准绳:
3.2创建和利用视图、索引
使用视图能够将基表中的列或行举行扩充、埋没一部分数据,而且可以将触及到多个表的庞大查询以视图的体例给出,使使用程序开辟简便疾速。使用索引能够进步查询功能,削减磁盘I/O,优化对数据表的查询,减速SQL语句的实行。但任什么时候候创建索引都能进步功能,什么时候创建索引应该遵守以下准绳:该表经常使用来在索引列上查询,该表不常更新、拔出、删除等操纵,查询出来的了局纪录数应把持在原表的2%~4%。
3.3利用Oracle的数组接口
当一个客户使用程序拔出一行或用一个查询来向服务器哀求某行时,不是发送具有单个行的收集包,而是接纳数组处置,即把要拔出的多个行或检索出的多个行缓冲在数组中,然后经由过程很少的几个包便可在网上传送这些数组。比方,一个给定的Select语句前往2000行数据,每行均匀巨细为40个字节,数据包的巨细为4kB,而数组巨细参数(arraysize)设置为20,则需从服务器发送100个数据包到客户机。假如复杂地把(arraysize)设置为2000,那末一样的操纵只必要传送20个数据包。如许就削减了收集的传输量,进步了一切使用的功能。
4总结
我们在开辟使用程序时,遵守上述的办法和准绳,对体系举行调剂,收到了使人中意的效果。可是应该指出,因为客户机、收集、服务器这3个互相依存的构成部分都必需调剂和同步才干发生最好的功能,因而还应依据体系的详细情形,详细剖析和调剂。
这种服务也提供了足够的监控功能来跟踪性能和使用情况,在问题发生时将发出通知并生成一定深度的分析报告。
小妖女 该用户已被删除
9#
发表于 2015-3-21 04:12:59 | 只看该作者
这一点很好的加强了profiler的功能。但是提到profiler提醒大家注意一点。windows2003要安装sp1补丁才能启动profiler。否则点击没有反应。
因胸联盟 该用户已被删除
8#
发表于 2015-3-14 10:50:54 | 只看该作者
原理很简单,对要求长时间计算某一时间点的报表生成和防用户操作错误很有帮助。但是比起Oracle10g的闪回技术还是细粒度不够。可惜!
深爱那片海 该用户已被删除
7#
发表于 2015-3-7 02:59:30 | 只看该作者
SQLServer的异构移植功能个人感觉最好了。(如果对比过SQLServer的链接服务器和Oracle的透明网关的朋友会发现SQLServer的sp_addlinkedserver(openquery)异构数据库系列比Oracle真是强太多了。)
灵魂腐蚀 该用户已被删除
6#
发表于 2015-2-22 20:32:59 | 只看该作者
SP4是一个累积性的ServicePack,包含自以前的ServicePack发布以来所有的修补程序(包括MS03-031安全公告)。
柔情似水 该用户已被删除
5#
发表于 2015-2-7 17:50:27 | 只看该作者
语句级快照和事务级快照终于为SQLServer的并发性能带来了突破。个人感觉语句级快照大家应该应用。事务级快照,如果是高并发系统还要慎用。如果一个用户总是被提示修改不成功要求重试时,会杀人的!
逍遥一派 该用户已被删除
地板
 楼主| 发表于 2015-2-2 07:52:09 | 只看该作者
分区表是个亮点!从分区表也能看出微软要做大作强SQLServer的信心。资料很多,这里不详细说。但是重点了解的是:现在的SQLServer2005的表,都是默认为分区表的。因为它要支持滑动窗口的这个特性。这种特性对历史数据和实时数据的处理是很有帮助的。
第二个灵魂 该用户已被删除
板凳
发表于 2015-1-24 15:56:05 | 只看该作者
在select语句中可以使用groupby子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。
飘灵儿 该用户已被删除
沙发
发表于 2015-1-19 05:06:55 | 只看该作者
还不是性能有问题!否则面向对象的数据库早就实现了!建议使用CLR的地方一般是和应用的复杂程度或操作系统环境有很高的耦合度的场景。如你想构建复杂的算法,并且用到了大量的指针和高级数据模型。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-11 00:02

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表