0

0

介绍DB2 10中SQL查询的快速性和可靠性改进

php中文网

php中文网

发布时间:2016-06-07 17:54:37

|

1311人浏览过

|

来源于php中文网

原创

查询性能问题是用户在使用数据库时最关注的问题之一,同时也是 DB2 开发人员重点研究和改进的方向之一。DB2 V10.1 对查询性能进行了多方面的增强。本文将重点介绍 SQL 查询的快速性和可靠性的改进,涉及 PED,PEA,哈希排序以及统计信息的增强,并通过实例对

查询性能问题是用户在使用时最关注的问题之一。尤其对数据仓库的用户而言,大型报表的查询至关重要。db2 v10.1 在 sql 查询的快速性和可靠性上都有很大的改进。在快速性上,db2 引擎通过对去重、聚合以及哈希连接的改进优化了查询性能,减少用户调优成本。在可靠性上,db2 增强了统计信息收集功能,提高了优化器的准确性。本文将重点介绍上述改进,并通过实例对这些增强特性进行具体的讲解。

对常用 SQL 查询的增强

DB2 所有版本都非常关注 SQL 查询性能的优化,DB2 V10.1 包含了许多性能改进提高了许多常用 SQL 查询的速度。例如查询时通过部分提前去重(PED)、部分提前聚合(PEA)、在查询优化器中更广泛的应用哈希连接以及对统计信息的改进等这些方式来提高查询速度。这些算法的优化都是 DB2 V10.1 自动进行的,用户无需对其进行额外配置或者对 SQL 语句进行改变。虽然这些改进对用户而言是透明的,但是我们可以通过实例来观察这些新特性对查询的增强。

部分提前去重

PED(部分提前去重)是英文 Partial early distinct 的缩写,其核心是 : 通过哈希方法在查询过程中提前去掉大部分重复的行(做 distinct),这样在查询后期的操作(例如连接、排序等等)中涉及的数据量就会变小。例如在排序的时候,随着数据量的变小,相应的会降低耗尽排序堆内存的机会,在这种情况下,也就减少了使用相对较慢的磁盘来做临时缓冲区的概率。很明显,这种在查询中提前去重的做法会改进查询的效率。PED 并不会消除全部的重复行,因此查询结束前还需要做一次完整的 distinct 操作。

虽然 PED 对用户而言是透明的,但是我们可以通过查询 EXPLAIN_ARGUMENT 表来获知是否已经启用 PED。在 EXPLAIN_ARGUMENT 中引入了一个新值 (HASHED PARTIAL) 来表明某个查询是否应用了 PED:

  • 列:ARGUMENT_TYPE = UNIQUE 统
  • 并且列:ARGUMENT_VALUE = HASHED PARTIAL,这就表明 PED 新特性已经被应用了。

清单 1 查看 EXPLAIN_ARGUMENT 表中 PED 的特征值

				
select distinct(argument_type), VARCHAR(argument_value,30) as argument_value  
from explain_argument where argument_type = 'UNIQUE'

	 ARGUMENT_TYPE ARGUMENT_VALUE 
	 ------------- ------------------------------ 
	 UNIQUE        FALSE 
	 UNIQUE        HASHED PARTIAL 
	 UNIQUE        TRUE 

 3 record(s) selected.

在上面的清单 1 中我们可以看到:从 EXPLAIN_ARGUMENT 表中查询到了 PED 的特征值 Unique 和 HASHED PARTIAL,这就表明已经有查询应用了 PED 特性。

下面我们通过使用 db2exfmt 工具来查看 PED 在一个具体查询中的应用情况:

考拉新媒体导航
考拉新媒体导航

考拉新媒体导航——新媒体人的专属门户网站

下载

首先我们打开 explain 模式:

db2 set current explain mode explain

然后执行我们所关注的 SQL 查询:

SELECT DISTINCT c11, c12, c21, c22 from t1, t2 where c11 = c21

最后关闭 explain 模式并且用 db2exfmt 工具来输出查询计划:

db2 set current explain mode no 
db2exfmt -d dbname -g TIC -w -1 -n % -s % -# 0 -o out1.txt

在我们前面用 db2exfmt 中获取的 out1.txt 文件中,我们可以看到如下清单 2 所展示的查询计划,其中 pUNIQUE即表明该查询在初期就已经进行了 distinct 操作,这就是应用了 PED 特性。

清单 2 应用了 PED 的查询计划

				
		   RETURN 
			  (   1) 
				 Cost 
				 I/O 
				 | 
				 40 
			   TBSCAN 
			   (   2) 
			   427.872 
				 15 
				 | 
				 40 
			   SORT  
			   (   3) 
			   427.411 
				 15 
				 | 
			   2029.53 
			   HSJOIN 
			   (   4) 
			   278.035 
				 15 
			 /---+----\ 
		  1001        20.275 
		 TBSCAN      pUNIQUE
		 (   5)       (   6) 
		 135.161      132.519 
			8            7 
		   |            | 
		  1001          801 
	 TABLE: NEWTON    TBSCAN 
		 TABLE1       (   7) 
		   Q2         113.305 
						 7 
						| 
						801 
				  TABLE: NEWTON  
					  TABLE2 
						Q1

同时从 out1.txt 的后面部分,我们还可以看到清单 3 中的内容: PED 特性的特征值 Unique 和 HASHED PARTIAL。同时里面还包含了本次查询相关的系统资源开销,通过这些值的比较,我们可以获知应用 PED 特性后所带来的查询性能的提升效果。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
java入门学习合集
java入门学习合集

本专题整合了java入门学习指南、初学者项目实战、入门到精通等等内容,阅读专题下面的文章了解更多详细学习方法。

1

2026.01.29

java配置环境变量教程合集
java配置环境变量教程合集

本专题整合了java配置环境变量设置、步骤、安装jdk、避免冲突等等相关内容,阅读专题下面的文章了解更多详细操作。

2

2026.01.29

java成品学习网站推荐大全
java成品学习网站推荐大全

本专题整合了java成品网站、在线成品网站源码、源码入口等等相关内容,阅读专题下面的文章了解更多详细推荐内容。

0

2026.01.29

Java字符串处理使用教程合集
Java字符串处理使用教程合集

本专题整合了Java字符串截取、处理、使用、实战等等教程内容,阅读专题下面的文章了解详细操作教程。

0

2026.01.29

Java空对象相关教程合集
Java空对象相关教程合集

本专题整合了Java空对象相关教程,阅读专题下面的文章了解更多详细内容。

3

2026.01.29

clawdbot ai使用教程 保姆级clawdbot部署安装手册
clawdbot ai使用教程 保姆级clawdbot部署安装手册

Clawdbot是一个“有灵魂”的AI助手,可以帮用户清空收件箱、发送电子邮件、管理日历、办理航班值机等等,并且可以接入用户常用的任何聊天APP,所有的操作均可通过WhatsApp、Telegram等平台完成,用户只需通过对话,就能操控设备自动执行各类任务。

24

2026.01.29

clawdbot龙虾机器人官网入口 clawdbot ai官方网站地址
clawdbot龙虾机器人官网入口 clawdbot ai官方网站地址

clawdbot龙虾机器人官网入口:https://clawd.bot/,clawdbot ai是一个“有灵魂”的AI助手,可以帮用户清空收件箱、发送电子邮件、管理日历、办理航班值机等等,并且可以接入用户常用的任何聊天APP,所有的操作均可通过WhatsApp、Telegram等平台完成,用户只需通过对话,就能操控设备自动执行各类任务。

16

2026.01.29

Golang 网络安全与加密实战
Golang 网络安全与加密实战

本专题系统讲解 Golang 在网络安全与加密技术中的应用,包括对称加密与非对称加密(AES、RSA)、哈希与数字签名、JWT身份认证、SSL/TLS 安全通信、常见网络攻击防范(如SQL注入、XSS、CSRF)及其防护措施。通过实战案例,帮助学习者掌握 如何使用 Go 语言保障网络通信的安全性,保护用户数据与隐私。

8

2026.01.29

俄罗斯Yandex引擎入口
俄罗斯Yandex引擎入口

2026年俄罗斯Yandex搜索引擎最新入口汇总,涵盖免登录、多语言支持、无广告视频播放及本地化服务等核心功能。阅读专题下面的文章了解更多详细内容。

577

2026.01.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
SQL 教程
SQL 教程

共61课时 | 3.6万人学习

SQL 教程
SQL 教程

共61课时 | 3.6万人学习

SQL优化与排查(MySQL版)
SQL优化与排查(MySQL版)

共26课时 | 2.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号