我正在使用 Flyway 来管理 IBM dashDB上的数据库迁移。该数据库默认“按列”组织表内容,这尤其使"schema_version"
表的创建失败。为了让它工作,表创建 SQL 语句应该只包含"ORGANIZE BY ROW"
指令:
CREATE TABLE (...)
(...)
) ORGANIZE BY ROW
处理这个问题的最佳方法是什么?我正在寻找一种不会影响默认表组织的解决方案。感谢您的帮助,干杯。
当所有表都是基于列的时,dashDB 将表现最佳。当您开始混合基于行和列的表时,许多操作会在“补偿”中执行,这基本上意味着它们不会充分利用列引擎。
目前有一些兼容性原因导致无法创建柱状表,因此必须使用基于行的表,但说明了原始 DDL 或错误,所以在这种情况下我无法判断。如果您可以提供完整的 CREATE TABLE 语句和产生的错误(如果有的话),我可能会提供一个替代解决方案,让您仍然可以使用所有基于列的表。
如果您只想将特定表从有组织的列更改为有组织的行,那么建议在表定义上使用“ORGANIZE BY ROW”来解决此问题。(这似乎是你在做什么)
当您不在表 ddl 中放置“ORGANIZE BY”时,更改默认表 org 将更改表的创建方式。
如果您对 dashDB 实例具有管理员权限,则可以通过 dashDB 控制台中的“运行 SQL”或使用 dashDB 客户端更改默认表组织。(例如:clp/clpplus)
将默认表组织设置为 ROW:
call ADMIN_CMD('UPDATE DB CFG USING DFT_TABLE_ORG ROW');
将默认表组织设置为 COLUMN:(默认 dashDB 配置)
call ADMIN_CMD('UPDATE DB CFG USING DFT_TABLE_ORG COLUMN');
使用 Column 组织的表时,Analytics 会表现得更好,因此建议将大多数表作为列组织。