查看: 3479|回复: 10

[讨论] 一个表的检索优化求助

[复制链接]
论坛徽章:
0
发表于 2009-6-9 11:06 | 显示全部楼层 |阅读模式
各位高手,看看这边一个检索优化的问题:

现状描述:
1.当前有一个表,数据量在6千万左右,每月50万左右的增量。由于用户在检索这个表时的SQL文(应用程序发送)是动态生成的(用户自行选择需要检索的列和条件),所以Where条件中可能使用到表中的任意字段(当前表有60个字段)。

2.当前我们已经对表中的某些字段进行了BITMAP索引,剩余字段未进行任何的索引

3.一般情况下用户发送的SQL文统计某种条件下记录条数的合计 select count(1) from table where column condition

4.每月会对表进行50万左右数据的插入操作

已有问题:
1.WHERE条件中对于使用到BITTMAP索引的列,系统检索使用到索引,并且速度较快,但发生大量的唯一读(db file sequential read)
2.WHERE条件中对于未使用到BITMAP索引的列,系统使用全表扫描,检索速度非常慢,并且发生大量的散列读等待(db file scattered read)
3.每月插入数据时速度非常慢(50万增量)

预计解决问题的方法:
1)对每个字段进行统计数据收集,让系统使用全表扫描的方式进行检索
2)对每个字段建立对应索引(B-Tree 或 BITMAP),让系统使用索引进行检索
3)每月插入数据前删除索引,然后导入数据,数据导入后重新建立索引,重建花费的时间很长(使用BITMAP索引的原因)

对于以上的情况,请各位高手指点。

[ 本帖最后由 juky_huang 于 2009-6-9 11:36 编辑 ]
论坛徽章:
0
 楼主| 发表于 2009-6-9 11:47 | 显示全部楼层
自己顶一下!

使用道具 举报

回复
论坛徽章:
400
紫蛋头
日期:2012-05-21 10:19:41迷宫蛋
日期:2012-06-06 16:02:49奥运会纪念徽章:足球
日期:2012-06-29 15:30:06奥运会纪念徽章:排球
日期:2012-07-10 21:24:24鲜花蛋
日期:2012-07-16 15:24:59奥运会纪念徽章:拳击
日期:2012-08-07 10:54:50奥运会纪念徽章:羽毛球
日期:2012-08-21 15:55:33奥运会纪念徽章:蹦床
日期:2012-08-21 21:09:51奥运会纪念徽章:篮球
日期:2012-08-24 10:29:11奥运会纪念徽章:体操
日期:2012-09-07 16:40:00
发表于 2009-6-9 13:05 | 显示全部楼层
按最常用字段分区+物化视图重写
有可能的话用并行

[ 本帖最后由 〇〇 于 2009-6-9 13:06 编辑 ]

使用道具 举报

回复
论坛徽章:
0
 楼主| 发表于 2009-6-9 13:47 | 显示全部楼层
原帖由 〇〇 于 2009-6-9 13:05 发表
按最常用字段分区+物化视图重写
有可能的话用并行


按常用字段分区的优点是什么?
物化视图重写带来的好处是什么?(当前没有进行连接查询,就是从一个表里进行查询)

使用道具 举报

回复
论坛徽章:
311
行业板块每日发贴之星
日期:2012-07-12 18:47:29双黄蛋
日期:2011-08-12 17:31:04咸鸭蛋
日期:2011-08-18 15:13:51迷宫蛋
日期:2011-08-18 16:58:25紫蛋头
日期:2011-08-31 10:57:28ITPUB十周年纪念徽章
日期:2011-09-27 16:30:47蜘蛛蛋
日期:2011-10-20 15:51:25迷宫蛋
日期:2011-10-29 11:12:59ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41鲜花蛋
日期:2011-11-09 20:33:30
发表于 2009-6-9 14:20 | 显示全部楼层
请问楼主,该表是不是只读表,也就是该表只用于查询?除了定时的插入数据,不作修改?
若是,建议如下:
1  作分析表,按月分区,然后压缩这些数据.
2  插入数据时,用交换分区来迁移.
3  可以考虑对那些常用的字段建多些位图索引.

使用道具 举报

回复
论坛徽章:
0
 楼主| 发表于 2009-6-9 15:46 | 显示全部楼层
原帖由 ZALBB 于 2009-6-9 14:20 发表
请问楼主,该表是不是只读表,也就是该表只用于查询?除了定时的插入数据,不作修改?
若是,建议如下:
1  作分析表,按月分区,然后压缩这些数据.
2  插入数据时,用交换分区来迁移.
3  可以考虑对那些常用的字段建多些位图索引.


1.当前已经按月对表进行了分区(分区对这样的表的好处是什么,我现在还不明白)
2.该表只有定期进行数据插入(月次),其它时候只对表进行查询操作
3.能否解释一下“交换分区迁移”?

使用道具 举报

回复
论坛徽章:
311
行业板块每日发贴之星
日期:2012-07-12 18:47:29双黄蛋
日期:2011-08-12 17:31:04咸鸭蛋
日期:2011-08-18 15:13:51迷宫蛋
日期:2011-08-18 16:58:25紫蛋头
日期:2011-08-31 10:57:28ITPUB十周年纪念徽章
日期:2011-09-27 16:30:47蜘蛛蛋
日期:2011-10-20 15:51:25迷宫蛋
日期:2011-10-29 11:12:59ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41鲜花蛋
日期:2011-11-09 20:33:30
发表于 2009-6-9 15:49 | 显示全部楼层
原帖由 juky_huang 于 2009-6-9 15:46 发表


1.当前已经按月对表进行了分区(分区对这样的表的好处是什么,我现在还不明白)
2.该表只有定期进行数据插入(月次),其它时候只对表进行查询操作
3.能否解释一下“交换分区迁移”?


你这个6000万的表应该是历史表,数据是从当前表(生成数据的表,有DML操作的)往此历史表里转移,是吗?

若是,可以考虑把历史表和当前表都改为分区表,就可以使用 exchange partition 功能了.这样迁移数据很快.
另外,分区后可以对分区段(索引也可以)进行压缩,压缩后查询速度比原来的快.

使用道具 举报

回复
论坛徽章:
0
 楼主| 发表于 2009-6-9 16:40 | 显示全部楼层
原帖由 ZALBB 于 2009-6-9 15:49 发表


你这个6000万的表应该是历史表,数据是从当前表(生成数据的表,有DML操作的)往此历史表里转移,是吗?

若是,可以考虑把历史表和当前表都改为分区表,就可以使用 exchange partition 功能了.这样迁移数据很快.
另外,分区后可以对分区段(索引也可以)进行压缩,压缩后查询速度比原来的快.


先谢谢ZALBB的答复
这个表是历史表与现行表的一个集合,在每月有个软件会读取一个外部的文件,将文件中的输入插入到这个表中。
用户可以查询历史数据,也可以查询近期刚插入的数据。

当前的检索操作都是从这一个表中完成的。

使用道具 举报

回复
论坛徽章:
311
行业板块每日发贴之星
日期:2012-07-12 18:47:29双黄蛋
日期:2011-08-12 17:31:04咸鸭蛋
日期:2011-08-18 15:13:51迷宫蛋
日期:2011-08-18 16:58:25紫蛋头
日期:2011-08-31 10:57:28ITPUB十周年纪念徽章
日期:2011-09-27 16:30:47蜘蛛蛋
日期:2011-10-20 15:51:25迷宫蛋
日期:2011-10-29 11:12:59ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41鲜花蛋
日期:2011-11-09 20:33:30
发表于 2009-6-9 16:53 | 显示全部楼层
你这里的 现行表,是指这个表上会有DML操作?若没有(除了每月的INSERT),实际就是一个专供读取的历史表.

若是这样,能否改造这个表为分区表,然后压缩.这样查询速度能有所提高.

使用道具 举报

回复
论坛徽章:
0
 楼主| 发表于 2009-6-9 17:27 | 显示全部楼层
原帖由 ZALBB 于 2009-6-9 16:53 发表
你这里的 现行表,是指这个表上会有DML操作?若没有(除了每月的INSERT),实际就是一个专供读取的历史表.

若是这样,能否改造这个表为分区表,然后压缩.这样查询速度能有所提高.


现在已经对表按月份进行了分区,也进行了压缩,对主要字段使用了BITMAP索引(create bitmap index xxxxxx on xxxxxx)。

但是感觉检索还是比较慢,及时使用到了位图索引。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

SACC2019中国系统架构师大会

【数字转型 架构演进】SACC2019中国系统架构师大会,7折限时优惠重磅来袭!
2019年10月31日~11月2日第11届中国系统架构师大会(SACC2019)将在北京隆重召开。四大主线并行的演讲模式,1个主会场、20个技术专场、超千人参与的会议规模,100+来自互联网、金融、制造业、电商等领域的嘉宾阵容,将为广大参会者提供一场最具价值的技术交流盛会。

限时七折期:2019年8月31日前


----------------------------------------

大会官网>>
TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 
京ICP备09055130号-4  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表