在亚马逊"老巢"参加两天的DBA内部技术交流会.
Keynote由Oracle-L后面的骨干Tim Gorman开讲.Tim的主题是如何协调后台的System Admin和前台的UI/Application developer.
可能国内已经有同行知晓Tim的名气,早上一起在亚马逊登记,然后等候入场,基本是尴尬冷场.
Tim引用了一个案例,是说数据仓库开发人员不清楚BitMap索引是如何工作的,一个fact表,五个位图索引,使用SQL MERGE加载数据,强制使用并行处理. Tim用分布事物来比喻并行处理,结果BitMap索引是锁上加锁,处理时间漫长无比.
那么解决方案是什么呢? 鄙人马上脱口而出, exchange partition,
Tim做了补充, union all源数据和目标数据,使用SQL Anylitic function Row_Number()排重(Dedup),然后INSERT进中间表,最终交换表分区.
这个处理设计和我们正在重建的库存系统的数据加载策略基本吻合. 只是我们的需求更加复杂一些,需要保留同一分区(书商)里面没有匹配的数据,set qty=0.
最后,更新问题跟踪系统,给developer留个台阶, 备注是这样的: "DBA的责任,已经解决."
会后我们想谈甚欢,希望以后从他那里接一些分包合同.
Wednesday, September 30, 2009
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment