Linux 上数据库的内存使用情况

Linux 上数据库的内存使用情况

因此,对于空闲输出,我们关心的应用程序内存使用情况通常是 -/+ 缓冲区/缓存行中的空闲内存量。对于 Oracle 等数据库应用程序,拥有大量可用的缓存和缓冲区是否对数据库在所有 IO 下正常运行很重要?

如果这有意义的话,您如何计算出到底有多少?

答案1

嗯,这是有点很简单。简短的回答是“弄乱它并进行负载测试,直到找到峰值性能”。

更多详情:
大多数数据库引擎都属于以下两个过于宽泛的类别之一:

  1. 接管原始磁盘设备并执行原始 I/O 的数据库
  2. 在操作系统的文件系统 (FS) 中创建文件(“磁盘文件”或其他方案)的数据库

类型 #1 不关心操作系统缓冲区缓存。它希望占用所有 RAM 来作为自己的缓存,并且更希望操作系统不要插手(这些系统几乎总是在大型专用系统上运行)我
首先想到 Oracle 和 Sybase 都可以这样配置,但我相信其他系统也可以。

第二类包括 Oracle 和 Sybase(配置不同),以及两大开源巨头(MySQL 和 Postgres)。这些系统关心操作系统缓冲区缓存,但是多少他们关心的是什么是有争议的,取决于底层存储引擎和操作系统缓冲区缓存的效率。
在大多数情况下,这里有两层缓存(数据库引擎有一个缓存,操作系统有它的缓冲区缓存),你可以调高和调低这两个缓存,直到找到能给你带来最佳性能的组合。

关于类型 #2 的更多注释请参见Postgres 维基(查找shared_buffers& effective_cache_size)。这些注释是 Postgres 特有的,但这些概念通常适用于使用文件系统保存数据的其他 DB 引擎。

但它仍然归结为我在一开始给出的简短答案。

相关内容