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

因此,免费输出我们关心的应用程序内存使用量通常是 – / + buffers / cache行中的可用内存量。 对于像Oracle这样的数据库应用程序来说,为数据库提供大量的caching和缓冲区以便与所有IO一起运行非常重要?

如果这是有道理的,你怎么知道多less?

那么,这有点简单。 简短的答案是“搞砸了,加载testing,直到你find高峰”。

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

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

types#1不关心OS缓冲区caching。 它想要为自己的caching提供所有的内存,并且希望操作系统能够完全摆脱困境(这些系统几乎总能在大型的专用系统上运行)
关于我的头顶甲骨文和Sybase都可以这样configuration,但我相信别人可以。

types#2包括Oracle和Sybase(具有不同的configuration)以及两个开源的juggernauts(MySQL和Postgres)。 这些系统确实关心操作系统缓冲区高速caching,但是他们关心的是多less,这取决于底层存储引擎和操作系统缓冲区高速caching。
在大多数情况下,这里有两层caching(数据库引擎有一个caching,操作系统有缓冲区caching),然后调整两个caching,直到find能够提供最佳性能的组合。

Postgres Wiki中的types#2有更广泛的注释(查找shared_bufferseffective_cache_size )。 这些笔记是特定于Postgres的,但这些概念通常适用于使用文件系统保存其数据的其他数据库引擎。

尽pipe如此,我仍然总是简单回答一下。