12
返回列表 发新帖
楼主: lfy_flying

[讨论] 关于大数据量索引性能问题请教各位专家

[复制链接]
论坛徽章:
32
奥运会纪念徽章:摔跤
日期:2012-08-23 11:03:05青年奥林匹克运动会-击剑
日期:2014-09-19 10:58:152014年世界杯参赛球队:巴西
日期:2014-07-07 12:19:232014年世界杯参赛球队: 瑞士
日期:2014-05-19 12:18:36马上有钱
日期:2014-04-08 12:12:232014年新春福章
日期:2014-04-04 14:20:47马上有钱
日期:2014-02-18 16:43:092014年新春福章
日期:2014-02-18 16:43:09红旗
日期:2014-02-14 15:15:55优秀写手
日期:2013-12-18 09:29:16
11#
发表于 2010-7-27 20:11 | 只看该作者
测试下hash分区,
另外一亿的数据量如果按主键访问,也没多大问题,看你什么业务了,数据增长情况,还要看你机器了。

[ 本帖最后由 yellowlee 于 2010-7-27 20:12 编辑 ]

使用道具 举报

回复
论坛徽章:
0
12#
 楼主| 发表于 2010-7-30 09:16 | 只看该作者
多谢各位的回复,针对这个问题,目前我正在做实验来验证。
实验环境:
1.windows xp、双核1.7Ghz、内存3G、硬盘空间足够
2.Oracle10g
3.库表创建脚本请参考附件
4.所有的表空间数据文件放在同一磁盘分区中

由于造数据量很大,很费时间,我会分步来公布我的实验结果:
第一阶段:(110万条数据)
   不分区:
      插入平均用时2毫秒
      数据占用空间152M
      索引占用空间35M
      主键查询平均耗时14毫秒(30线程),2毫秒(3线程)
   分100个区:
      插入平均用时3毫秒
   数据占用空间200M
   索引占用空间43.8M
   主键查询平均耗时20毫秒(30线程),3毫秒(3线程)

SQL.txt

26.75 KB, 下载次数: 9

库表创建脚本

使用道具 举报

回复
论坛徽章:
0
13#
 楼主| 发表于 2010-7-30 09:22 | 只看该作者
非常感谢你的回答,你的回答很有帮助,有了定量的分析。不过我有点疑问,你提到过1亿条数据索引的blevel是3,100万条数据索引的blevel是1,不知道是你随便举得例子还是有计算依据?请不吝赐教!

使用道具 举报

回复
论坛徽章:
0
14#
 楼主| 发表于 2010-7-30 09:23 | 只看该作者
原帖由 anlinew 于 2010-7-27 10:53 发表
从性能上来看分区至少有以下好处
1、Yong Huang已经提到,可以避免竞争从而提高性能
2、partitionning table 并使用partitioned index,减少blevle,从而减少index unique scan的io次数
   比如不做分区1亿个电话号码字段index 的Blevle至少会是3,而如果将每分区控制到10万数据的话可以将每个分区index的blevle减少到1,从而减少2次IO,而对于整个查询来说基本上降低了1半的成本

构造数据做测试吧,用实际结果来说话



非常感谢你的回答,你的回答很有帮助,有了定量的分析。不过我有点疑问,你提到过1亿条数据索引的blevel是3,100万条数据索引的blevel是1,不知道是你随便举得例子还是有计算依据?请不吝赐教!

使用道具 举报

回复
招聘 : Java研发
论坛徽章:
71
马上加薪
日期:2014-02-19 11:55:14蜘蛛蛋
日期:2012-12-26 18:16:01茶鸡蛋
日期:2012-11-16 08:12:48ITPUB 11周年纪念徽章
日期:2012-10-09 18:05:07奥运会纪念徽章:网球
日期:2012-08-23 14:58:08奥运会纪念徽章:沙滩排球
日期:2012-07-19 17:28:14版主2段
日期:2012-07-07 02:21:02咸鸭蛋
日期:2012-03-23 18:17:482012新春纪念徽章
日期:2012-02-13 15:13:512012新春纪念徽章
日期:2012-02-13 15:13:51
15#
发表于 2010-7-30 12:19 | 只看该作者

使用道具 举报

回复
论坛徽章:
86
2015中国数据库技术大会纪念徽章
日期:2015-04-24 16:04:24马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11优秀写手
日期:2013-12-18 09:29:11日产
日期:2013-10-17 08:44:39马自达
日期:2013-08-26 16:28:022013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-23 16:55:51马上有房
日期:2014-02-19 11:55:14
16#
发表于 2010-7-30 14:31 | 只看该作者
原帖由 lfy_flying 于 2010-7-26 10:11 发表
主要的查询方式就是 按照手机号码进行主键查询


最后测试的时候怎么又用ZONE_ID进行分区了?这样的话,没法分区修剪

使用道具 举报

回复
论坛徽章:
0
17#
 楼主| 发表于 2010-7-30 16:59 | 只看该作者
原帖由 sundog315 于 2010-7-30 14:31 发表


最后测试的时候怎么又用ZONE_ID进行分区了?这样的话,没法分区修剪


ZONE_ID是DESTMSISDN的后两位

使用道具 举报

回复
论坛徽章:
0
18#
 楼主| 发表于 2010-7-30 17:09 | 只看该作者
首先感谢大家的回复,终于搞明白了,主键检索的性能只跟索引的B树的深度(BLevel,可以从user_indexes表中检索到)有关系,主键检索的I/O次数是BLevel+1。
我做了一个测试,用手机号码进行索引,1000万的数据量Blevel才2。理论上 每个数据块中索引指针个数的BLevel次方 > 数据库中记录条数

使用道具 举报

回复

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

本版积分规则 发表回复

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