当前位置:首页 > 内存 > 正文

调整数据库内存(16g内存设置多大虚拟内存)

  • 内存
  • 2024-06-08 07:46:12
  • 7773

一、Oracle10g最大可分配内存数问题,请数据库高手给予解答,详细问题见下:是的,32位Oracle只能使用1.5G(实际上差不多1.7G)内存。即使你允许操作系统识别更多的内存,Oracle也没有办法使用它。不过据说32位Oracle可以通过强制改变参数来超过1.5G内存限制,但是很不稳定。曾有人尝试按照传说中的方法突破极限,但都没有成功。后来我换了64位环境。
如果性能不理想,从可靠性和稳定性方面考虑,强烈建议切换到64位环境,即64位操作系统+64位Oracle。
是的,系统升级和迁移过程是不可避免的。如果实在不想这样做,可以适当扩大pga的容量。当然,结果很可能是sga的减少,这是Oracle性能调优过程的一部分。


二、如何给Oracle数据库分配内存内存是影响数据库性能的重要因素,Oracle8i采用静态内存管理,Oracle
10g采用动态内存管理。在称为静态内存管理的数据库系统中,无论用户连接数或并发访问数有多少,只要数据库服务在运行。将分配固定的内存大小。读取数据块时使用大内存;您可以调整内存大小,以便在读取小数据块时使用小内存,在读取标准内存块时使用标准内存设置。
三、怎样解决SQLServer内存不断增加问题为此,数据库引擎会获取尽可能多的可用内存,同时保留足够的可用内存以防止操作系统交换内存。SQLServer实例在开始完成初始化过程时通常会获取8到12MB的内存。实例完成初始化后,在用户连接到实例并开始生成工作负载之前,不会获取更多内存。此时,实例将继续根据需要获取内存以支持工作负载。随着越来越多的用户连接并运行查询,SQLServer将获取满足需求所需的额外内存。实例将继续获取内存,直到达到其自己的内存分配目标,并且在达到该目标的下限之前不会释放任何内存。为了获得尽可能多的内存而不产生不必要的分页I/O,每个SQLServer实例都配置了一个内存获取目标,直到计算机的可用物理内存在4MB到10MB的范围内。选择此范围是因为测试表明WindowsNT和Windows2000都具有最小内存交换,直到内存分配等于可用物理内存减去4MB。具有繁重工作负载处理任务的SQLServer实例保留范围较低的可用物理内存(4MB);具有轻量工作负载处理任务的实例会保留范围较高端的可用物理内存(10MB)。SQLServer实例的目标会随着工作负载的变化而变化。随着越来越多的用户连接并生成更多工作,实例往往会获取更多内存,以将可内存保持在4MB限制以下。当工作负载减轻时,实例将其目标调整为10MB可用空间,并将内存释放给操作系统。将可用空间量保持在10MB到4MB之间可以防止WindowsNT或Windows2000执行过多的分页操作,同时允许SQLServer获得尽可能大的缓存,而不会导致额外的交换。实例的目标内存配置与数据库缓冲池相对于可用池大小的页面需求有关。在任何实时点,总缓冲区页需求取决于满足任何当前正在执行的查询所需的数据页数量。如果数据页的需求相对于高速缓存中的页数较大,则当前在缓冲区中的每个页很可能在相对较短的时间内被新页替换。这可以通过缓冲区管理器对象的页面生命周期性能计数器来测量。对相对较小缓冲区的高需求的情况将产生较短的生命周期,并且最终效果是I/O增加,因为通常必须重写页面才能被多个逻辑读取引用。为了缓解这个问题,数据库引擎可以获取更多内存来增加缓存大小。当页面生存期较长时,数据库引擎将可用内存定位在目标范围的高端(10MB);当页面生存期较短时,数据库引擎将可用内存定位在目标范围的低端(4MB)。当其他应用程序在运行SQLServer实例的计算机上启动时,它们会消耗内存,导致可用物理内存量低于SQLServer的目标。然后,SQLServer实例从其地址空间释放足够的内存,将可用内存量带回SQLServer的目标。如果其他应用程序停止运行并且可用内存增加,SQLServer实例将增加其内存分配大小。SQLServer每秒能够释放和获取数MB字节的内存,从而使其能够快速调整以适应内存分配的变化。您可以通过置允许SQLServer使用的最大内存来设置限制:最小和最大服务器内存影响minservermemory和maxservermemory配置选项确定SQLServer数据库引擎使用的内存量的上限和下限。数据库引擎不会立即获取minservermemory中指定的内存量。数据库引擎开始时仅使用初始化所需的内存。随着数据库引擎工作负载的增加,它将不断获取支持工作负载所需的内存。在达到minservermemory中指定的内存量之前,数据库引擎不会释放任何所需的内存。一旦达到minservermemory,数据库引擎就会使用标准算法获取和释放所需的内存,将操作系统的可用内存保持在4MB到10MB之间。唯一的区别是数据库引擎永远不会将内存分配降低到minservermemory指定的级别以下,并且永远不会获取超过maxservermemory指定的级别的内存。数据库引擎获得的内存量完全取决于实例上的工作负载。不处理大量请求的SQLServer实例可能永远不会达到minservermemory。如果为minservermemory和maxservermemory指定相同的值,一旦分配给数据库引擎的内存达到该值,数据库引擎将停止动态释放和获取内存。如果您频繁启动或停止运行SQLServer实例的计算机上的其他应用程序,则随着SQLServer实例分配和释放内存,启动这些应用程序所需的时间可能会延长。此外,如果SQLServer是在一台计算机上运行的多个服务器应用程序之一,则系统管理员可能需要控制分配给SQLServer的内存量。