如何更改WX2中的队列ID?

时间:2015-08-28 06:40:33

标签: kognitio-wx2 kognitio wx2

以下是来自QUEUES的当前记录。

SELECT * FROM SYS.IPE_ALLQUEUES;

ID      NAME
------- ----------
100004  NAGIOS
1       DEFAULT
100003  OTHER
100002  APP
100001  ANALYST
0       NONQUEUED

ID列当前定义为INTEGER,我们计划将其更改为SMALLINT。所以我需要更改id如下

SELECT * FROM SYS.IPE_ALLQUEUES;

ID      NAME
------- ----------
14      NAGIOS
1       DEFAULT
13      OTHER
12      APP
11      ANALYST
0       NONQUEUED

如何在WX2中实现这一目标?

注意:我不是在询问有关ID的简单更新,因为这是WX2引擎的配置元数据表。这有点复杂。

1 个答案:

答案 0 :(得分:0)

我不认为有一种方法可以指定IPE_ALL_QUEUES中使用的ID,但它们应该没有任何好处,因为它们是SMALLINT而不是INT。

如果要在其他地方存储大量对此表的引用,您可以看到这些引用属于SMALLINT类型的好处(就减少的存储要求而言,特别是如果引用位于基于RAM的对象中) 。

如果是这样,你可以添加一个间接层,将SMALLINT(例如14)映射到所需的INT(例如100004) - 间接表将被复制并且很小,并且除了IPE_ALL_QUEUES之外还使用它进行连接的成本并且你的SMALLINT大表在性能和内存使用方面可以忽略不计。

CREATE TABLE largeref(qref SMALLINT, ...);
CREATE TABLE reflookup(qref SMALLINT, queue_id INT);
-- populate lookup with entries like (14, 100004)
-- populate largeref with SMALLINT references
-- replicate reflookup

SELECT Q.NAME, ...
FROM ipe_allqueues q, reflookup r, largeref l
WHERE q.id = r.queue_id
AND r.qref = l.qref
AND <other predicates on e.g. largeref>