楼主: anlinew

DM7列存储查询hang住

[复制链接]
论坛徽章:
407
紫蛋头
日期: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
21#
发表于 2012-5-29 14:59 | 只看该作者
myth8860 发表于 2012-5-29 14:28
那估计是压缩比较耗时

也不是
SQL>CREATE VERTICAL TABLE t2
2   (
3   "SEX" INT,
4   id int,
5   "NAME" VARCHAR2(30),
6   c1 date DEFAULT sysdate,
7   c2 date DEFAULT sysdate,
8   c3 date DEFAULT sysdate,
9   c4 date DEFAULT sysdate,
10  c5 date DEFAULT sysdate,
11  c6 date DEFAULT sysdate,
12  c7 date DEFAULT sysdate
13  ) ;
CREATE VERTICAL TABLE t2
(
"SEX" INT,
id int,
"NAME" VARCHAR2(30),
c1 date DEFAULT sysdate,
c2 date DEFAULT sysdate,
c3 date DEFAULT sysdate,
c4 date DEFAULT sysdate,
c5 date DEFAULT sysdate,
c6 date DEFAULT sysdate,
c7 date DEFAULT sysdate
) ;

time used: 23.488(ms).Execute id is 10.
SQL>declare
2   p int;
3   begin
4   for i in 1 .. 10000
5   loop
6      p:=mod(i,2);
7     insert into t2 (SEX,id,name) values(p,i,to_char(i)||'aaa');
8     end loop;
9   commit;
10  end;
11  /
declare
p int;
begin
for i in 1 .. 10000
loop
   p:=mod(i,2);
  insert into t2 (SEX,id,name) values(p,i,to_char(i)||'aaa');
  end loop;
commit;
end;
1 rows affected
time used: 3161.001(ms).Execute id is 11.

使用道具 举报

回复
论坛徽章:
407
紫蛋头
日期: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
22#
发表于 2012-5-29 15:04 | 只看该作者
〇〇 发表于 2012-5-29 14:59
也不是
SQL>CREATE VERTICAL TABLE t2
2   (

比较行式的时间就知道了,所以按钮同学不直接用匿名块插入,而是用临时表中转很明智
SQL>CREATE  TABLE t2
2   (
3   "SEX" INT,
4   id int,
5   "NAME" VARCHAR2(30),
6   c1 date DEFAULT sysdate,
7   c2 date DEFAULT sysdate,
8   c3 date DEFAULT sysdate,
9   c4 date DEFAULT sysdate,
10  c5 date DEFAULT sysdate,
11  c6 date DEFAULT sysdate,
12  c7 date DEFAULT sysdate
13  ) ;
CREATE  TABLE t2
(
"SEX" INT,
id int,
"NAME" VARCHAR2(30),
c1 date DEFAULT sysdate,
c2 date DEFAULT sysdate,
c3 date DEFAULT sysdate,
c4 date DEFAULT sysdate,
c5 date DEFAULT sysdate,
c6 date DEFAULT sysdate,
c7 date DEFAULT sysdate
) ;

time used: 17.038(ms).Execute id is 13.
SQL>declare
2   p int;
3   begin
4   for i in 1 .. 10000
5   loop
6      p:=mod(i,2);
7     insert into t2 (SEX,id,name) values(p,i,to_char(i)||'aaa');
8     end loop;
9   commit;
10  end;
11  /
declare
p int;
begin
for i in 1 .. 10000
loop
   p:=mod(i,2);
  insert into t2 (SEX,id,name) values(p,i,to_char(i)||'aaa');
  end loop;
commit;
end;
1 rows affected
time used: 360.539(ms).Execute id is 14.

使用道具 举报

回复
招聘 : 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
23#
 楼主| 发表于 2012-5-29 21:59 | 只看该作者
不用指望列式存储加压缩表的DML能够高效
HANA单独设计delta区就是要避免这个问题的

使用道具 举报

回复
论坛徽章:
407
紫蛋头
日期: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
24#
发表于 2012-5-29 22:38 | 只看该作者
anlinew 发表于 2012-5-29 21:59
不用指望列式存储加压缩表的DML能够高效
HANA单独设计delta区就是要避免这个问题的

按钮研究过hana ?分享下心得?

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
38
2010新春纪念徽章
日期:2010-03-01 11:19:10ITPUB社区OCM联盟徽章
日期:2014-03-19 09:57:09问答徽章
日期:2014-03-17 09:53:582014年新春福章
日期:2014-02-18 16:43:09优秀写手
日期:2013-12-18 09:29:14奔驰
日期:2013-11-29 09:43:42阿斯顿马丁
日期:2013-11-19 10:38:162013年新春福章
日期:2013-02-25 14:51:24奥运会纪念徽章:游泳
日期:2012-09-11 12:38:112012新春纪念徽章
日期:2012-02-13 15:11:52
25#
发表于 2012-5-30 17:15 | 只看该作者
本帖最后由 htyro 于 2012-5-30 17:36 编辑

CREATE VERTICAL TABLE t1
(
"SEX" INT,
id int,
"NAME" VARCHAR2(30),
c1 date DEFAULT sysdate,
c2 date DEFAULT sysdate,
c3 date DEFAULT sysdate,
c4 date DEFAULT sysdate,
c5 date DEFAULT sysdate,
c6 date DEFAULT sysdate,
c7 date DEFAULT sysdate
) COMPRESS ;


[执行语句1]:
declare
p int;
begin
for i in 1 .. 100000
loop
   p:=mod(i,2);
  insert into t1 (SEX,id,name) values(p,i,to_char(i)||'aaa');
  end loop;
commit;
end;
执行成功, 耗时1分9秒314毫秒. 执行号:22
影响了1条记录

1条语句执行成功


select * from t1 where sex=1;

#NSET2: [6, 2500, 0]
  #PRJT2: [6, 2500, 0]; exp_num(11), is_atom(FALSE)
    #VLKUP: [6, 2500, 0]; INDEX33555442(T1)
      #SLCT2: [6, 2500, 0]; T1.SEX = 1
        #VSEK2: [6, 2500, 0]; scan_type(E); INDEX33555442(T1)

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

CREATE TABLE t2
(
"SEX" INT,
id int,
"NAME" VARCHAR2(30),
c1 date DEFAULT sysdate,
c2 date DEFAULT sysdate,
c3 date DEFAULT sysdate,
c4 date DEFAULT sysdate,
c5 date DEFAULT sysdate,
c6 date DEFAULT sysdate,
c7 date DEFAULT sysdate
);


[执行语句1]:
declare
p int;
begin
for i in 1 .. 100000
loop
   p:=mod(i,2);
  insert into t2 (SEX,id,name) values(p,i,to_char(i)||'aaa');
  end loop;
commit;
end;
执行成功, 耗时3秒353毫秒. 执行号:23
影响了1条记录

1条语句执行成功


select * from t2 where sex=1;

#NSET2: [46, 2500, 0]
  #PRJT2: [46, 2500, 0]; exp_num(11), is_atom(FALSE)
    #SLCT2: [46, 2500, 0]; T2.SEX = 1
      #CSCN2: [46, 100000, 0]; INDEX33555443(T2)


简单做了列存的测试,结果如上。

在批量插入数据方面,以10万条数据为例,列存表比普通表要慢将近30倍,这个跟列存表的存放方式有很大关系。

不过在查询方面,以语句select * from t2 where sex=1 为例,列存表的COST为6,而普通表的COST为46,大概是1/8,提升还是很不错的。

晚点用这个来跑TPCH的22个查询语句试试。

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
38
2010新春纪念徽章
日期:2010-03-01 11:19:10ITPUB社区OCM联盟徽章
日期:2014-03-19 09:57:09问答徽章
日期:2014-03-17 09:53:582014年新春福章
日期:2014-02-18 16:43:09优秀写手
日期:2013-12-18 09:29:14奔驰
日期:2013-11-29 09:43:42阿斯顿马丁
日期:2013-11-19 10:38:162013年新春福章
日期:2013-02-25 14:51:24奥运会纪念徽章:游泳
日期:2012-09-11 12:38:112012新春纪念徽章
日期:2012-02-13 15:11:52
26#
发表于 2012-5-30 17:49 | 只看该作者
那啥,七公,貌似对列存表执行更新的时候卡主了,这个和之前按钮那个SELECT语句卡主是一样的原因吗?
update t1 set name='bbb' where sex=0;

总共1个语句正依次执行...

[执行语句1]:
update t1 set name='bbb' where sex=0;

SQL_TEXT                                                                 STATE
update t1 set name='bbb' where sex=0;        ACTIVE

查看v$sessions一直是ACTIVE状态。

使用道具 举报

回复
招聘 : 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
27#
 楼主| 发表于 2012-5-30 20:38 | 只看该作者
本帖最后由 anlinew 于 2012-5-30 20:39 编辑
〇〇 发表于 2012-5-29 22:38
按钮研究过hana ?分享下心得?

全内存计算,无IO,列存储,列压缩,大多数场景效率提升明显,DML效率也不错
个别oracle CBO处理比较好的SQL比如子查询unnest、or扩展等HANA还没优化,这些是很常用的场景,TPCH里面就有的。。。。

使用道具 举报

回复
论坛徽章:
43
现任管理团队成员
日期:2011-05-07 01:45:08ITPUB元老
日期:2012-09-12 14:50:28版主5段
日期:2014-06-11 02:21:31阿斯顿马丁
日期:2013-11-19 10:38:16祖母绿
日期:2012-11-06 12:43:12路虎
日期:2013-11-20 11:37:53雪佛兰
日期:2013-09-05 13:28:25ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512015中国数据库技术大会纪念徽章
日期:2015-04-24 16:04:24秀才
日期:2015-05-26 13:32:07
28#
发表于 2012-5-31 11:00 | 只看该作者
htyro 发表于 2012-5-30 17:49
那啥,七公,貌似对列存表执行更新的时候卡主了,这个和之前按钮那个SELECT语句卡主是一样的原因吗?
upda ...

是的,已经解决了,后面再放个新版本上去

使用道具 举报

回复
论坛徽章:
43
现任管理团队成员
日期:2011-05-07 01:45:08ITPUB元老
日期:2012-09-12 14:50:28版主5段
日期:2014-06-11 02:21:31阿斯顿马丁
日期:2013-11-19 10:38:16祖母绿
日期:2012-11-06 12:43:12路虎
日期:2013-11-20 11:37:53雪佛兰
日期:2013-09-05 13:28:25ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512015中国数据库技术大会纪念徽章
日期:2015-04-24 16:04:24秀才
日期:2015-05-26 13:32:07
29#
发表于 2012-5-31 11:01 | 只看该作者
anlinew 发表于 2012-5-30 20:38
全内存计算,无IO,列存储,列压缩,大多数场景效率提升明显,DML效率也不错
个别oracle CBO处理比较好的 ...

hana是内存数据库么?

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
38
2010新春纪念徽章
日期:2010-03-01 11:19:10ITPUB社区OCM联盟徽章
日期:2014-03-19 09:57:09问答徽章
日期:2014-03-17 09:53:582014年新春福章
日期:2014-02-18 16:43:09优秀写手
日期:2013-12-18 09:29:14奔驰
日期:2013-11-29 09:43:42阿斯顿马丁
日期:2013-11-19 10:38:162013年新春福章
日期:2013-02-25 14:51:24奥运会纪念徽章:游泳
日期:2012-09-11 12:38:112012新春纪念徽章
日期:2012-02-13 15:11:52
30#
发表于 2012-5-31 12:09 | 只看该作者
myth8860 发表于 2012-5-31 11:01
hana是内存数据库么?

查了下资料,是SAP提供的一个软硬结合的一体设备,类似ORACLE的EXADATA。

现在大的厂商都在玩综合解决方案了。

使用道具 举报

回复

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

本版积分规则 发表回复

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