转载

如何在一个实例下并存行存储和列存储数据库

相关概念

BLU Acceleration

BLU Acceleration 是 DB2 10.5 最新特性,与传统的行存储数据方式不同,数据是按照列来进行组织存储的,即采用列式存储。BLU 除了列存储表特性外,它的数据跳读,SIMD 和类哈弗曼的压缩算法等特性方便在内存中完成数据处理,简化并且加速了数据分析的工作量。同时不再需要索引、MQT 等,这样易于实施并可以自行调优,提高了 CPU 的使用率,以及降低了 IO。

IBM Data Server Manager

IBM 最新推出的管理多种平台数据库的工具 IBM Data Server Manager(以下简称 DSM), 既可以针对对象做一系列操作,也可以修改数据库实例层面的参数。所以本文都在此工具上操作,并以实例开始。

激活 BLU 配置

借助 DSM 配置

IBM DB2 10.5 支持 BLU,但安装完后默认没有打开 BLU 设置的。我们可以通过 DSM 来完成设置。首先选中实例,会看到配置 BLU 选项。

图 1. 配置 BLU 界面

如何在一个实例下并存行存储和列存储数据库

图 2. 配置 BLU 命令

如何在一个实例下并存行存储和列存储数据库

命令行直接配置

如果是在 DB2 端直接配置,首先确认实例没有打开 BLU 配置,执行以下命令:

清单 1. 产看实例 BLU 配置命令

db2set -all

在结果中查看是否有“DB2_WORKLOAD=ANALYTICS”。如果还没有 BLU 设置,执行 DB2 命令:

清单 2. 配置实例 BLU 命令

db2set DB2_WORKLOAD=ANALYTICS

配置完成后再次确认。此时,该实例下的数据库都是支持列存储的。

默认按行存储配置下并存行存储表和列存储表

行存储表

完成以上配置后,该实例已支持列存储。而且创建的数据库默认是行存储的,具体如下:

图 3. 用 DSM 创建数据库

如何在一个实例下并存行存储和列存储数据库

图 4. DSM 创建数据库界面

如何在一个实例下并存行存储和列存储数据库

创建完数据库后,查看其配置,可以看到是默认行存储的:

图 5. DSM 查看数据库默认存储配置

如何在一个实例下并存行存储和列存储数据库

我们可以通过创建一个默认组织的表来确认。同一实例下的其他数据库比如 T1,保持原有默认设置,也就是默认是行存储的。

图 6. 默认行存储下创建默认组织表

如何在一个实例下并存行存储和列存储数据库

图 7. 默认行存储下默认为行存储表

如何在一个实例下并存行存储和列存储数据库

列存储表

此时,如果想使用列存储表,在创建表时选择“组织”为“Column”即可。

修改默认存储配置

借助 DSM 修改配置

如果想修改当前数据库为默认列存储,可以直接修改:

图 8. DSM 修改数据库默认存储配置

如何在一个实例下并存行存储和列存储数据库

这是及时生效的,可以修改完后再次打开配置页面确认。

命令行直接修改默认存储配置

如果是在 DB2 端设置,过程如下:

查看数据库配置中的 DFT_TABLE_ORG 选项,如果值为“ROW”则为默认行存储,“COLUMN”表示默认列存储。

清单 3. 查看默认存储配置命令

db2 get db cfg|grep DFT_TABLE_ORG

执行以下命令来改为列存储:

清单 4. 修改默认存储配置命令

db2 update db cfg for overhead using dft_table_org column

默认按列存储配置下并存行存储表和列存储表

行存储表

创建表时不使用默认的组织,选择为“Row”,则该表为行存储表。

图 9. 默认列存储下创建行存储表

如何在一个实例下并存行存储和列存储数据库

图 10. 默认列存储下创建的行存储表

如何在一个实例下并存行存储和列存储数据库

列存储表

此时默认就是列存储表,当然,也可以选择组织为 column。

图 11. 默认列存储下创建默认组织表

如何在一个实例下并存行存储和列存储数据库

图 12. 默认列存储下默认为列存储表

如何在一个实例下并存行存储和列存储数据库

跟踪和比较配置

跟踪配置

由上可以看出 DFT_TABLE_ORG 选项控制的是数据库默认存储设置。Row 表示默认行存储,column 就是默认列存储。而且该设置修改是及时生效的。此类数据库级别的修改更新可以在 DSM 产品中跟踪查看。可以清晰看出参数 DFT_TABLE_ORG 的变化情况,从而可以判断出每个瞬间段创建的默认表的类型。

图 13. DSM 跟踪配置更改

如何在一个实例下并存行存储和列存储数据库

图 14. DSM 跟踪配置的对象类型

如何在一个实例下并存行存储和列存储数据库

图 15. DSM 跟踪配置详情

如何在一个实例下并存行存储和列存储数据库

比较配置

事实上,很多时候我们会同时管理多个数据库,如果要做更新修改时,会先选一个测试库或一个样库来处理。处理好后先确认更新修改成功在去配置其他数据库。面对几十或上百个数据库时,创建表或打开配置信息列表产看显然不再十分适用。创建表需要更多时间而且浪费存储空间,配置信息列表只能看当前数据库的配置详细信息,但更多情况下需要在测试库或样库与生产库之间做对比,既包括数据库级别的配置也会详细到数据库对象级别的比较。那么,这种情况下,我们可以运用 DSM 的“比较配置”功能来完成。

“比较配置”也是在“管理”菜单下,进入到页面后,先选择要比较的对象,此次实验我们要比较文中用到的数据库 T3 和 T1。

图 16. DSM 比较配置支持的对象类型

如何在一个实例下并存行存储和列存储数据库

选中一个数据库后,设置为比较的“源”如下图,我们这里用 db2inst3 下的 T1 作为源数据库:

图 17. DSM 比较配置数据库选择源数据库

如何在一个实例下并存行存储和列存储数据库

然后再选中要与源比较的数据库,我们选择 db2inst3 下的 T3 与 T1 比较,选中 T3 后会自动出比较结果:

图 18. DSM 比较配置数据库结果界面

如何在一个实例下并存行存储和列存储数据库

我们只关注不同点,也就是我们关注的数据库关于默认存储 DFT_TABLE_ORG 的设置,点开不同点后结果如下图:

图 19. DSM 比较配置数据库结果之不同点详情

如何在一个实例下并存行存储和列存储数据库

如此,T3 数据库默认存储是列存储,T1 数据库保持原有行存储的设置。而且,他们同属 db2inst3 实例。

结束语

总结来看,要在一个实例下并存行存储和列存储,首先设置参数 db2set DB2_WORKLOAD 来支持 BLU。然后设置数据库默认存储 DFT_TABLE_ORG,ROW 为默认行存储,COLUMN 为默认列存储,此时同时支持行存储表和列存储表。此过程中可以借助 DSM 来跟踪比较数据库的配置以方便部署实施。

原文  http://www.ibm.com/developerworks/cn/data/library/techarticle/dm-1606-db2blu-column-store/index.html?ca=drs-
正文到此结束
Loading...