Redian新闻
>
could anyone please share some material on con-joint analysis?
avatar
could anyone please share some material on con-joint analysis?# Business - 商学院
o*8
1
目前在做的数据仓库的一个项目。维度表需要drop掉几个column,drop完以后要重新合
并数据,删掉相同的行,然后update fact 表里的FK。
维度表一共400M 行, 需要清理其中的300M 行 (4年的数据),清理目标目前看能压缩
到15M,所以值得清理。
有6个FACT 表,每个表大概 2.5B 行
每个维度表和fact 表都有大概10个左右的index
初步的策略是
1, 在维度表里加一个flag 列 和 NEW PK 列,把要删掉的行 flag = 1,并且给一个
新值给NEW PK
2,用维度表里的 NEW PK 去update fact 的FK
3,等 UAT 通过后 把维度表里 flag = 1 的删除
4,目前不太想动index,因为建一个index 很费时间
这个过程SQL 不难写,无非就是计算NEW PK 和 flag 的值,然后 update。
难点是数据量太大,时间太长,有哪些好办法可以大大缩短时间的?
avatar
t*b
2
some details around adaptive con-joint, and full-profile conjoint, how to
solve the problem and get the utility function...
thanks so much!
avatar
n*f
3
你這樣做, 理論上可以, 現實面臨問題太多。
比如, 你需要很大的 UNDO, TEMP TBS, 其次, 假如是在線, 你不可能鎖住一個表
太長時間。
用建立新的表來代替在原有表上進行修改試試, 肯定很快。
CREATE TABLE XYZ NOLOGGING AS SELECT C1, C2, C1× OPQ AS C3 。。。。 FROM
ORG_TABLE WHERE ......
THEN DROP ORG TABLE, RENMAE XYZ BACK TO ORG.
底線是, 非要 UPDATE 的地方, 也要在清除大部分存檔數據之後進行
*PLEASE BACKUP ALL TABLES FIRST*
avatar
o*8
4
“ 非要 UPDATE 的地方, 也要在清除大部分存檔數據之後進行”
---请问能详细解释下这是什么意思吗?
维度表数据450G,index 220G。fact表一个表数据1700G,index 1300G,有6个fact表
。建这么多这么大的新表加index也要很长时间吧。。
锁表也考虑过,打算按时间分成小的batch做loop,比如三个月一个batch。然后肯定是
周末做。希望一天能做完,但是现在初步测试算了下总时间大大超过一天了。
avatar
n*f
5
Some updates can be replaced by SELECT statement. For example:
UPDATE A SET COL1 = COL1 + 100
CAN BE REPLACED BY:
CREATE TABLE B NOLOGGING AS SELECT COL1 + 100 AS NEW_COL1 FROM A;
But some updates can't be done by this way for some reason.
YES. it will take time to create indexes.
And you should use partition tables.
avatar
m*o
6
很久没碰过数据库了,不过以前硬件不强,大表都是拆开的,搞这么大表干什么都不方
便啊

【在 o*******8 的大作中提到】
: 目前在做的数据仓库的一个项目。维度表需要drop掉几个column,drop完以后要重新合
: 并数据,删掉相同的行,然后update fact 表里的FK。
: 维度表一共400M 行, 需要清理其中的300M 行 (4年的数据),清理目标目前看能压缩
: 到15M,所以值得清理。
: 有6个FACT 表,每个表大概 2.5B 行
: 每个维度表和fact 表都有大概10个左右的index
: 初步的策略是
: 1, 在维度表里加一个flag 列 和 NEW PK 列,把要删掉的行 flag = 1,并且给一个
: 新值给NEW PK
: 2,用维度表里的 NEW PK 去update fact 的FK

avatar
n*f
7
樓主用的是 SQL SERVER。 這點數據用 ORACLE 來處理, 真的算不了什麼。
不懂 SQL SERVER 是處理不了, 還是。。。。呵呵

【在 m****o 的大作中提到】
: 很久没碰过数据库了,不过以前硬件不强,大表都是拆开的,搞这么大表干什么都不方
: 便啊

avatar
o*8
8
SQL server 是可以处理的,只是在探讨一个省时间的最佳方案。
目前不想做新表,也不想动index,重点放在研究query plan,利用现有的index,尝试
不同的where clause 分batch处理。已经找到几个最佳的query plan,还在进一步测试。

【在 n****f 的大作中提到】
: 樓主用的是 SQL SERVER。 這點數據用 ORACLE 來處理, 真的算不了什麼。
: 不懂 SQL SERVER 是處理不了, 還是。。。。呵呵

avatar
s*o
9
不知道你的QUERY弄些什么,如果是DW,搞很多ROLL UP的话,应该用COLUMN STORED
INDEX
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。