基于Oracle的OLTP与OLAP数据库优化差异之内存设计
- 格式:docx
- 大小:22.34 KB
- 文档页数:3
Oracle数据库发展历程一、oracle数据库的发展历程本节中,我们主要介绍Oracle的发展历程。
1977年,Larry Ellison、Bob Miner和Ed Oates等人组建了Relational软件公司(Relational Software Inc.,RSI)。
他们决定使用C语言和SQL界面构建一个关系数据库管理系统(Relational Database Management System,RDBMS),并很快发布了第一个版本(仅是原型系统)。
1979年,RSI首次向客户发布了产品,即第2版。
该版本的RDBMS可以在装有RSX-11操作系统的PDP-11机器上运行,后来又移植到了DEC VAX系统。
1983年,发布的第3个版本中加入了SQL语言,而且性能也有所提升,其他功能也得到增强。
与前几个版本不同的是,这个版本是完全用C语言编写的。
同年,RSI更名为Oracle Corporation,也就是今天的Oracle公司。
1984年,Oracle的第4版发布。
该版本既支持VAX系统,也支持IBM VM操作系统。
这也是第一个加入了读一致性(Read-consistency)的版本。
1985年,Oracle的第5版发布。
该版本可称作是Oracle发展史上的里程碑,因为它通过SQL*Net引入了客户端/服务器的计算机模式,同时它也是第一个打破640KB内存限制的MS-DOS 产品。
1988年,Oracle的第6版发布。
该版本除了改进性能、增强序列生成与延迟写入(Deferred Writes)功能以外,还引入了底层锁。
除此之外,该版本还加入了PL/SQL和热备份等功能。
这时Oracle已经可以在许多平台和操作系统上运行。
1991年,Oracle RDBMS的6.1版在DEC VAX平台中引入了Parallel Server选项,很快该选项也可用于许多其他平台。
1992年,Oracle 7发布。
2022年华东师范大学计算机科学与技术专业《数据库原理》科目期末试卷B(有答案)一、填空题1、SQL语言的数据定义功能包括______、______、______和______。
2、SQL Server中数据完整性包括______、______和______。
3、数据库系统在运行过程中,可能会发生各种故障,其故障对数据库的影响总结起来有两类:______和______。
4、数据库内的数据是______的,只要有业务发生,数据就会更新,而数据仓库则是______的历史数据,只能定期添加和刷新。
5、数据管理技术经历了______________、______________和______________3个阶段。
6、已知系(系编号,系名称,系主任,电话,地点)和学生(学号,姓名,性别,入学日期,专业,系编号)两个关系,系关系的主码是______________,系关系的外码是______________,学生关系的主码是______________,外码是______________。
7、在SELECT命令中进行查询,若希望查询的结果不出现重复元组,应在SEL ECT语句中使用______保留字。
8、在VB 6.0中,已经用Adobel连接到数据库,并已绑定到数据库中的某个关系表,现要通过此控件向表中插入数据,需要用到Adobel.Recordset的_____方法和Update方法,使用Adobel.Recordset的_____方法可以使当前行指针在结果集中向前移动一行。
9、“为哪些表,在哪些字段上,建立什么样的索引”这一设计内容应该属于数据库设计中的______阶段。
10、设在SQL Server 2000环境下,对“销售数据库”进行的备份操作序列如下图所示。
①出现故障后,为尽可能减少数据丢失,需要利用备份数据进行恢复。
首先应该进行的恢复操作是恢复_____,第二个应该进行的恢复操作是恢复_____。
OLAP技术在数据分析中的应用摘要:首先介绍了olap的概念、功能特征,然后通过实例对多维数据库的概念、层次关系和多维数据分析的主要操作进行了详细描述。
最后,以oracle公司的hyperion产品作为多维数据库分析的平台,通过对一大型能源集团公司的财务预算系统中的预算数据进行分析,介绍了olap技术方法的实际应用,总结了olap技术在数据分析工作中的优势。
关键词:联机分析处理;多维数据库;数据分析;甲骨文产品;财务预算系统中图分类号:tp392 文献标识码:a 文章编号:1007-9599 (2013) 02-0000-03olap(on-line analytical processing,即联机分析处理)是一种多维数据库技术。
这种技术的设计目的是针对特定问题的实时数据访问和分析,并且提供直观易懂的查询结果。
还有一种处理技术oltp(on-line transaction processing,即联机事务处理),与olap不同,oltp是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理。
1 olap技术介绍1.1 olap技术的发展背景60年代,关系数据库之父e.f.codd提出了关系模型,促进了联机事务处理(oltp)的发展(数据以表格的形式而非文件方式存储)。
1993年,e.f.codd提出了olap概念,认为oltp已不能满足终端用户对数据库查询分析的需要,sql对大型数据库进行的简单查询也不能满足终端用户分析的要求。
用户的决策分析需要对关系数据库进行大量计算才能得到结果,而查询的结果并不能满足决策者提出的需求。
因此,e.f.codd提出了多维数据库和多维分析的概念,即olap。
olap技术正是为了满足决策管理的需求而产生的。
1.2 olap特征olap的技术核心是”维”(dimension)这个概念。
“维”是指一种视角,是一个判断、说明、评价和确定一个事物的多方位、多角度、多层次的条件和概念。
Oracle的各个版本之间的区别一、Oracle 9i比8i多了哪些新特性?1、并发集群,8i OPS升级为9i RAC,8i结点间用硬盘交换信息,9i结点间采用高速网线的缓存熔合(Cache Fusion)技术交换信息,交换速度提高100倍以上。
2、9i可以在线修改内核参数和内存分配,8i不行。
数据文件和表空间管理,8i手工管理,9i自动管理。
3、9i比8i增强了对ANSI SQL99的支持。
4、9i比8i增强了故障后的快速恢复(Fast-start)。
5、8i只支持物理备份(physical backup)数据库,9i还增加了支持逻辑备份(logical backup)数据库,使备份数据库除了作为主数据库的镜像外,还可以提供其他数据服务.二、Oracle 10g比9i多的新特性?1. 10g支持网格计算,即多台结点服务器利用高速网络组成一个虚拟的高性能服务器,负载在整个网格中衡(Load Balance),按需增删结点,避免单点故障(Single Point of Faliure)2.10g容易安装,且安装速度比9i少了一半3.新增基于浏览器的企业管理器(Enterprise Manager)。
4.支持自动管理(Automatic Management)增删硬盘不再需要操作系统管理员设置的镜像、负载均衡物理卷、逻辑卷、分区、文件系统,只要打一条Oracle命令,ASM会自动管理增加或删除的硬盘。
5.内存自动化,根据需要自动分配和释放系统内存。
6.SQL性能调整自动化。
7.快速纠正人为错误的闪回(Flashback)查询和恢复,可以恢复数据库、表甚至记录。
8.数据泵(Data Pump)高速导入、导出数据,比传统方法导出速度快两倍以上,导入速度快15--45倍.9.精细审计(Fine-Grained Auditing),记录一切对敏感数据的操作10.存储数据的表空间(Tablespace)跨平台复制,极大的提高数据仓库加载速度。
一、数据仓库的概念及使用情况介绍1996年, Inmon 在他的专著《Building the Data Warehouse》中, 对数据仓库做了如下定义,即“面向主题的、完整的、非易失的、不同时间的、用于支持决策的数据集合”。
这和传统的OLTP系统有很大的区别,它属在线分析(OLAP)系统的范畴。
面向主题的,指的是它将依据一定的主题,比如经销商、产品、定单等汇总各个OLTP系统的数据。
完整的, 指的是要求对各个系统数据表示进行转换,用统一编码表示,比如,A系统用001表示退货, 而B系统用999表示退货,在数据仓库中必须统一成一个编码。
非易失的, 指的是系统用户只读数据,不得修改数据。
数据仓库完整地记录了各个历史时期的数据,而OLTP系统不会保留全部的历史记录。
OLTP系统也难以支持决策查询,例如从几千万笔记录中获取不同区域的汇总报表。
完整的数据仓库应包括:1.数据源->2.ETL ->3.数据仓库存储->4.OLAP ->5.BI工具现实中可以实现的方案有:1.数据源-> BI工具2.数据源-> OLAP -> BI工具3.数据源-> 数据仓库存储-> BI工具4.数据源-> 数据仓库存储-> OLAP -> BI工具5.数据源-> ETL -> 数据仓库存储-> OLAP -> BI工具可见其中必需的是数据源和前端,其他的部分都可根据具体情况决定取舍。
建立数据仓库的步骤:1) 收集和分析业务需求2) 建立数据模型和数据仓库的物理设计3) 定义数据源4) 选择数据仓库技术和平台5) 从操作型数据库中抽取、净化、和转换数据到数据仓库6) 选择访问和报表工具7) 选择数据库连接软件8) 选择数据分析和数据展示软件9) 更新数据仓库数据仓库设计的主要步骤如下:1. 系统主题的确定这要求系统设计人员多与业务人员沟通, 详细了解业务需求、报表需求,再归纳成数据仓库的主题。
数据夜话之⼤数据OLAP数据库概览当下⼤数据技术发展如⽕如荼,各种数据库处理技术层出不穷,可是各种数据库的⼤致分类清楚吗?能够结合项⽬数据的业务特点进⾏选型吗?今天先从OLAP 型数据库说起,介绍相关的数据库。
OLTP和OLAP分不清?我们通常将数据库分为OLTP和OLAP两⼤类,先了解⼀下它们的区别:1. OLTP (online transaction processing 联机事务处理),典型代表如 mysql,擅长事务处理,能够在数据操作时保持强⼀致性和原⼦性,⽀持数据的数据频繁插⼊或修改,数据模型⼀般为实体-关系模型(E-R),主要为了查询或者改变数据记录。
对于银⾏证券公司的账务系统来说为了保证准确性当然⾸选OLTP型数据库。
但是数据量过⼤的话,OLTP就有些⼒不从⼼了。
2. OLAP (online analytical processing 联机分析处理),例如 greenplum,擅长对⼤量数据进⾏多维复杂分析,追求极致性能,⽽不特别关注数据插⼊修改等事务性处理的⼀类数据库系统,数据模型⼀般为星型或雪花型,主要为了分析规律预测趋势。
可以理解为 OLAP ⾯对的是复杂的多表聚合型查询。
OLAP技术栈为应该这挑战⼤数据给传统数据技术带来的巨⼤挑战,主要发展出三⼤类OLAP型技术:MPP架构型OLAP (Massive Parallel Processing)批处理架构型OLAP预计算型OLAP上⾯三种OLAP型技术按照建模类型来划分的话,也可以分为:MOLAP,M即表⽰多维(Multidimensional),⼀般指预计算型OLAP。
它会对原始数据进⾏预计算得到⽤户可能需要的所有结果,然后将结果存储到优化过的多维数组存储中,能够快速响应请求。
如果业务发⽣需求变更,需要进⾏预定模型之外新的查询操作,现有的MOLAP实例就⽆能为⼒了,只能重新进⾏建模和预计算。
所以,MOLAP适合业务需求⽐较固定,数据量较⼤的场景。
OLAP介绍OLAP介绍⼀、发展背景⼆、什么是OLAP?三、相关基本概念四、OLAP特性五、OLAP多维数据结构六、OLAP多维数据分析七、OLAP分类⼋、OLAP评价准则九、流⾏的OLAP⼯具⼗、OLAP发展⼗⼀、OLAP展望⼀、发展背景60年代,关系数据库之⽗E.F.Codd提出了关系模型,促进了联机事务处理(OLTP)的发展(数据以表格的形式⽽⾮⽂件⽅式存储)。
1993年,E.F.Codd提出了OLAP概念,认为OLTP已不能满⾜终端⽤户对数据库查询分析的需要,SQL对⼤型数据库进⾏的简单查询也不能满⾜终端⽤户分析的要求。
⽤户的决策分析需要对关系数据库进⾏⼤量计算才能得到结果,⽽查询的结果并不能满⾜决策者提出的需求。
因此,E.F.Codd提出了多维数据库和多维分析的概念,即OLAP。
OLTP数据 OLAP数据原始数据导出数据细节性数据综合性和提炼性数据当前值数据历史数据可更新不可更新,但周期性刷新⼀次处理的数据量⼩⼀次处理的数据量⼤⾯向应⽤,事务驱动⾯向分析,分析驱动⾯向操作⼈员,⽀持⽇常操作⾯向决策⼈员,⽀持管理需要⼆、什么是OLAP?定义1 :OLAP(联机分析处理)是针对特定问题的联机数据访问和分析。
通过对信息(维数据)的多种可能的观察形式进⾏快速、稳定⼀致和交互性的存取,允许管理决策⼈员对数据进⾏深⼊观察。
定义2 :OLAP(联机分析处理) 是使分析⼈员、管理⼈员或执⾏⼈员能够从多种⾓度对从原始数据中转化出来的、能够真正为⽤户所理解的、并真实反映企业维特性的信息进⾏快速、⼀致、交互地存取,从⽽获得对数据的更深⼊了解的⼀类软件技术。
(OLAP委员会的定义) OLAP的⽬标是满⾜决策⽀持或多维环境特定的查询和报表需求,它的技术核⼼是“维”这个概念,因此OLAP也可以说是多维数据分析⼯具的集合。
三、相关基本概念1.维:是⼈们观察数据的特定⾓度,是考虑问题时的⼀类属性,属性集合构成⼀个维(时间维、地理维等)。
001、SQL与ORACLE的内存分配ORACLE的内存分配大部分是由INIT.ORA来决定的,一个数据库实例可以有N种分配方案,不同的应用(OLTP、OLAP)它的配置是有侧重的。
SQL概括起来说,只有两种内存分配方式:动态内存分配与静态内存分配,动态内存分配充许SQL自己调整需要的内存,静态内存分配限制了SQL对内存的使用。
002、SQL与ORACLE的物理结构总得讲,它们的物理结构很相似,SQL的数据库相当于ORACLE的模式(方案),SQL的文件组相当于ORACLE的表空间,作用都是均衡DISK I/O,SQL创建表时,可以指定表在不同的文件组,ORACLE则可以指定不同的表空间。
CREATE TABLE A001(ID DECIMAL(8,0)) ON [文件组]--------------------------------------------------------------------------------------------CREATE TABLE A001(ID NUMBER(8,0)) TABLESPACE 表空间注:以后所有示例,先SQL,后ORACLE003、SQL与ORACLE的日志模式SQL对日志的控制有三种恢复模型:SIMPLE、FULL、BULK-LOGGED;ORACLE对日志的控制有二种模式: NOARCHIVELOG、ARCHIVELOG。
SQL的SIMPLE相当于ORACLE 的NOARCHIVELOG,FULL相当于 ARCHIVELOG,BULK-LOGGED相当于ORACLE大批量数据装载时的NOLOGGING。
经常有网友抱怨SQL的日志庞大无比且没法处理,最简单的办法就是先切换到SIMPLE模式,收缩数据库后再切换到FULL,记住切换到FULL 之后要马上做完全备份。
004、SQL与ORACLE的备份类型SQL的备份类型分的极杂:完全备份、增量备份、日志备份、文件或文件组备份;ORACLE 的备份类型就清淅多啦:物理备份、逻辑备份;ORACLE的逻辑备份(EXP)相当于SQL 的完全备份与增量备份,ORACLE的物理备份相当于SQL的文件与文件组备份。
Oracle数据库11g产品家族简介介绍Oracle数据库11g家族,是一个对不同级别的业务,不同规模的组织都有量身定做产品,对不同IT需求都有解决方案的家族。
Oracle也提供数据库选件产品来加强Oracle数据库11g某些特殊的应用需求。
本文将概要的介绍这些功能和选件。
●Oracle数据库11g标准版一(SE1)是个空前强大,易用,性价比非常好的工作组级软件。
适合单节点,在最高容量两个处理器的服务器上使用。
●Oracle数据库11g标准版(SE)可以支持单机或者集群服务器,在最高容量4个处理器的单机或者总计4处理器的集群上使用。
购买了标准版,就已经内含了Oracle的RAC而无需额外付费。
●Oracle数据库11g企业版(EE)提供了有效,可靠,安全的数据管理功能以应对关键的企业业务和在线事务处理应用,复杂查询的数据仓库或者WEB2.0应用。
企业版就没有SOCKET限制,单机或者集群都可以使用●Oracle数据库11g个人版(PE)是为个人开发部署使用,它和Oracle标准版一,标准版,企业版功能上是全面兼容的。
●Oracle数据库11g express版(XE)是个入门级的精巧数据库。
主代码是基于企业级数据库的,用户可以在这个基础上自由开发,部署和发布。
该版数据库占的空间很小,非常容易管理。
XE版可以安装在任何主机上,也没有CPU限制。
但是XE版的用户数据只能存储4G,内存只能使用1G,每台主机上也只能使用1个CPU。
如果使用XE版的时间久了需要升级,我们也可以很轻松的将其升级到标准版或者企业版。
这四个版本的Oracle数据库11g使用的是相同的引擎架构,互相兼容。
在相同的操作系统环境下,也支持相同的应用开发工具,程序接口。
使用Oracle数据库11个产品,您可以先购买标准版一上手,随着您的业务发展,再轻松的升级到标准版。
随着设备的扩容业务的进一步发展,我们再按需应变的进一步升级到企业版。
·数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、集成的(Integrate)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合,用于支持管理决策。
·数据仓库的特点–面向主题–集成–相对稳定–反映历史变化数据仓库是一个面向主题的、集成的、不可更新的、随时间不断变化的数据集合,它用于支持企业或组织的决策分析处理。
数据仓库,Data Warehouse,可简写为DW。
数据仓库之父Bill Inmon在1991年出版的“Building the Data Warehouse”一书中所提出的定义被广泛接受——数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、集成的(Integrated)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合,用于支持管理决策(Decision Making Support)。
◆面向主题:操作型数据库的数据组织面向事务处理任务,各个业务系统之间各自分离,而数据仓库中的数据是按照一定的主题域进行组织的。
◆集成的:数据仓库中的数据是在对原有分散的数据库数据抽取、清理的基础上经过系统加工、汇总和整理得到的,必须消除源数据中的不一致性,以保证数据仓库内的信息是关于整个企业的一致的全局信息。
◆相对稳定的:数据仓库的数据主要供企业决策分析之用,所涉及的数据操作主要是数据查询,一旦某个数据进入数据仓库以后,一般情况下将被长期保留,也就是数据仓库中一般有大量的查询操作,但修改和删除操作很少,通常只需要定期的加载、刷新。
◆反映历史变化:数据仓库中的数据通常包含历史信息,系统记录了企业从过去某一时点(如开始应用数据仓库的时点)到目前的各个阶段的信息,通过这些信息,可以对企业的发展历程和未来趋势做出定量分析和预测。
OLAP性能分析及优化李彩霞【摘要】数据仓库存储大量历史数据,OLAP应用涉及到对大面积历史数据的复杂查询,查询优化是提高OLAP响应速度的关键.目前最有效的方法是增加综合数据存储及查询方式的优化,但存储空间的有限限制了综合数据的存储量.常规优化数据库的方法不能满足OLAP的要求,针对以上出现的问题分别从数据仓库存储优化、OLAP实现方式的选择等工作出发,基于OLAP性能优化的查询优化策略等多角度实现对OLAP响应速度及提高查询优化.对这个问题进行了深入的研究.【期刊名称】《现代电子技术》【年(卷),期】2006(029)018【总页数】3页(P116-118)【关键词】数据仓库;OLAP;变粒度存储策略;X-OLAP【作者】李彩霞【作者单位】青海民族学院,计算机科学与技术系,青海,西宁,810007【正文语种】中文【中图分类】TP311.1311 引言联机数据分析系统(On-Line Analytical Processing,OLAP)是关系型数据库之父E.F.Codd 1993提出的,当时,E.F.Codd认为OLTP已不能满足终端用户对数据库查询分析的需要,用户的决策分析需要对关系数据库进行大量计算才能得到结果,而查询的结果并不能满足决策者提出的需求,因此他提出了多维数据库和多维分析的概念,即OLAP[1]。
OLAP是针对特定问题的联机数据访问和分析。
通过对信息很多种可能的观察形式进行快速、稳定、一致和交互性的存取,允许管理决策人员对数据进行深入观察。
OLAP的基本分析动作包括:数据切片、数据切块、数据钻取、数据聚合、数据旋转。
OLAP通过对数据库中的数据进行相应的操作从多个角度、多个侧面进行快速、一致和交互地存取,从而使分析人员能够对数据进行深入的分析观察[1]。
OLAP是基于数据仓库的,而数据仓库存储大量的历史数据。
OLAP以多维分析为基础,对数据仓库中的历史数据进行多层面多角度分析和处理。
基于Oracle的OLTP与OLAP数据库优化差异之内存设计要进行数据库优化,首先应该弄清数据库类型及其特点。
从数据处理角度分类,数据库可分为两大类:联机事务处理OLTP(on-line transaction processing)和联机分析处理OLAP(On-Line Analytical Processing),OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易,电信业务等。
OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。
两类系统处理的数据量不同,技术的使用也是不一样的,在OLTP系统中,oracle、db2等是主流数据库产品,数据量在几个TB甚至更小。
在OLAP系统中,除了传统的数据库外,有越来越多的其他数据库产品出现,如sysbase IQ,GP,国产数据库GBase 8a,达梦7等,数据量大多在几十TB甚至更高,数据处理主要集中在查询统计分析、大数据量的导入导出等。
在这里,我们主要讨论的还是最通用的ORACLE数据库的两类系统的优化思路和方式的差异。
数据库具体是OLTP还是OLAP取决于你的业务类型。
OLTP和OLAP两类系统对数据库要求截然不同。
除了系统本身自有的特点之外,在技术方面也存在巨大的差别,所带来的优化技术和理念也不太一样。
OLTP主要是交易型数据库,其事务特征为高并发而数据量小,大部分情况都要求瞬间出结果,系统要求的实时性、稳定性、安全性较高。
这类数据库的系统瓶颈主要在CPU和内存上,在优化思路上,更加关注CPU的利用率;各种命中率指标,譬如SHARED POOL, BUFFER CACHE的命中率;SQL语句绑定变量等。
由于数据量相对比较小,因此OLTP大部分都是集中式的。
OLAP主要是分析型数据库,并发量比较小,但单个sql消耗巨大,大部分查询需要处理海量数据,用户对响应时间的要求远不如OLTP用户。
由于数据量巨大,这类数据库的系统瓶颈主要在磁盘io上,一些传统的优化指标和手段,如SHARED POOL, BUFFER CACHE 的命中率等对OLAP型数据库意义不大,而分区,并行操作,压缩,物化视图,全文索引等技术可能都会在OLAP中体现。
OLAP库基本都是上TB的,有的是几百TB,甚至PB,因此很多OLAP库可能都分成了N个库,以便于分布式处理。
OLAP一般都是采用星星模式或者雪花模式的。
下面从内存设计的优化角度具体分析一下这两类系统优化手段的差异:内存设计通常是通过调整ORACLE内存参数来实现的。
oracle的内存可分为SGA(shared global area)共享全局区和PGA(program global area)进程全局区两部分。
OLTP系统由于处理的事务为高并发且数据量小,SGA比PGA更为重要;OLAP系统处理的事务数据量大且并发量比较小,大部分查询可能运行一次可能很久不会在运行,SQL的重用意义不大,很多命中率指标对于OLAP也影响较小处理,因此SGA相对次要,而较多大数据的排序,HASH操作都需要在PGA完成,PGA大小直接决定了处理效率。
尽管从oracle 10g开始,oracle已经减少了对内存命中率的关注,转而通过工作时间(CPU时间或服务时间)和等待工作时所消耗的时间(等待时间)来分析系统的性能,但对一个OLTP库来说,库缓存命中率(Library hit)和数据缓冲区命中率(buffer hit)仍是极重要的指标。
OLTP系统是一个SQL执行非常密集的系统,Library hit命中率低说明共享池里很多SQL不能重用,需要重新解析,这会大大增加CPU负荷,降低系统性能,影响SQL 执行效率。
使用绑定变量是减少硬解析,提高库缓存命中率的有效手段。
数据缓冲区命中率表示在不需要进行磁盘访问的情况下在内存结构中找到常用数据块的频率,可视为OLTP系统的晴雨表,一个好的OLTP系统应该可以得到95%或更大的命中率,由于CPU对内存的访问速度要比从磁盘的速度快千倍,当SQL所需要的数据块都能从内存取得时,SQL执行效率无疑比从磁盘读数据高很多,对于一个OLTP库来说,由于处理的数据量都较小,尽可能让数据块保存在内存中,提高内存命中率,是一个极其重要的性能优化指标。
把缓冲区命中率从90%提高到95%可能使系统性能翻倍。
对缓冲区命中率偏低的OLTP 系统,合适的增大Buffer Cache的大小,可改善数据库性能。
而在OLAP系统中,就无法以这两个指标来衡量数据库性能。
OLAP库运行的SQL所查询的数据块量巨大,不可能长期缓存在内存中;每次执行的SQL重复率不高,SQL硬分析的代价可以忽略,SQL是否重用并不重要,在某些情况下,使用绑定变量重用SQL,甚至会因为选择了错误的执行计划而导致严重的后果。
对于OLAP系统,我们可以用另一种内存命中率来评估系统,即PGA内存排序命中率。
该指标反映了在PGA中完成的排序操作的比例。
当要求排序或执行一个哈希连接时,Oracle 可能会执行大量 IO。
在可能情况下,Oracle 在 PGA 内执行排序或哈希连接。
但是,如果内存不够,那么 Oracle 会写到临时表空间的临时段。
没有足够的 PGA 所造成的影响是很大的。
如果内存少,那么在排序期间,Oracle 可能从磁盘读写数据很多次。
数据库响应时间会随着内存的减少而显著增加。
OLAP系统的排序操作或哈希连接操作极多,过小的PGA 设置对OLAP型数据库性能的影响是灾难性的。
除了设置足够大的PGA尺寸,将临时表空间部署在io速度较快的磁盘上,也可提升这类操作的效率。
oracle的内存SGA和 PGA两大块,前者帮助我们阻止逻辑读取变成物理读取,后者帮助我们阻止排序和哈希操作产生 IO 到临时表空间。
很难做到平衡。
从Oracle 10g开始,Oracle提供了自动共享内存管理ASMM(Automatic Shared Memory Management)新特性。
所谓ASMM,就是指我们不再需要手工设置shared pool、buffer pool 等若干内存池的大小,而是为SGA设置一个总的大小尺寸即可。
Oracle 10g数据库会根据系统负载的变化,自动调整各个组件的大小,从而使得内存始终能够流向最需要它的地方。
根据Oracle的建议,Oracle最多可以使用80%的物理内存,其余20%保留给操作系统使用,在这80%的内存中,对于OLTP系统,Oracle建议分配20%给PGA使用,剩下80%分配给SGA。
OLTP:PGA_AGGREGATE_TARGET = (total_mem * 80%) * 20%在OLAP系统中,由于会运行一些很大的查询,Oracle建议分配分配50%给PGA使用,结合实际情况,该比例可以提高至70%至80%。
OLAP:PGA_AGGREGATE_TARGET = (total_mem * 80%) * 50%而在Oracle 11g中,如果设置了MEMORY_TARGET 参数,那么 Oracle 会尝试在 SGA 和PGA 之间优化内存,并且尝试在指定的内存目标内保持两者的大小。
这又是一大进步,因为在 Oracle 10g 中很难确定最佳设置。
但对于某些应用程序来说,自动内存管理可能不是最佳的解决方案。
自动内存管理往往超过约一小时的短期窗口来调整内存分配。
如果你的系统有突发工作量,或短期需求高峰,那么自动内存管理可以要一天后才能发挥出来。
现在很多数据库是OLAP/OLTP的融合,可能白天处理的事务偏于OLTP型,晚上则较多批处理作业,偏于OLAP型。
在这种情况下,较好的方式是,确定内存的优化设置,或是用固定值,也可以交替设置。
例如,晚上,我们可能会从 SGA 到 PGA 切换内存;而在白天,我们再把内存移到 SGA。
尽管通过修改Oracle内存参数的大小通常可以有效地提高Oracle性能,但是由于内存有限,不可能无限增大,需要在高速缓存命中率和物理内存之间取得平衡。
在增大SGA或PGA 之前,必须明白这些改动对系统的物理内存可能产生的影响,如果增加后的参数值比系统可用内存大,就会严重降低系统性能。
而一个不合适的过大的数据库高速缓存,甚至会导致数据库性能的退化。
当系统处理任务时,如果没有足够的内存,它就会开始执行分页和交换,以完成这个激活的任务。
当系统执行分页时,会将当前没有使用的信息从内存移到硬盘上。
这样就可以为当前需要内存的程序分配内存。
如果频繁地发生分页,系统性能就会严重降低,从而导致很多程序的执行时间变长。
当系统执行内存交换时,会将活动进程临时地从内存移到硬盘上,这样另一个活动进程就可以得到所需要的内存。
内存交换基于系统循环时间。
如果内存交换过于频繁,就会产生大量的I0,应用的性能可能会急剧恶化。
系统内存的配置应尽可能实现如下目标:1)减少分页;2)减少内存交换;3)尽可能让系统全局区(SGA)能驻留内存。
Oracle数据库系统性能与多方面因素有关,在这里只是从内存设计角度提供了一些优化思路,尽管Oracle 11g已经提供了更为强大的内存自动管理功能,但作为DBA,要想让所维护的数据库处于较好的性能下,仍应该对这两类系统的业务差别和Oracle体系结构有深刻理解,才能做到有的放矢,而不是希望通过简单修改某个参数,就能让数据库性能得到提升。
专著(文献类型标识:M) [序号] 主要责任者。
题名[M]。
出版地:出版者,出版年,起止页码。
参考文献:Oracle Database 10g性能调整与优化让Oracle跑得更快:Oracle 10g性能分析与优化思路。