内存中的整个 Oracle 数据库

Whole Oracle database in memory

假设我有一个 Oracle 数据库,其数据文件大小为 256 GB。为了在 RAM 中托管整个数据库,使用具有 384 GB RAM 的服务器是个好主意吗?

如果您只有 128 GB 内存,有什么不同吗?

我说的是缓存和 Oracle 内部工作原理,而不是基于内存的文件系统。假设 OLTP,和一个 100 GB 的工作集。

此致,

假设您谈论的是 Oracle 使用内存进行缓存和其他进程,而不是基于内存的文件系统(这是一个糟糕的想法)……更多的内存几乎总是比更少的内存更好。

现实世界的答案视情况而定。如果您的工作数据集是几 GB 或更少,那么额外的内存将无济于事。

您需要多少内存以及额外内存何时停止提供帮助取决于您的应用程序以及何种类型的数据库(OLTP、DSS)并且没有简单的yes/no答案。

使用视图 V$SGA_TARGET_ADVICE and V$PGA_TARGET_ADVICE 来预测额外内存的性能提升。

Oracle 记录了许多关于物理(磁盘)和逻辑(总计)I/O 请求的统计数据。人们过去常常痴迷于 buffer cache hit ratio。它可能会有所帮助,但这个数字并不能说明全部情况。如果该比率是 99%,那么您的缓存可能已经足够,添加更多内存也无济于事。如果它很低,那么您可能受益于更多的内存,或者使用磁盘的进程可能不是时间关键的。

请求更多内存前请小心。我见过很多内存被浪费的情况,因为有些人认为更多的内存可以解决所有问题。 Oracle 有许多 I/O 功能可以帮助减少内存需求。 "in-memory database" 时尚主要是炒作。