0

以下是队列中的当前记录。

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 引擎的配置元数据表。这有点复杂。

4

1 回答 1

0

我认为没有办法指定 IPE_ALL_QUEUES 中使用的 id,但它们是 SMALLINT 而不是 INT 应该没有任何好处。

如果您在别处存储对该表的大量引用,您可以看到这些引用为 SMALLINT 类型的好处(在减少存储需求方面,特别是如果引用位于基于 RAM 的对象中)。

如果是这样,您可以添加一个间接层,将 SMALLINT(例如 14)映射到所需的 INT(例如 100004) - 间接表将被复制且很小,并且除了 IPE_ALL_QUEUES 和您的大带有 SMALLINT 的表在性能和 RAM 使用方面可以忽略不计。

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>
于 2015-08-29T15:38:05.087 回答