0

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

我希望创建一个巨大的缓冲池,它只专用于这个大表,以便更快地响应。有哪些步骤来做到这一点?

目前我还有一个缓冲池,它用数据库中的所有表(大约 200 个)覆盖整个表空间!那么我在那个旧的第一个创建的缓冲池中的特定表会发生什么?该表应该留在第一个缓冲池中还是如何从该缓冲池中删除?这个动作也有风险???

谢谢

4

1 回答 1

1

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

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

拥有多个缓冲池可以将数据保存在缓冲区中。例如,您可能有一个数据库,其中包含许多非常常用的小表,这些小表通常整个都在缓冲区中,以便可以非常快速地访问。您可能还有一个针对使用相同缓冲池的非常大的表运行的查询,并且涉及读取比总缓冲区大小更多的页面。当此查询运行时,小型、非常频繁使用的表中的页面会丢失,因此需要在再次需要时重新读取它们。如果小表有自己的缓冲池,那么它们就必须有自己的表空间,那么它们的页就不能被大查询覆盖。这可以带来更好的整体系统性能,尽管代价是对大型查询的负面影响很小。

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

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

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

于 2013-02-12T10:07:51.943 回答