楼主: xgghxkhuang

纸上谈sql优化大表nl hj比较问题

[复制链接]
论坛徽章:
94
生肖徽章2007版:牛
日期:2012-08-02 22:43:00紫蛋头
日期:2012-12-08 09:43:38鲜花蛋
日期:2012-11-17 12:02:07鲜花蛋
日期:2013-02-05 21:53:34复活蛋
日期:2012-11-17 12:02:07SQL极客
日期:2013-12-09 14:13:35SQL数据库编程大师
日期:2013-12-06 13:59:43SQL大赛参与纪念
日期:2013-12-06 14:10:50ITPUB季度 技术新星
日期:2012-11-27 10:16:10最佳人气徽章
日期:2013-03-19 17:24:25
21#
发表于 2014-11-7 21:48 | 只看该作者
xgghxkhuang 发表于 2014-11-7 21:41
能介绍一下partition wise join吗?可以一试验,主表有个日期字段过滤,原表1200万,日期过滤后120万,是 ...

就是减少设备间数据传输所消耗的时间,都是集群环境才需要考虑的。你官方文档去看看就明白了

使用道具 举报

回复
论坛徽章:
57
SQL极客
日期:2013-12-09 14:13:35秀才
日期:2016-01-21 13:42:39秀才
日期:2016-01-13 12:14:26SQL大赛参与纪念
日期:2016-01-13 10:32:19SQL数据库编程大师
日期:2016-01-13 10:30:43秀才
日期:2015-12-14 14:47:54秀才
日期:2015-10-19 15:50:392015年新春福章
日期:2015-03-06 11:58:18懒羊羊
日期:2015-03-04 14:52:11优秀写手
日期:2014-11-08 06:00:14
22#
 楼主| 发表于 2014-11-7 21:50 | 只看该作者
oracle_cj 发表于 2014-11-6 23:32
全表扫描几亿?这种大表必须要有分区啊,之前一个项目,二级分区,总共有10亿数据,不过走分区剪裁也很快( ...

以前同事写的,做项目没设计好,其实也不全怪他,项目验收时候数据量才1000万的,
这个数据是慢慢加上去的,直到问题暴露出来,才发现慢到需要调整了。
设计最重要,好的设计可以让优化人员歇菜的,现在只能在他的基础上改,能跑过就行。

使用道具 举报

回复
论坛徽章:
57
SQL极客
日期:2013-12-09 14:13:35秀才
日期:2016-01-21 13:42:39秀才
日期:2016-01-13 12:14:26SQL大赛参与纪念
日期:2016-01-13 10:32:19SQL数据库编程大师
日期:2016-01-13 10:30:43秀才
日期:2015-12-14 14:47:54秀才
日期:2015-10-19 15:50:392015年新春福章
日期:2015-03-06 11:58:18懒羊羊
日期:2015-03-04 14:52:11优秀写手
日期:2014-11-08 06:00:14
23#
 楼主| 发表于 2014-11-7 21:51 | 只看该作者
udfrog 发表于 2014-11-7 21:48
就是减少设备间数据传输所消耗的时间,都是集群环境才需要考虑的。你官方文档去看看就明白了

非rac可以用吗?

使用道具 举报

回复
论坛徽章:
94
生肖徽章2007版:牛
日期:2012-08-02 22:43:00紫蛋头
日期:2012-12-08 09:43:38鲜花蛋
日期:2012-11-17 12:02:07鲜花蛋
日期:2013-02-05 21:53:34复活蛋
日期:2012-11-17 12:02:07SQL极客
日期:2013-12-09 14:13:35SQL数据库编程大师
日期:2013-12-06 13:59:43SQL大赛参与纪念
日期:2013-12-06 14:10:50ITPUB季度 技术新星
日期:2012-11-27 10:16:10最佳人气徽章
日期:2013-03-19 17:24:25
24#
发表于 2014-11-7 21:54 | 只看该作者
xgghxkhuang 发表于 2014-11-7 21:51
非rac可以用吗?

不可以

使用道具 举报

回复
论坛徽章:
3
优秀写手
日期:2014-10-28 06:00:13暖羊羊
日期:2015-03-04 14:54:572015年新春福章
日期:2015-03-06 11:59:47
25#
发表于 2014-11-7 22:16 | 只看该作者
感觉hash并行的方式要优于nl


--只有感觉到压力,才可以更快的成长。

使用道具 举报

回复
论坛徽章:
520
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
26#
发表于 2014-11-8 05:51 | 只看该作者
udfrog 发表于 2014-11-7 21:54
不可以

不一定要在RAC环境才用分区智能连接。

http://docs.oracle.com/cd/B28359_01/server.111/b32024/part_avail.htm#CIHCDBIF

Partition-Wise Joins

Partition-wise joins reduce query response time by minimizing the amount of data exchanged among parallel execution servers when joins execute in parallel. This significantly reduces response time and improves the use of both CPU and memory resources. In Oracle Real Application Clusters (RAC) environments, partition-wise joins also avoid or at least limit the data traffic over the interconnect, which is the key to achieving good scalability for massive join operations.

Partition-wise joins can be full or partial. Oracle decides which type of join to use.
............

上面的parallel execution servers指的是并行执行的服务器进程,不一定是RAC的服务器。

下面摘自troubleshooting Oracle Performance第二版:
Partition-wise Joins
A partition-wise join(which shouldn't be confused with a partitioned outer join) is an optimization technique that
the query optimizer applies to merge and hash joins only. Partition-wise joins are used to reduce the amount of CPU, memory, and, in case of RAC, network resources used to process joins. The basic idea is to divide a large join into several smaller joins. Partition-wise joins can be full or partial. The following sections describe these two alternatives.

它说的是在RAC情况下,还有节省网络资源的好处。

使用道具 举报

回复
论坛徽章:
115
生肖徽章:狗
日期:2007-01-06 21:14:12马上有车
日期:2014-03-06 16:45:08马上加薪
日期:2014-05-09 12:27:582014年世界杯参赛球队: 英格兰
日期:2014-07-03 13:10:44青年奥林匹克运动会-竞技体操
日期:2014-09-10 15:30:57马上有钱
日期:2014-10-31 13:56:48美羊羊
日期:2015-03-04 14:48:582015年新春福章
日期:2015-03-06 11:57:31懒羊羊
日期:2015-04-23 19:26:10金牛座
日期:2015-09-17 08:21:44
27#
发表于 2014-11-8 10:43 | 只看该作者
大数据集关联,HJ
NL想都别想
如果一次HJ 10亿行,可以考虑是否可以分批HJ
如果必须是一次性HJ,那么内存大点,总比NL快多了
还有你如果是HJ,是否两张表都是10亿行?
还是一张表10一行?另外一张表是小表?或者虽然另外一张表也是10亿,但是可以通过where条件过滤后变成小表?

使用道具 举报

回复
论坛徽章:
57
SQL极客
日期:2013-12-09 14:13:35秀才
日期:2016-01-21 13:42:39秀才
日期:2016-01-13 12:14:26SQL大赛参与纪念
日期:2016-01-13 10:32:19SQL数据库编程大师
日期:2016-01-13 10:30:43秀才
日期:2015-12-14 14:47:54秀才
日期:2015-10-19 15:50:392015年新春福章
日期:2015-03-06 11:58:18懒羊羊
日期:2015-03-04 14:52:11优秀写手
日期:2014-11-08 06:00:14
28#
 楼主| 发表于 2014-11-8 13:30 | 只看该作者
atgc 发表于 2014-11-8 10:43
大数据集关联,HJ
NL想都别想
如果一次HJ 10亿行,可以考虑是否可以分批HJ

小表120万,大表10亿。

使用道具 举报

回复
论坛徽章:
115
生肖徽章:狗
日期:2007-01-06 21:14:12马上有车
日期:2014-03-06 16:45:08马上加薪
日期:2014-05-09 12:27:582014年世界杯参赛球队: 英格兰
日期:2014-07-03 13:10:44青年奥林匹克运动会-竞技体操
日期:2014-09-10 15:30:57马上有钱
日期:2014-10-31 13:56:48美羊羊
日期:2015-03-04 14:48:582015年新春福章
日期:2015-03-06 11:57:31懒羊羊
日期:2015-04-23 19:26:10金牛座
日期:2015-09-17 08:21:44
29#
发表于 2014-11-8 14:12 | 只看该作者
本帖最后由 atgc 于 2014-11-8 14:13 编辑
xgghxkhuang 发表于 2014-11-8 13:30
小表120万,大表10亿。


1。能否分批关联?也就是把10亿数据分成10次关联或者20次关联?
2。10亿的大表是否有where条件可以过滤掉很多记录?
3、最终结果几条记录?
4、把120万的小表构建哈希
5、给足够大的内存
我相信肯定会比NL快的

使用道具 举报

回复
论坛徽章:
57
SQL极客
日期:2013-12-09 14:13:35秀才
日期:2016-01-21 13:42:39秀才
日期:2016-01-13 12:14:26SQL大赛参与纪念
日期:2016-01-13 10:32:19SQL数据库编程大师
日期:2016-01-13 10:30:43秀才
日期:2015-12-14 14:47:54秀才
日期:2015-10-19 15:50:392015年新春福章
日期:2015-03-06 11:58:18懒羊羊
日期:2015-03-04 14:52:11优秀写手
日期:2014-11-08 06:00:14
30#
 楼主| 发表于 2014-11-9 19:12 | 只看该作者
atgc 发表于 2014-11-8 14:12
1。能否分批关联?也就是把10亿数据分成10次关联或者20次关联?
2。10亿的大表是否有where条件可以过滤 ...

目前两表并行贾hash并行,关联结果集合6000万,内存能否在session挑参数?
现在准备并行加hash

使用道具 举报

回复

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

本版积分规则 发表回复

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