2015-08-28 83 views
0

以下是QUEUES的最新記錄。如何更改WX2中的隊列ID?

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引擎的配置元數據表。這有點複雜。

+0

我不認爲有一種方法來指定在IPE_ALL_QUEUES中使用的ID,但爲什麼你需要它們是SMALLINT?是否因爲您在其他地方存儲了大量對此表的引用?如果是這樣,你可以添加一個間接層,它將SMALLINT(例如14)映射到所需的INT(例如100004) - 間接表將被複制並且很小,並且使用它加入到IPE_ALL_QEUEUES中的成本以及您的大使用SMALLINT的表在性能和RAM使用方面可以忽略不計。 – mc110

+0

謝謝馬克。你能把這個帖子作爲答案嗎? – SriniV

回答

0

我不認爲有一種方法可以指定IPE_ALL_QUEUES中使用的ID,但是它們不應該是SMALLINT而不是INT。

如果您在其他地方存儲大量對此表的引用,您可以看到這些引用是SMALLINT類型的好處(從減少存儲需求的角度來看,特別是如果引用位於基於RAM的對象中)。

如果是這樣,您可以添加一個間接層,它將SMALLINT(例如14)映射到所需的INT(例如100004) - 間接表將被複制並且很小,並且使用它的成本除了在性能和RAM使用方面,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>