浅谈数据库系统内存优化分配策略.doc

浅谈数据库系统内存优化分配策略.doc

ID:55149696

大小:28.00 KB

页数:5页

时间:2020-04-29

浅谈数据库系统内存优化分配策略.doc_第1页
浅谈数据库系统内存优化分配策略.doc_第2页
浅谈数据库系统内存优化分配策略.doc_第3页
浅谈数据库系统内存优化分配策略.doc_第4页
浅谈数据库系统内存优化分配策略.doc_第5页
资源描述:

《浅谈数据库系统内存优化分配策略.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、浅谈数据库系统内存优化分配策略  [摘要]本文主要介绍Oracle数据库的内存组成,各部分内存如何分配与优化,包括SGA区、PGA区等。  [关键词]Oracle数据库;内存分配;内存优化  doi:10.3969/j.issn.1673-0194.2017.13.064  [中图分类号]TP311.13[文献标识码]A[文章编号]1673-019413-0152-03  1数据库系统介绍  数据库技术产生于20世纪60年代末70年代初,其主要目的是有效地管理和存取大量的数据资源,研究如何存储,使用和管理数据。数年来,

2、数据库技术发展迅速,应用广泛。数据库技术不仅应用于事务处理,并且进一步应用到情报检索、人工智能、专家系统、计算机辅助设计等领域。  Oracle数据库系统是Oracle公司于1979年发布的世界上第一个关系数据库管理系统。经过30多年的发展,Oracle公司也成为当今世界上最大的数据库厂商和最大的商用软件供应商,Oracle数据库系统已经应用于各个领域,是当前市场占有率最高的数据库产品,约为49%。在当今世界500强企业中,70%的企业使用的是Oracle数据库,世界十大B2C公司全部使用Oracle数据库,世界十大B

3、2B公司中有9家使用的是Oracle数据库。  2Oracle数据库内存基本组成  Oracle数据库系统的内存包括两部分:SGA和PGA。SGA即SystemGlobalArea系统全局区。一个数据库实例对应一个SGA,SGA在数据库实例启动的时候被分配。SGA作为数据库实例的基本组成,是一个非常大的内存空间,甚至可以占据物理内存的80%。PGA即ProgramGlobalArea程序全局区。一个服务进程启动的时候就会分配一个PGA。在OracleInstance中PGA可能会很多,例如启动10个ServerProc

4、ess就��有10个PGA。  Oracle数据库系统的使用场景一般为管理海量数据,而数据都是存储在磁盘上的,为了提高存储、访问的效率,那么Oracle必然会在内存中开辟一块很大的内存区域。因此,Oracle是一个比较耗费内存的软件,且大多消耗在SGA上。SGA的大小是可以配置的,随着数据库的负载加大,数据库实例对内存的需求加大,那么SGA也会扩张甚至会把整个内存都消耗掉。因此,如何科学的分配Oracle数据库系统的内存区对于数据库系统来说是一个至关重要的问题。  3Oracle数据库内存优化  3.1SGA区的内存分

5、配管理  SGA包含以下几大块的基本内存:SharedPool、DatabaseBufferCache、RedoLogBuffer、LargePool、JavaPool。其中SharedPool、DatabaseBufferCache、RedoLogBuffer是核心的内存区域,LargePool和JavaPool是可选的。  SharedPool的主要作用是存储SQL解析后的内容。例如:发出一个SQL语句或命令让数据库执行,SQL在数据库内部就需要被解析,建立执行计划,然后按照执行计划去执行,每个SQL语句都要被解析

6、成原始操作去执行,解析好的SQL语句都会存储在共享池中。在OracleInstance中SharedPool非常重要,它关系到数据库的性能,共享池包含两块共享内存,这两块共享内存关系到数据库的性能。  LibraryCache中存储的是经过编译解析后的SQL和PL/SQL语句的内容。如果下次在执行同样的SQL语句的时候,就不需要解析了,立即从LibraryCache中获取执行。LibraryCache的SIZE决定着编译解析SQL语句的频度,从而决定了性能。  DataDictionary就是存储着数据库的控制信息。为

7、了提高访问DataDictionary的速度,此时需要一个缓存,需要的时候访问内存即可。DataDictionaryCache里面的信息包含了databasefiles、tables、indexes、columns、users、privileges和其他的数据库对象。数据字典是使用最频繁的,几乎所有的操作都需要到数据字典去查询,它的大小是由SharedPool来决定的。  DatabaseBufferCache的任务主要是用于存储数据文件中的数据,在Oracle中数据是存储在磁盘上的,但访问磁盘中的数据速度又会很慢,那

8、么就需要将其中一部分的数据放入到内存中,提升访问的速度。例如一个用户去访问一个表里面的记录时,数据库接收到这个请求后,他首先会在这个缓存中查找是否存在该数据库表的记录,如果有,则直接从内存中读取该记录返回给用户,否则只能去磁盘上去读取。很显然,如果希望性能提高就需要提升Cache的命中率。DatabaseBufferCache中存

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。