楼主: 〇〇

什么数据库能5000万行的group by查询1秒内返回

[复制链接]
论坛徽章:
6
2012新春纪念徽章
日期:2012-01-04 11:53:292013年新春福章
日期:2013-02-25 14:51:24林肯
日期:2013-09-12 15:57:33优秀写手
日期:2013-12-18 09:29:09慢羊羊
日期:2015-03-04 14:51:352015年新春福章
日期:2015-03-06 11:57:31
41#
发表于 2014-6-7 14:29 | 只看该作者
感谢OO, 浮点数的不兼容问题确实会导致结果差异, 特别是涉及数据类型转换到字符串的时候, 我们会尽快修正这个问题.

使用道具 举报

回复
论坛徽章:
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
42#
 楼主| 发表于 2014-6-17 15:58 来自手机 | 只看该作者
测了exadata直接运行31s,用物理表不做连接1s多,都是并行度32

使用道具 举报

回复
论坛徽章:
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
43#
 楼主| 发表于 2014-6-18 09:44 | 只看该作者
SQL> create table 5kw as
  2  with t as(select level t from dual connect by level<=1e4)
  3  ,s as(select level s from dual connect by level<=5e3)
  4  select (s-1)*1e4+t a from t,s;
create table 5kw as
             *
第 1 行出现错误:
ORA-00903: 表名无效


已用时间:  00: 00: 00.02
SQL> 1
  1* create table 5kw as
SQL> c/5/t5
  1* create table t5kw as
SQL> /
已用时间:  00: 00: 32.13
SQL> select substr(a,-1,1)x,sum(a)s from t5kw a
  2  group by substr(a,-1,1)
  3  order by 1;

X                S
-- ---------------
0  125000025000000
1  124999980000000
2  124999985000000
3  124999990000000
4  124999995000000
5  125000000000000
6  125000005000000
7  125000010000000
8  125000015000000
9  125000020000000
已用时间:  00: 00: 06.31
SQL> alter session force parallel query parallel 8;
已用时间:  00: 00: 00.00
SQL> select substr(a,-1,1)x,sum(a)s from t5kw a
  2  group by substr(a,-1,1)
  3  order by 1;

X                S
-- ---------------
0  125000025000000
1  124999980000000
2  124999985000000
3  124999990000000
4  124999995000000
5  125000000000000
6  125000005000000
7  125000010000000
8  125000015000000
9  125000020000000
已用时间:  00: 00: 03.72

使用道具 举报

回复
论坛徽章:
1
优秀写手
日期:2013-12-18 09:29:09
44#
发表于 2014-6-18 19:43 | 只看该作者
本帖最后由 lyzhanhun 于 2014-6-18 20:19 编辑
〇〇 发表于 2014-6-18 09:44
SQL> create table 5kw as
  2  with t as(select level t from dual connect by level c/5/t5
  1* crea ...


不知道o o是啥机器 0 0 ,我的两核笔记本跑出来是下面的结果
--达梦表名不能数字起头
SQL>create table kw5 as
2    with t as(select level t from dual connect by level<=1e4)
3   ,s as(select level s from dual connect by level<=5e3)
4   select (s-1)*1e4+t a from t,s;
操作已执行
已用时间: 00:01:59.511. 执行号:5.
SQL>
SQL>select /*+ PARALLEL(kw5 4) */ substr(a,-1,1)x,sum(a)s from kw5 a
2   group by substr(a,-1,1)
3   order by 1;
行号       X S
---------- - -------------------------
1          1 4.905000000000000E+003
2          2 4.945500000000000E+005
3          3 4.949550000000000E+007
4          4 4.949955000000000E+009
5          5 4.949995500000000E+011
6          6 4.949999550000000E+013
7          7 1.200000030000000E+015
8          E 4.500000000000000E+001
8 rows got
已用时间: 00:00:36.240. 执行号:6.
SQL>select /*+ PARALLEL(kw5 8) */ substr(a,-1,1)x,sum(a)s from kw5 a
2   group by substr(a,-1,1)
3   order by 1;
行号       X S
---------- - -------------------------
1          1 4.905000000000000E+003
2          2 4.945500000000000E+005
3          3 4.949550000000000E+007
4          4 4.949955000000000E+009
5          5 4.949995500000000E+011
6          6 4.949999550000000E+013
7          7 1.200000030000000E+015
8          E 4.500000000000000E+001
8 rows got
已用时间: 00:00:31.148. 执行号:7.
SQL>select /*+ PARALLEL(kw5 1) */ substr(a,-1,1)x,sum(a)s from kw5 a
2   group by substr(a,-1,1)
3   order by 1;
行号       X S
---------- - -------------------------
1          1 4.905000000000000E+003
2          2 4.945500000000000E+005
3          3 4.949550000000000E+007
4          4 4.949955000000000E+009
5          5 4.949995500000000E+011
6          6 4.949999550000000E+013
7          7 1.200000030000000E+015
8          E 4.500000000000000E+001
8 rows got
已用时间: 00:01:13.943. 执行号:8.
SQL>select /*+ PARALLEL(kw5 16) */ substr(a,-1,1)x,sum(a)s from kw5 a
2   group by substr(a,-1,1)
3   order by 1;
行号       X S
---------- - -------------------------
1          1 4.905000000000000E+003
2          2 4.945500000000000E+005
3          3 4.949550000000000E+007
4          4 4.949955000000000E+009
5          5 4.949995500000000E+011
6          6 4.949999550000000E+013
7          7 1.200000030000000E+015
8          E 4.500000000000000E+001
8 rows got
已用时间: 00:00:29.765. 执行号:9.
SQL>drop table kw5;
操作已执行
已用时间: 428.830(毫秒). 执行号:10.
SQL>
SQL>create table kw5 as
2    with t as(select level t from dual connect by level<=1e4)
3   ,s as(select level s from dual connect by level<=5e3)
4   select (s-1)*10000+t a from t,s;
操作已执行
已用时间: 00:01:33.621. 执行号:11.
SQL>
SQL>select /*+ PARALLEL(kw5 1) */ substr(a,-1,1)x,sum(a)s from kw5 a
2   group by substr(a,-1,1)
3   order by 1;
行号       X S
---------- - --------------------
1          0 125000025000000
2          1 124999980000000
3          2 124999985000000
4          3 124999990000000
5          4 124999995000000
6          5 125000000000000
7          6 125000005000000
8          7 125000010000000
9          8 125000015000000
10         9 125000020000000
10 rows got
已用时间: 00:00:27.699. 执行号:12.
SQL>
SQL>select /*+ PARALLEL(kw5 4) */ substr(a,-1,1)x,sum(a)s from kw5 a
2   group by substr(a,-1,1)
3   order by 1;
行号       X S
---------- - --------------------
1          0 125000025000000
2          1 124999980000000
3          2 124999985000000
4          3 124999990000000
5          4 124999995000000
6          5 125000000000000
7          6 125000005000000
8          7 125000010000000
9          8 125000015000000
10         9 125000020000000
10 rows got
已用时间: 00:00:19.027. 执行号:13.
SQL>
SQL>select /*+ PARALLEL(kw5 8) */ substr(a,-1,1)x,sum(a)s from kw5 a
2   group by substr(a,-1,1)
3   order by 1;
行号       X S
---------- - --------------------
1          0 125000025000000
2          1 124999980000000
3          2 124999985000000
4          3 124999990000000
5          4 124999995000000
6          5 125000000000000
7          6 125000005000000
8          7 125000010000000
9          8 125000015000000
10         9 125000020000000
10 rows got
已用时间: 00:00:18.697. 执行号:14.
SQL>
SQL>select /*+ PARALLEL(kw5 16) */ substr(a,-1,1)x,sum(a)s from kw5 a
2   group by substr(a,-1,1)
3   order by 1;
行号       X S
---------- - --------------------
1          0 125000025000000
2          1 124999980000000
3          2 124999985000000
4          3 124999990000000
5          4 124999995000000
6          5 125000000000000
7          6 125000005000000
8          7 125000010000000
9          8 125000015000000
10         9 125000020000000
10 rows got
已用时间: 00:00:18.224. 执行号:15.

SQL>create huge table kw5 as--列存表
2
3    with t as(select level t from dual connect by level<=1e4)
4   ,s as(select level s from dual connect by level<=5e3)
5   select (s-1)*10000+t a from t,s;
操作已执行
已用时间: 00:02:56.649. 执行号:17.
SQL>
SQL>select /*+ PARALLEL(kw5 1) */ substr(a,-1,1)x,sum(a)s from kw5 a
2   group by substr(a,-1,1)
3   order by 1;
行号       X S
---------- - --------------------
1          0 125000025000000
2          1 124999980000000
3          2 124999985000000
4          3 124999990000000
5          4 124999995000000
6          5 125000000000000
7          6 125000005000000
8          7 125000010000000
9          8 125000015000000
10         9 125000020000000
10 rows got
已用时间: 00:00:20.180. 执行号:18.
SQL>
SQL>select /*+ PARALLEL(kw5 4) */ substr(a,-1,1)x,sum(a)s from kw5 a
2   group by substr(a,-1,1)
3   order by 1;
行号       X S
---------- - --------------------
1          0 125000025000000
2          1 124999980000000
3          2 124999985000000
4          3 124999990000000
5          4 124999995000000
6          5 125000000000000
7          6 125000005000000
8          7 125000010000000
9          8 125000015000000
10         9 125000020000000
10 rows got
已用时间: 00:00:08.066. 执行号:19.
SQL>
SQL>select /*+ PARALLEL(kw5 8) */ substr(a,-1,1)x,sum(a)s from kw5 a
2   group by substr(a,-1,1)
3   order by 1;
行号       X S
---------- - --------------------
1          0 125000025000000
2          1 124999980000000
3          2 124999985000000
4          3 124999990000000
5          4 124999995000000
6          5 125000000000000
7          6 125000005000000
8          7 125000010000000
9          8 125000015000000
10         9 125000020000000
10 rows got
已用时间: 00:00:07.991. 执行号:20.
SQL>
SQL>select /*+ PARALLEL(kw5 16) */ substr(a,-1,1)x,sum(a)s from kw5 a
2   group by substr(a,-1,1)
3   order by 1;
行号       X S
---------- - --------------------
1          0 125000025000000
2          1 124999980000000
3          2 124999985000000
4          3 124999990000000
5          4 124999995000000
6          5 125000000000000
7          6 125000005000000
8          7 125000010000000
9          8 125000015000000
10         9 125000020000000
10 rows got
已用时间: 00:00:08.069. 执行号:21.


使用道具 举报

回复
论坛徽章:
6
2012新春纪念徽章
日期:2012-01-04 11:53:292013年新春福章
日期:2013-02-25 14:51:24林肯
日期:2013-09-12 15:57:33优秀写手
日期:2013-12-18 09:29:09慢羊羊
日期:2015-03-04 14:51:352015年新春福章
日期:2015-03-06 11:57:31
45#
发表于 2014-6-18 21:41 | 只看该作者
tanyangxf 发表于 2014-6-17 21:06
刚在http://online.dameng.com/测试了下,改成10000,22秒多,用的是DM10公共库,这上面的库是什么环境? ...

dm10应该是一个linux虚拟机, 参数没怎么调

使用道具 举报

回复
论坛徽章:
6
2012新春纪念徽章
日期:2012-01-04 11:53:292013年新春福章
日期:2013-02-25 14:51:24林肯
日期:2013-09-12 15:57:33优秀写手
日期:2013-12-18 09:29:09慢羊羊
日期:2015-03-04 14:51:352015年新春福章
日期:2015-03-06 11:57:31
46#
发表于 2014-6-18 22:14 | 只看该作者
tanyangxf 发表于 2014-6-18 22:07
在服务器上跑过也没这么快,要调什么参数?

在dm.ini中, 试试下面这几个值, 然后重起服务器, 

ENABLE_MONITOR = 0
MAX_PARALLEL_DEGREE = 10
PARALLEL_POLICY = 2
PARALLEL_THRD_NUM = 10

HAGR_BUF_SIZE = 400  
HAGR_HASH_SIZE = 10000000

分别使用 /*+ parallel(8) */  和  /*+ parallel(8), hagr_parallel_opt_flag(1) */
跑跑看

使用道具 举报

回复
论坛徽章:
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
47#
 楼主| 发表于 2014-6-19 06:26 来自手机 | 只看该作者
列存没用的,因为只有一列,值全不同

使用道具 举报

回复
论坛徽章:
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
48#
 楼主| 发表于 2014-6-19 09:05 | 只看该作者
dm10和dm7是什么关系?

使用道具 举报

回复
论坛徽章:
6
2012新春纪念徽章
日期:2012-01-04 11:53:292013年新春福章
日期:2013-02-25 14:51:24林肯
日期:2013-09-12 15:57:33优秀写手
日期:2013-12-18 09:29:09慢羊羊
日期:2015-03-04 14:51:352015年新春福章
日期:2015-03-06 11:57:31
49#
发表于 2014-6-19 11:18 | 只看该作者
〇〇 发表于 2014-6-19 09:05
dm10和dm7是什么关系?

配置一样的虚拟机, dm1-dm8是 windows, dm9-dm12是linux

使用道具 举报

回复
论坛徽章:
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
50#
 楼主| 发表于 2014-6-19 16:13 | 只看该作者
pkmonster 发表于 2014-6-19 11:18
配置一样的虚拟机, dm1-dm8是 windows, dm9-dm12是linux

xe装好了?

使用道具 举报

回复

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

本版积分规则 发表回复

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