RPK Asked: 2012-04-27 22:19:44 +0800 CST2012-04-27 22:19:44 +0800 CST 2012-04-27 22:19:44 +0800 CST 2GB RAM PC 上推荐的缓冲池大小是多少? 772 我在具有 2 GB RAM 并运行 Windows Server 2008 R2 操作系统的 PC 上安装了 DB2 Express-C。创建新数据库时,可以选择将缓冲池大小设置为默认设置为 4K。 上述配置的推荐池大小是多少? 我还想知道是否为每个数据库使用默认缓冲池或单独的缓冲池。 db2 windows 2 个回答 Voted Best Answer Chris Aldrich 2012-04-28T04:46:37+08:002012-04-28T04:46:37+08:00 默认大小为 4K。您还可以指定 8K、16K 或 32K。缓冲池的大小实际上应该基于表的大小(即,一行数据可以容纳多少字节)。如果一行数据不适合 4K 页面,那么它也不适合 4K 缓冲池。因此你需要更大的。 表空间(存储表的“物理容器”)也是如此。一个需要8K缓冲池的表,需要驻留在一个8K的表空间中。实际上,您还可以将该表空间关联到缓冲池.... 话虽如此,如果您真的只有 4K 表,不要只是“超大”并使用 32K 表空间和缓冲池。你会浪费大量的磁盘空间和内存。 此外,您可以拥有任意数量的缓冲池(我确定有上限,但我不知道)。但是你可以有它们的任意组合。您可以拥有五个 4K 池、一个 8K 池、一个 16K 池和三个 32K 池。 如前所述,最重要的是更多地基于您的桌子大小和理解。 虽然,这是一件好事……在您创建缓冲池和表空间之后,DB2 足够聪明,可以将表放入正确大小的表空间(等待它存在)。您可以在 DDL 代码中指定它,但 DB2 足够聪明,可以将一个 8K 的表放在一个 8K 的表空间中(因此它也将与一个 8K 的缓冲池相关联)。 好的......现在回答你的最后两个问题。真的没有“推荐”尺寸。默认4K就可以了。我工作的大多数表都适合 4K 表空间和 4K 缓冲池。 不过,作为最佳实践,我们倾向于做的是……我们设置了自己的 4K、8K 和 32K 表空间和缓冲池(包括用于重组的临时表空间)。为什么我们不设置 16K,我不确定。但是我们在所有数据库中设置了多种尺寸。这样,如果任何开发人员创建一个大于 4K 的表,它将自动放入适当更大的表空间(以及缓冲池)。 希望这对您来说已经足够清楚了。我还发现这篇文章有助于我自己理解缓冲池和表空间。 tytchong 2012-06-02T14:47:16+08:002012-06-02T14:47:16+08:00 除了缓冲池之外,还有来自 DB2 的 2GB 内存的其他消费者。诸如 UTILHEAP、SORTHEAP 等之类的东西。因此,实际上在整体情况下需要考虑的不仅仅是缓冲池。您是否考虑过使用 AUTOMATIC?DB2 具有称为自调整内存 (STMM) 的功能,您可以将实例内存配置为 AUTOMATIC 或某个固定值,STMM 管理器将即时为您确定内存设置。 如果您对 STMM 不感兴趣(Express-C 可能不可用),那么在设计缓冲池时您应该考虑的事情是您的工作负载需要多少,以及您需要在内存中存储多少数据。例如,如果您有一个需要一直访问的热表并且整个表需要在缓冲池中,那么您最好让缓冲池足够大,以便您可以容纳该表的大部分页面。 有建议将临时数据与永久数据分开的最佳实践。所以如果你做了很多涉及临时数据使用的事情,比如排序、用户临时等等,那么你最好把两个缓冲池分开,这样临时数据不会污染您的真实数据缓冲池。 希望这可以帮助。
默认大小为 4K。您还可以指定 8K、16K 或 32K。缓冲池的大小实际上应该基于表的大小(即,一行数据可以容纳多少字节)。如果一行数据不适合 4K 页面,那么它也不适合 4K 缓冲池。因此你需要更大的。
表空间(存储表的“物理容器”)也是如此。一个需要8K缓冲池的表,需要驻留在一个8K的表空间中。实际上,您还可以将该表空间关联到缓冲池....
话虽如此,如果您真的只有 4K 表,不要只是“超大”并使用 32K 表空间和缓冲池。你会浪费大量的磁盘空间和内存。
此外,您可以拥有任意数量的缓冲池(我确定有上限,但我不知道)。但是你可以有它们的任意组合。您可以拥有五个 4K 池、一个 8K 池、一个 16K 池和三个 32K 池。
如前所述,最重要的是更多地基于您的桌子大小和理解。
虽然,这是一件好事……在您创建缓冲池和表空间之后,DB2 足够聪明,可以将表放入正确大小的表空间(等待它存在)。您可以在 DDL 代码中指定它,但 DB2 足够聪明,可以将一个 8K 的表放在一个 8K 的表空间中(因此它也将与一个 8K 的缓冲池相关联)。
好的......现在回答你的最后两个问题。真的没有“推荐”尺寸。默认4K就可以了。我工作的大多数表都适合 4K 表空间和 4K 缓冲池。
不过,作为最佳实践,我们倾向于做的是……我们设置了自己的 4K、8K 和 32K 表空间和缓冲池(包括用于重组的临时表空间)。为什么我们不设置 16K,我不确定。但是我们在所有数据库中设置了多种尺寸。这样,如果任何开发人员创建一个大于 4K 的表,它将自动放入适当更大的表空间(以及缓冲池)。
希望这对您来说已经足够清楚了。我还发现这篇文章有助于我自己理解缓冲池和表空间。
除了缓冲池之外,还有来自 DB2 的 2GB 内存的其他消费者。诸如 UTILHEAP、SORTHEAP 等之类的东西。因此,实际上在整体情况下需要考虑的不仅仅是缓冲池。您是否考虑过使用 AUTOMATIC?DB2 具有称为自调整内存 (STMM) 的功能,您可以将实例内存配置为 AUTOMATIC 或某个固定值,STMM 管理器将即时为您确定内存设置。
如果您对 STMM 不感兴趣(Express-C 可能不可用),那么在设计缓冲池时您应该考虑的事情是您的工作负载需要多少,以及您需要在内存中存储多少数据。例如,如果您有一个需要一直访问的热表并且整个表需要在缓冲池中,那么您最好让缓冲池足够大,以便您可以容纳该表的大部分页面。
有建议将临时数据与永久数据分开的最佳实践。所以如果你做了很多涉及临时数据使用的事情,比如排序、用户临时等等,那么你最好把两个缓冲池分开,这样临时数据不会污染您的真实数据缓冲池。
希望这可以帮助。