db2 表空间大小和性能影响

db2 表空间大小和性能影响

最初,当我们开始迁移到 db2 LUW 时,我们遇到了一些问题,我们的表太大,无法放入默认的 4K 表空间。由于“压力”,我们只能使用 32K 默认表空间并将所有表都放在那里。

如果有的话,这会产生什么影响?我和一个人谈过,他说这可能会使数据库比需要的大得多。这是真的吗?内存呢?将较小的表移回 4K 表空间有什么好处吗?我在论坛等地方查看过,但似乎找不到好的答案。

答案1

简而言之,如果你的要求相对较低(数据库较小,事务量较低),我不会费心为不同的页面大小设置不同的表空间。然而,存在与性能和空间需求相关的问题,将要如果您的数据库很大或者交易量增加,则升级。

DB2 可以在一页中保存最多固定数量的行(来源):

如果将行长为 12 字节的表放置在页面大小为 32K 的表空间中,则该表仅利用了每页的约 10%,计算方式为 (255 行 * 12 字节) + 91 字节开销) / 32k 页面大小 = ~10%。只有在表很大时才需要考虑这一点,因为表很大意味着浪费的空间很大。这还会降低 I/O 和缓冲的效率,因为每页的实际有用内容很少。

如果数据库足够小,可以完全放入缓冲池中,那么性能方面可能不会有明显差异。此外,如果数据库很小,您可能不会注意到多了几 GB 的已用空间。

您可以优化(可能 IBM 的想法)的是,您可以在不同的 IO 设备上设置表空间,还可以针对确切的用例优化缓冲池。例如,对所有表使用相同的缓冲池可能会导致某些次要功能(例如应用程序中的某些管理员任务)经常将最常用的数据从缓冲池中清除。例如,将临时表之类的东西放入不同的表空间和缓冲池中,您可以控制宝贵的内存的用途。但是如前所述,这些事情只有在某个点之后才开始变得重要。

答案2

据 IBM 称,在基本安装中,大小或性能方面没有太大差异。任何收益都来自于拥有多个表空间并单独优化它们。

相关内容