如何在数据库中创建专用于一个大表的缓冲池?

时间:2013-02-12 09:06:57

标签: db2 buffer tablespace

我在数据库(DB2)中有400K记录的表TICKET。

我希望创建一个巨大的缓冲池,它将专用于这一个大表,以便更快地响应。有什么步骤呢?

此刻,我还有一个缓冲池,它将整个表空间与数据库中的所有表(大约200个)进行共存!然后会在那个旧的第一个创建的缓冲池中使用我的特定表格会发生什么?应该该表保留在第一个缓冲池或如何从该缓冲池中删除? 这个行动还有一些风险???

谢谢

1 个答案:

答案 0 :(得分:1)

我认为这篇文章会对您有所帮助:http://www.ibm.com/developerworks/data/library/techarticle/0212wieser/index.html

将大表移动到不同的缓冲池可能会提高性能,但这取决于您的用例。文章的相关引用:

  

拥有多个缓冲池可以保留缓冲区中的数据。对于   例如,您可能拥有一个非常频繁使用的数据库   小表,通常在整个缓冲区中   可以非常快速地访问。您可能还有一个运行的查询   针对使用相同缓冲池并涉及的非常大的表   读取的页数超过总缓冲区大小。运行此查询时   小的,经常使用的表中的页面丢失了   当需要它们时,有必要重新阅读它们。如果小   表有自己的缓冲池,因此有必要   他们拥有自己的表空间,他们的页面不能被覆盖   通过大型查询。这可以带来更好的整体系统   表现,虽然以一个小的负面影响的价格   大查询。

如果您决定这样做,每个表空间只能有一个缓冲池,因此您需要将大表移动到自己的表空间中。本文提供了创建表空间和缓冲池的示例。

可以使用ADMIN_MOVE_TABLE将表移动到另一个表空间。我不认为这有风险。它捕获在移动期间可能对源表进行的更改。它唯一能做的就是在移动过程中禁用源表上的一些(很少使用的)动作。

通过在CREATE TABLESPACEALTER TABLESPACE语句中指定缓冲池,将缓冲池分配给表空间。