大表之困惑 - 数据建模的前期规划十分重要
2017-01-30 00:00
218 查看
这几天被一个数据库中的大表所困扰,这是一个插入非常频繁的数据表,该表目前大约有20亿记录,是一个分区表:
然而这个表上建有的都是全局索引,现在需要按照跟索引基本无关的条件进行删除,以下几个索引都无可利用:
客户写了个Loop循环,通过另外一个表的关联去判断删除,另外一个表具有400万记录,初步计算了一下程序效率,跑完一次大约要200天。
好了,现在的问题是,要么面对不可能,要么建个索引,加快处理,可是在20亿上建一个索引,即便是Online的方式,对应用的性能也会有几大的影响。
要么很复杂的去处理,要么很慢的去处理,当初如果多加个索引,该有多好啊!
SQL> SELECT TABLE_NAME,NUM_ROWS,BLOCKS,AVG_SPACE,SAMPLE_SIZE,LAST_ANALYZED 2 FROM DBA_TABLES WHERE OWNER='SMS' AND TABLE_NAME='SSMG'; TABLE_NAME NUM_ROWS BLOCKS AVG_SPACE SAMPLE_SIZE LAST_ANALYZE ------------------------------ ---------- ---------- ---------- ----------- ------------ SSMG 2000426788 60053382 0 101416650 12-SEP-09
然而这个表上建有的都是全局索引,现在需要按照跟索引基本无关的条件进行删除,以下几个索引都无可利用:
SQL> select 2 INDEX_NAME,BLEVEL,LEAF_BLOCKS,DISTINCT_KEYS, 3 NUM_ROWS,CLUSTERING_FACTOR,last_analyzed 4 from 5 dba_indexes t 6 where 7 table_name = 'SSMG' 8 and table_owner = 'SMS' 9 / INDEX_NAME BLEVEL LEAF_BLOCKS DISTINCT_KEYS NUM_ROWS CLUSTERING_FACTOR LAST_ANALYZE ------------------------ ---------- ----------- ------------- ---------- ----------------- ------------ IDX_SMS_DEST_MDN 3 12186077 19507227 2071388105 1816174507 12-SEP-09 IDX_SMS_SERVICE_ID 3 8184696 48 1990938187 113031962 12-SEP-09 UN_SMS 4 21717598 1973096899 1973096899 138625843 12-SEP-09
客户写了个Loop循环,通过另外一个表的关联去判断删除,另外一个表具有400万记录,初步计算了一下程序效率,跑完一次大约要200天。
好了,现在的问题是,要么面对不可能,要么建个索引,加快处理,可是在20亿上建一个索引,即便是Online的方式,对应用的性能也会有几大的影响。
要么很复杂的去处理,要么很慢的去处理,当初如果多加个索引,该有多好啊!
相关文章推荐
- webmenu编程精彩历程(二)菜单xml数据规划
- 用PowerDesigner进行概念数据建模(初体验)
- 用PowerDesigner进行概念数据建模(初体验)
- SD的重要的数据表
- 客户端缓存某些重要用户输入数据的一种方法
- SD的重要的数据表
- 有四种品质,对于人类而言,实在是十分重要的
- PMP顺利通过,我却陷入职业规划之困惑
- 创新性应用-数据建模经验谈-齐红胤
- 困惑我的一道建模题
- 转《商品销售打折自定义的数据建模》
- 转《商品销售打折自定义的数据建模》
- 利用MicroStation的高效绘图和建模能力给Google earth添加数据
- 转《公文转发流程自定义的数据建模 》
- 公文转发流程自定义的数据建模
- 数据仓库 数据库 建模:关于业务主键和逻辑主键的取舍 - [s00n原作]
- 代码阅读总结之ASP.NET StartKit TimeTracker(数据绑定之困惑笔记)
- Java中的几个重要的数据类型
- SD的重要的数据表
- 详细介绍如何保护 MySQL 重要的数据