互联网服务

求助!10亿大表插入、查询优化

DB2版本:9.5

现有一个非常大的表A,数据量已经达到13亿。表上有op_time,kpi_id,group_id,value等字段。
索引A1(op_time,group_id),
索引A2(group_id,kpi_id)。
表上经常做的查询为:select * from A where kpi_id = 'kpi_id' and group_id = 'group_id' and op_time between '2011-04-10' and '2012-04-10'。
该表每天要增长大约200万数据左右,因为索引的原因,插入非常耗时,不要索引,查询又很慢。该表每天都做runstats。

现在建了一张分区表,按op_time字段每天分区,不建索引的时候,测试插入速度非常快,但是查询速度很慢。建了索引(全局索引,9.5好像不能建分区索引)查询速度很快,但是插入速度变来和以前普通表一样。

请问各位DX,有什么好的方法能解决这个问题呢?
参与18

17同行回答

qqdzyhqqdzyh数据库管理员苏宁电器
9.7可以很好的解决这个问题了~~先开始很快  后面慢了  考虑REORG索引显示全部
9.7可以很好的解决这个问题了~~先开始很快  后面慢了  考虑REORG索引收起
2012-05-30
浏览805
gkathyhgkathyh数据库管理员
每次插入数据前 把索引干掉 完后 在建立?这样比一下 用的时间 ?不知道 是否得不偿失显示全部
每次插入数据前 把索引干掉 完后 在建立?这样比一下 用的时间 ?不知道 是否得不偿失收起
IT分销/经销 · 2012-05-30
浏览804
王飞鹏王飞鹏信息分析/架构师IBM
试试MQT吧,基表上插入,MQT上查询,这样实现了读写分离,不过多占用了空间。看看性能怎么样。显示全部
试试MQT吧,基表上插入,MQT上查询,这样实现了读写分离,不过多占用了空间。看看性能怎么样。收起
互联网服务 · 2012-05-21
浏览805
菜菜鸟一号菜菜鸟一号数据库管理员龙信科技
对于目前的情况,建议你对这张表单独做个索引表空间,该索引表空间单独配置个bufferpool试试!显示全部
对于目前的情况,建议你对这张表单独做个索引表空间,该索引表空间单独配置个bufferpool试试!收起
互联网服务 · 2012-05-03
浏览803
ibm_wangweiibm_wangwei咨询顾问IBM
可以考虑用op_time,group_id,kpi_id 这个三个字段建立一个MDC,如果group_id,kpi_id的一个或者两个值非常多的话,就可以去掉其中一个。所以可以用三个字段去建立MDC,但是具体要用三个字段,还是两个字段,哪两个字段,就需要具体的去做测试。并且MDC对清除一部分数据很有帮助。或者...显示全部
可以考虑用op_time,group_id,kpi_id 这个三个字段建立一个MDC,如果group_id,kpi_id的一个或者两个值非常多的话,就可以去掉其中一个。所以可以用三个字段去建立MDC,但是具体要用三个字段,还是两个字段,哪两个字段,就需要具体的去做测试。并且MDC对清除一部分数据很有帮助。或者可以用op_time做RANGE,而group_id,kpi_id 中的一个做MDC,另一个建立索引。收起
IT分销/经销 · 2012-05-03
浏览816
ljbupcljbupc软件开发工程师上海安硕科技
回复 12# weiruan85 感觉应该每天reorg该表的索引就能行了。。显示全部
回复 12# weiruan85
感觉应该每天reorg该表的索引就能行了。。收起
互联网服务 · 2012-04-20
浏览798
weiruan85weiruan85数据库管理员ibm
回复 7# maestro       差别如此之大,那就先插入,然后创建索引。 每次插入前先删除索引。    至于为什么时间差别这么大你对insert 做一下快照。"因为要在插入期间创建索引,使得需要创建越来越多的索引页,并且可能还要进行随机的 I/O 操作,读取...显示全部
回复 7# maestro


      差别如此之大,那就先插入,然后创建索引。 每次插入前先删除索引。    至于为什么时间差别这么大你对insert 做一下快照。

"因为要在插入期间创建索引,使得需要创建越来越多的索引页,并且可能还要进行随机的 I/O 操作,读取已有的索引页以便更新它们。如果的确是上述情况,那么使用更大的缓冲池是最好的解决办法,但是为索引页增加更多的自由空间也有所帮助 "收起
政府机关 · 2012-04-20
浏览810
mdkiimdkii软件开发工程师bocn
1秒几百行, 只有两个索引,不可能影响这么大吧。是不是要考虑把你的表和索引reorg一下?显示全部
1秒几百行, 只有两个索引,不可能影响这么大吧。
是不是要考虑把你的表和索引reorg一下?收起
银行 · 2012-04-19
浏览996
wp28556259wp28556259软件架构设计师CMBC
回复 7# maestro    感觉不应该这么慢的,肯定有原因。同问~显示全部
回复 7# maestro


   感觉不应该这么慢的,肯定有原因。同问~收起
银行 · 2012-04-19
浏览1004
陈辉陈辉研发工程师IBM
这个问题,我觉得不是SQL优化,或索引优化的问题,可能要考虑到物理设计,以及架构设计层面。这种大数据量,一般建议的就是分区,分库。 另外,从架构上建议,可以增加备库,读写分离,多点并发读取。...显示全部
这个问题,我觉得不是SQL优化,或索引优化的问题,可能要考虑到物理设计,以及架构设计层面。这种大数据量,一般建议的就是分区,分库。 另外,从架构上建议,可以增加备库,读写分离,多点并发读取。收起
软件开发 · 2012-04-19
浏览989

提问者

maestro
软件开发工程师天源迪科
擅长领域: cognos大数据联机分析处理

问题状态

  • 发布时间:2012-04-10
  • 关注会员:1 人
  • 问题浏览:9570
  • 最近回答:2012-05-30
  • X社区推广