Oracle 23ai TPC-H 执行情况
TPC-H是一个广泛使用的基准测试,用于评估数据库系统在决策支持系统(DSS)场景下的性能。
在昨天的文章中,我们完成了《Oracle 23ai TPC-H 测试环境部署》,本文将继续记录在未做任何优化场景下,这22条SQL的真实执行情况。
- 1.修订执行有问题的SQL
- 2.完整运行22个SQL
- 3.测试结果统计(未做任何优化场景)
1. 修订执行有问题的SQL
因为根据《Oracle 23ai TPC-H 测试环境部署》准备好的TPC-H环境,实际测试发现有5个SQL需要微调下,否则执行会报错。
但不必担心,都是比较小的问题,不需要大改,主要是不符合Oracle 特殊的语法规则,稍加修改即可:
- Oracle 不允许在子查询别名前使用
AS关键字 - Oracle 子查询的别名后面不需要也不能跟列名列表,只需要在子查询的末尾直接写上别名
- Oracle 不支持 substring(c_phone from 1 for 2) 函数的这种语法
实际测试涉及到的具体SQL和改写方案参考:
query7.sql、query8.sql、query9.sql
- 删除报错位置的
AS关键字,具体位置如果找不到可以执行下,会报错具体位置,删除报错位置的AS关键字即可。
query13.sql
- 删除报错位置的
AS关键字 - 把别名后面指定的
(c_custkey,c_count)列名都去掉,列名别名c_count直接在子查询中直接指定即可。
query22.sql
- 删除报错位置的
AS关键字 - 将
substring(c_phone from 1 for 2)改写为:substr(c_phone, 1, 2),共有三处。
其他优化(可选):
如果文件尾部有多余的where rownum语句,可以快速去掉,避免测试中不必要的错误回显:
查询最后一行情况:tail -n 1 query*.sql
我这里去掉文件最后一行:sed -i '$d' query*.sql
2. 完整运行22个SQL
我需要记录在做任何优化之前,确保完整运行过TPC-H的22个SQL查询,并记录每个查询的执行时间。
我这里使用如下脚本 query_all.sh 测试:
vi query_all.sh
for i in {1..22}; do
echo "PROMPT 当前执行第 $i 个查询;" >> commands.sql
echo "@query$i" >> commands.sql
done
sqlplus -s tpch/tpch@alfred @commands.sql > output.log 2>&1
因为执行时间比较长,我这里选择放到后台执行,同时可以利用周末的时间:
nohup sh query_all.sh &
后台执行完成之后,发现这个output.log有811M大小..
嗯,有些查询返回行数实在是太多了,先不管,直接过滤下执行时间显示:
[oracle@dbtest dbgen]$ grep "Elapsed:" output.log
Elapsed: 00:06:36.20
Elapsed: 00:01:09.51
Elapsed: 00:07:43.89
Elapsed: 00:07:24.58
Elapsed: 00:08:11.85
Elapsed: 00:06:01.30
Elapsed: 00:07:39.31
Elapsed: 00:07:46.35
Elapsed: 00:10:10.19
Elapsed: 00:08:45.04
Elapsed: 00:00:56.25
Elapsed: 00:07:04.59
Elapsed: 00:02:46.57
Elapsed: 00:06:22.81
Elapsed: 00:00:00.06
Elapsed: 00:06:09.22
Elapsed: 00:00:00.38
Elapsed: 00:01:11.31
Elapsed: 00:06:20.15
Elapsed: 00:17:00.94
Elapsed: 00:07:05.97
Elapsed: 00:07:15.76
Elapsed: 00:14:26.95
Elapsed: 00:01:22.08
这有点乱。。而且咋是24个?比22个SQL要多了两个?
这里使用到一个小技巧,在匹配到关键字的行之后,额外多显示后面 1 行内容:
grep -A 1 "Elapsed:" output.log
这样显示结果就是这样,第一个Elapsed时间就是对应第1个查询,后面也都好找到一一对应了,方便判断,原来执行第 15 个查询,是存在先创建视图,再查询,再删除这个视图的逻辑,所以Elapsed会多了两个,去掉这两个时间干扰即可。
3.测试结果统计(未做任何优化场景)
这里让鲸鱼小助手帮我根据实际测试结果直接整理出表格,方便大家直观看到测试结果。
查询执行时间统计表
| 查询编号 | 执行时间 (HH:MM:SS) | 执行时间 (秒) | 执行快慢排名 |
|---|---|---|---|
| 11 | 00:00:56.25 | 56.25 | 1 |
| 2 | 00:01:09.51 | 69.51 | 2 |
| 16 | 00:01:11.31 | 71.31 | 3 |
| 22 | 00:01:22.08 | 82.08 | 4 |
| 13 | 00:02:46.57 | 166.57 | 5 |
| 15 | 00:06:09.22 | 369.22 | 6 |
| 6 | 00:06:01.30 | 361.30 | 7 |
| 17 | 00:06:20.15 | 380.15 | 8 |
| 14 | 00:06:22.81 | 382.81 | 9 |
| 1 | 00:06:36.20 | 396.20 | 10 |
| 12 | 00:07:04.59 | 424.59 | 11 |
| 19 | 00:07:05.97 | 425.97 | 12 |
| 20 | 00:07:15.76 | 435.76 | 13 |
| 4 | 00:07:24.58 | 444.58 | 14 |
| 7 | 00:07:39.31 | 459.31 | 15 |
| 3 | 00:07:43.89 | 463.89 | 16 |
| 8 | 00:07:46.35 | 466.35 | 17 |
| 5 | 00:08:11.85 | 491.85 | 18 |
| 10 | 00:08:45.04 | 525.04 | 19 |
| 9 | 00:10:10.19 | 610.19 | 20 |
| 21 | 00:14:26.95 | 866.95 | 21 |
| 18 | 00:17:00.94 | 1020.94 | 22 |
TOP 5 慢 SQL 执行情况
| 查询编号 | 执行时间 (HH:MM:SS) | 执行时间 (秒) | 执行快慢排名 |
|---|---|---|---|
| 18 | 00:17:00.94 | 1020.94 | 22 |
| 21 | 00:14:26.95 | 866.95 | 21 |
| 9 | 00:10:10.19 | 610.19 | 20 |
| 10 | 00:08:45.04 | 525.04 | 19 |
| 5 | 00:08:11.85 | 491.85 | 18 |
关键信息
- 最慢查询:
- 查询编号 18,执行时间 1020.94 秒(约 17 分钟),排名第 22。
- 第二慢查询:
- 查询编号 21,执行时间 866.95 秒(约 14 分 27 秒),排名第 21。
- 第三慢查询:
- 查询编号 9,执行时间 610.19 秒(约 10 分 10 秒),排名第 20。
- 第四慢查询:
- 查询编号 10,执行时间 525.04 秒(约 8 分 45 秒),排名第 19。
- 第五慢查询:
- 查询编号 5,执行时间 491.85 秒(约 8 分 12 秒),排名第 18。
说明
- 执行快慢排名 是根据执行时间(秒)从小到大排序,排名越小表示查询越快,排名越大表示查询越慢。
- 以上 TOP 5 慢 SQL 的执行时间均超过 8 分钟,其中查询编号 18 和 21 的执行时间尤为突出,分别超过 17 分钟 和 14 分钟。
- 这些慢 SQL 可能需要进一步优化,例如检查索引、优化查询逻辑或调整数据库配置,以提升整体性能。
在后续文章中我们将开始优化这些SQL,欢迎关注。
Oracle 23ai TPC-H 执行情况的更多相关文章
- 查询oracle 数据库 SQL语句执行情况
1.查看总消耗时间最多的前10条SQL语句 select * from (select v.sql_id, v.child_number, v.sql_text, v.elapsed_time ...
- Oracle EBS 查看请求执行情况
SELECT s.* FROM fnd_concurrent_requests r, v$session v, v$sql s WHERE r.oracle_session_id = v.audsid ...
- Oracle数据库定时任务配置和日志执行情况查询
基础配置: /***************************************************************** * * 移动抵扣券快到期推送提醒 * 首次执行 : 2 ...
- Oracle EBS-SQL (PO-9):检查期间采购订单执行情况.sql
--采购订单执行情况查询(七天内接收情况)select pha.segment1 采购订单, msib.segment1 物料编码, pla.qu ...
- [转]oracle job有定时执行的功能,可以在指定的时间点或每天的某个时间点自行执行任务。
oracle job有定时执行的功能,可以在指定的时间点或每天的某个时间点自行执行任务. 一.查询系统中的job,可以查询视图 --相关视图 select * from dba_jobs; selec ...
- df -h执行卡住不动问题解决【转】
昨天生产环境报日志写不进去了,因此 登陆线上环境后,习惯用df -h命令查看空间使用情况,结果发现该命令执行半天也没有返回. 因此使用mount命令查看该机器上的目录: [conversant@swi ...
- 如何在Oracle中一次执行多条sql语句 (.net C#)
关键是不能换行,要加上begin ...sql... end; 每个SQL用:隔开,end后面必须加: 以下是拷贝于:http://www.cnblogs.com/teamleader/arc ...
- FreeRTOS 调试方法(printf---打印任务执行情况)
以下转载自安富莱电子: http://forum.armfly.com/forum.php 本章节为大家介绍 FreeRTOS 的调试方法,这里的调试方法主要是教会大家如何获取任务的执行情况,通过获取 ...
- oracle job有定时执行功能
oracle job有定时执行的功能,可以在指定的时间点或每天的某个时间点自行执行任务. oracle job有定时执行的功能,可以在指定的时间点或每天的某个时间点自行执行任务. 一.查询系统中的 ...
- 【RTOS】基于V7开发板的最新版FreeRTOS V10.2.0程序模板,含MDK和IAR,支持串口打印任务执行情况
模板下载: 链接:https://pan.baidu.com/s/1N32Hx7cTbDoRinuzTUB3zw 提取码:6aox 1.MDK使用MDK5.26及其以上版本. 2.IAR使用IAR ...
随机推荐
- CentOS7 安装git 配置秘钥公钥克隆代码
建议购买阿里云香港服务器可以免备案,系统镜像选择CentOS7测试 第一步:安装git客户端,默认安装在/usr/libexec/git-core目录 yum -y install git #查看版本 ...
- [转]Clion中如何使用矩阵库eigen
CMakelist文件内容如下: cmake_minimum_required(VERSION 3.2) project(PISO) set(CMAKE_CXX_STANDARD 14) includ ...
- CDS标准视图:PM通知单 I_LocationAnalysisCube
视图名称:PM通知单 I_LocationAnalysisCube 视图类型:分析 视图代码: 点击查看代码 @EndUserText.label: 'Location Analysis - Cube ...
- c# 反射私有类和私有方法
namespace ClassLibrary1 { class InnerClass//私类 { public string Test(string s) { return "" ...
- ResponseBody与RequestBody-copy
1. ResponseBody @ResponseBody的作用其实是将java对象转为json格式的数据. @responseBody注解的作用是将controller的方法返回的对象通过适当的转换 ...
- 如何快速的开发一个完整的iOS直播app(搭建Socket即时通讯服务器)
在直播中,聊天和发礼物,需要用到及时通讯技术,市面上的App大多数采用的都是第三方SDK,融云,环信等,但是本例子采用websocket搭建及时通讯服务器. 即时通讯 即时通讯(Instant mes ...
- 【Git】---工作区、暂存区、版本库、远程仓库
工作区.暂存区.版本库.远程仓库 一.概念 1.四个工作区域 Git本地有四个工作区域:工作目录(Working Directory).暂存区(Stage/Index).资源库(Repository或 ...
- Docker实践:创建并运行一个自定义的Docker Image
1 目标: 创建一个自定义的Image,在该Image中,包含一个自己的Python程序,通过docker运行该Image 容器,并执行我们自己的Python程序,通过添加数据卷,在本机能够查看Pyt ...
- linux 亲测wget安装7.3 liferay流程
liferay wget 7.3版本安装1. 下载软件包 sudo wget https://sourceforge.net/projects/lportal/files/Liferay%20Port ...
- 使用kNN算法改进约会网站配对效果(尺度归一化问题)
简单匹配: