前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >「ABAP」万字详解,一文带你入门SAT事务码【SQL优化必备】

「ABAP」万字详解,一文带你入门SAT事务码【SQL优化必备】

作者头像
THUNDER王
发布于 2023-04-06 03:54:17
发布于 2023-04-06 03:54:17
2K00
代码可运行
举报
运行总次数:0
代码可运行
目录

前言

  在本节内容中,我们将继续学习ABAP OPEN SQL的知识,今天带来的内容是T-CODE:SAT的简介,SAT事务码是ABAP中用于对语句性能监控的一个工具,可以帮助我们更好地针对SQL语句进行性能优化,跟着我的脚步,一起来看看吧!本文是ABAP SQL性能优化系列的开篇,主要学习SAT的使用方法。


SAT初始屏幕简介

SAT是SAP提供的用来替代SE30的程序性能优化分析工具( runtime analysis),功能比SE30更加强大,使用起来也很方便。它的初始屏幕如下图所示:

PS:下面将分成以下几个板块来对SAT主屏幕界面元素进行详细地讲解:

  • 页签介绍 | 应用工具栏
  • Short Description
  • Settings
  • In Dialog
  • In Parallel Session
  • For User/ Service
  • Data Formatting

 页签介绍 | 应用工具栏

  SAT主屏幕有两个页签,它们分别是:Measr.Evaluate。应用工具栏中有一个应用:Tips & Tricks。下面分别来进行介绍:

  Tips & Tricks

  打开Tips & Tricks,会进入到另外一个屏幕ABAP对象的操作提示和技巧,在里面可以学习到一些语句性能对比知识,大家可以点进去详细研究研究。

  Measr.

Measr.页签主要用于对SAT运行属性进行配置,包括:SAT变式设置,指定SAT监控入口,指定工作进程(work process),设置后台监控SAT,设置内表命名规则

  Evaluate

Evaluate页签主要用于查看SAT结果文件,双击条目即可进入性能分析屏幕Display Measurement

PS:所有创建的SAT结果文件都可以在这里找到,但是注意每个结果文件都有保存时间,超过保存时间会被删除,最长保存时间截止到Deleted On字段所展示的时间

 Short Description

PS:Short Description主要用于维护结果文件的短文本描述,会显示在这里:

 Settings

Settings主要用于设置SAT变式,默认为DEFAULT,可以参照创建一个符合自己需求的变式。

  参照创建Variant变式并更改属性

PS:下面讲解如何参照创建一个符合自己需求的变式

(一)双击复制按钮,参照DEFAULT复制一个新的变式

(二)弹出Copy Variant对话框,维护变式文本描述

(三)点击更改按钮,修改变式属性

(四)进入后,拥有三个页签 ,下面分别来进行介绍:

  在Duration and Type页签中,我们可以进行Size LimitsAggregationOptions的设置,Options用的不多,在这里不做讲解,后面有用到的机会再讲讲。

Size Limits

  • Maximum Size of File:文件最大容量
  • Maximum Execution Time:最大SAT运行时间

Aggregation

  • None:选择这个,只会把程序中的调用显示出来,一般用None就够用了。
  • Per Call Position:选择这个,只会把程序中的调用显示出来,一般用None就够用了。

  在Statements页签中,我们可以选择需要跟踪的ABAP语句,有时候不需要跟踪所有的内容,比如只跟踪SQL。

  在Program Parts页签中,我们可以设置SAT跟踪的范围:

 In Dialog

  在In Dialog中我们要指定需要监控的程序种类,是TCode(事务码)Program(程序),还是Function(函数)

PS:单击Execute按钮便开始执行SAT

 In Parallel Session

  通过Switch On/off可以跟踪后台job(background job),下面展示一个具体的例子:

(一)打开【T-CODE:SE38】,进入ABAP编辑器,创建一个程序,复制粘贴以下代码到程序中

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DO 50000000 TIMES.
  SELECT * FROM sflight INTO TABLE @DATA(gt_sflight).
ENDDO.

(二)在ABAP编辑器:初始屏幕中,点击菜单栏中的程序—>执行—>后台

(三)进入后,如下图所示,单击立即运行按钮

(四)程序被挂起在后台运行

(五)在【T-CODE:SAT】中,单击Switch On/Off按钮

(六)在这里可以看到所有后台运行的报表

(七)选中我们刚刚创建的在后台运行的报表,单击激活按钮

(八)SAT程序开始跟踪,打开字段变为绿灯表示正在跟踪报表程序,并且生成了一个性能文件名

(九)双击性能文件名,我们可以进入Hit List

PS:在Hit List中,我们可以看到完整的程序性能分析,并且能够看到源代码的底层运作逻辑,我们之前的代码是通过不断循环来从数据库表sflight中取出数据放入临时内表gt_sfllight中,这其中ABAP SQL的底层逻辑包括了DB:FETCH(游标)操作ABAP SQL Setup操作等等

(十)若想取消报表程序后台作业,打开【T-CODE:SM50】,找到我们报表运行的该条目

(十一)菜单栏中选择管理—>删除会话

(十二)弹出对话框。选择

(十三)该报表程序被取消在后台作业,工作进程状态变为等待

(十四)返回【T-CODE:SAT】中检查,确认该报表程序已被取消后台运行

 For User/ Service

PS:在Schedule中,我们可以对报表程序设定定时监控

(一)单击Schedule按钮,进入Overview of Scheduled Measurements (Local Server)

(二)单击Schedule Measurement按钮,进入对话框

各字段参数含义如下:

  • User:用户
  • Cilent:集团
  • AS实例:应用服务器实例
  • External Session:在哪个External Session 中执行的程序被记录数据。1表示只在1号进程执行的程序被记录数据,而其他的进程的不记录,0表示所有的都记录
  • Process Type:程序的类型,Dialog,Update,RFC等。
  • Object Type:Transaction, Report, Function等,与下面的对象配合,确定相应的启动方式。
  • Object Name:tcode, 程序名, 功能函数名。
  • 已调度测量的最大数量:在统计时间有效期内,最多记录的性能跟踪次数
  • Expiration Date:创建时间(年月日)
  • Run time:创建日期(小时/分钟/秒数)
  • Description:短文本描述

 Data Formatting

  勾选上这个按钮后,所有内表都会被识别;如果不勾选,那么只有IT前缀开头的内表会被识别出来

译文如下: ABAP 运行时环境不适用于内部表的名称,而是处理 IT<no.> 格式的内存对象标识符。 选择此选项后,将确定 ABAP 源代码中显示的内部表的真实名称,并使用内存对象标识符显示在数据评估中。 这使得性能数据的处理更加密集,但评估更易于阅读。


Display Measurement性能分析屏幕简介

  在上面我们花费了大量篇幅来对SAT初始屏幕中的界面元素进行了详细的介绍,接下来我们要讲解的是性能分析屏幕Display Measurement

PS:Display Measurement大致样式如下:、

  左边是profile窗口,右边是Hit List屏幕,下面先对Display Measurement的Tab页签进行介绍,Tab页签包含了Desktop 1Hit ListDB tablesProfl.Times

 Desktop 1

  Desktop 1为一个桌面工作台,里面集成了Profile窗口Hit List屏幕

 Hit List

  Hit List屏幕展示出了所有的跟踪结果,双击某行能跳转到源代码处。除此之外还有一排应用工具栏可以对各个字段进行操作(排序筛选等等),在这里我们可以对语句性能进行分析,其中各个字段的解释如下:

各个字段含义:

  • Hits:被调用的次数。
  • Gross[microsec]:该语句,子程序以及被其调用的子程序,语句所消耗的时间。(以微秒记)
  • Net[microsec]:该语句,子程序不包括被其调用的子程序,语句的消耗时间。(以微秒记)
  • Gross[%]:显示为 Gross Time 在总时间中占用的时间比。
  • Net [%]:显示为 Net time 在总的时间中占用的时间比。
  • Statement/Event:调用事件,与Profile窗口里的事件相对应
  • Program Called:程序名或事务码名称(通常情况下与Calling Program相同)
  • Calling Program:程序名或事务码名称(通常情况下与Program Called相同)

 DB tables

  展现各个SQL的运行时间。

 Profl.

PS:Profl.对应Desktop 1中的Profile窗口,它的结构为树形结构,如下图所示:

Profile窗口能将SAT的跟踪结果多维度的展现(function,subroutines,rfc,SQl,screen,当点击对应的节点,对应的Hit List就展现在屏幕下方。

 Times

  在Times页签中,我们可以按照不同的条件来展现各个事件的跟踪时间,比如可以对Gross或者Net进行降序或升序排序


进行一次ABAP SQL语句性能分析测试

  介绍了这么多,相信各位小伙伴们对于SAT事务码已经了解了很多了吧!下面我们来进行一次Demo尝试,试着用SAT来分析一下我们的ABAP SQL!

PS:让我们一起看看相比SELECT *操作来说,只SELECT我们自己要用的字段速度是否会快一些!

 ABAP SQL测试代码

  进入【T-CODE:SE38】ABAP编辑器,复制以下测试代码到程序中,保存并激活!

PS:这里使用了ABAP SQL的新语法!

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
FORM test_01 .
  SELECT * FROM sflight INTO TABLE @DATA(gt_sflight).
  LOOP AT gt_sflight INTO DATA(gs_sflight).
    WRITE: / gs_sflight-carrid,gs_sflight-connid,gs_sflight-fldate.
  ENDLOOP.
ENDFORM.

FORM test_02 .
  SELECT carrid,connid,fldate FROM sflight INTO TABLE @DATA(gt_sflight).
  LOOP AT gt_sflight INTO DATA(gs_sflight).
    WRITE: / gs_sflight-carrid,gs_sflight-connid,gs_sflight-fldate.
  ENDLOOP.
ENDFORM.

START-OF-SELECTION.
  PERFORM test_01.
  WRITE:sy-uline.
  PERFORM test_02.

 开始性能分析

(一)弹出对话框。选择进入SAT初始屏幕,在In Dialog中,选择Program,输入刚刚我们自己创建的测试程序,单击Execute执行按钮

(二)进入Display Measurement性能分析屏幕

(三)在Profile窗口中,按照如下图所示路径选择:

(四)Hit List中,选中Calling Program字段,应用工具栏中单击筛选按钮(漏斗一样的那个图标

(五)在确定过滤值窗口中输入我们创建的测试程序名,单击右下角执行按钮(绿色的√

(六)操作成功后,便会是如下图所示:

PS:可以看到:TEST_01的Gross Time比TEST_02的Gross Time多了近35%,证实了SELECT *操作确实会耗用更多的时间!


写在最后的话

  文章到这里就接近尾声啦!如果喜欢博主的话可以给我一键三连支持一下啦!   本文花费大量时间介绍了SAT事务码,非常的详细全面啦,希望能帮助到各位小伙伴,码文不易,还望各位大佬们多多支持哦,你们的支持是我最大的动力

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-04-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
应用实践 | 特步集团基于 Apache Doris 的零售数据仓库项目实践
特步集团有限公司是中国领先的体育用品企业之一,主要从事运动鞋、服装及配饰的设计、开发、制造和销售。为了提高特步零售 BI 主题数据分析的准确性和时效性,降低对 SAP HANA 平台的依赖,2020 年 11 月特步集团首次引入了 Apache Doris 进行数据仓库搭建试点。在经历实时日报(移动端)和《特步全网零售战绩》大屏两个小项目的成功后,于 2021 年 3 月开始逐步启动特步儿童 BI、特步电商 BI、双十一大屏、特步新品牌 BI 等多个项目,经过一年的努力,初步完成了基于 Apache Doris 的零售数据仓库搭建和上线运行。
从大数据到人工智能
2022/05/26
9710
应用实践 | 特步集团基于 Apache Doris 的零售数据仓库项目实践
在 Doris 中,如何实现数据的自动分区和手动分区?
在 Apache Doris 中,数据分区是一种重要的优化手段,可以提高查询性能和管理大规模数据。Doris 支持自动分区和手动分区两种方式。
代码小李
2025/01/26
4690
ClickHouse DDL
数据库起到了命名空间的作用,可以有效规避命名冲突的问题,也为后续的数据隔离提供了支撑。任何一张数据表,都必须归属在某个数据库之下。创建数据库的完整语法如下所示:
CoderJed
2022/01/07
1.3K0
Doris数据导出全攻略 - 让数据流转自由如风
在大数据生态体系中,数据导出类似于一座桥梁,连接着不同的数据系统。没有高效便捷的数据导出功能,再强大的数据分析能力也会被局限。Apache Doris对于这座桥梁,设计了三种灵活的数据导出方案,满足不同场景下的数据流转需求。
一臻数据
2024/12/24
2340
Doris数据导出全攻略 - 让数据流转自由如风
Oracle 删除大量表记录操作总结
存放大数据量的表,其表空间占用也比较大,删除数据后并不会自动释放这些记录占用的表空间,所以,即便表里面数据量很少,查询效率依旧很慢,所以,需要释放表空间。
授客
2022/09/29
1.2K0
MySQL 快速删除大量数据(千万级别)的几种实践方案——附源码
 笔者最近工作中遇见一个性能瓶颈问题,MySQL表,每天大概新增776万条记录,存储周期为7天,超过7天的数据需要在新增记录前老化。连续运行9天以后,删除一天的数据大概需要3个半小时(环境:128G, 32核,4T硬盘),而这是不能接受的。当然如果要整个表删除,毋庸置疑用
NaughtyCat
2020/10/09
7.8K0
50条MySQL常用脚本
SQL数据库开发
2024/04/25
1780
50条MySQL常用脚本
ClickHouse SQL基本语法和导入导出实战
数据库起到了命名空间的作用,可以有效规避命名冲突的问题,也为后续的数据隔离提供了支撑。任何一张数据表,都必须归属在某个数据库之下。
王知无-import_bigdata
2022/04/13
2.7K0
ClickHouse SQL基本语法和导入导出实战
「硬刚Doris系列」Doris高级用法
Rollup 可以理解为 Table 的一个物化索引结构。物化 是因为其数据在物理上独立存储,而 索引 的意思是,Rollup可以调整列顺序以增加前缀索引的命中率,也可以减少key列以增加数据的聚合度。
王知无-import_bigdata
2022/06/05
2.1K0
36条MySQL实用小技巧
实际上一直都有在学习,只是公众号的算法机制让很多人刷不到,看得人比较少,这才将这些内容分享到各个群和朋友圈,希望能让更多人看到。
SQL数据库开发
2024/04/25
1510
36条MySQL实用小技巧
硬刚Doris系列」Apache Doris基本使用和数据模型
我们使用 event_day 列作为分区列,建立3个分区: p201706, p201707, p201708
王知无-import_bigdata
2022/06/05
2.7K0
硬刚Doris系列」Apache Doris基本使用和数据模型
大数据ClickHouse(十五):ClickHouse SQL语法之DDL 操作讲解
DDL:Data Definition Language,数据库定义语言。在ClickHouse中,DDL语言中修改表结构仅支持Merge表引擎、Distributed表引擎及MergeTree家族的表引擎,SQL 中的库、表、字段严格区分大小写。
Lansonli
2022/08/31
1.9K0
大数据ClickHouse(十五):ClickHouse SQL语法之DDL 操作讲解
MySQL DDL 数据定义
在 MySQL 中,DATABASE 和 SCHEMA 在语法上是等效的,它们都用于创建数据库。在其他 RDBMS(如 Oracle 和 SQL Server)
恋喵大鲤鱼
2023/10/12
2870
【Hive】DDL 与 DML 操作
删除数据库的模型行为是 RESTRICT,如果数据库不为空,需要添加 CASCADE 进行级联删除。
阿泽 Crz
2020/07/20
1.8K0
大数据-hive基本语法整理
用户11147438
2024/06/04
2660
当数据工程师遇上"Doris魔法视图",性能飞升的背后藏着什么?
凌晨,数据工程师小红正对着一堆复杂的查询语句发愁。复杂的多表JOIN、层层嵌套的聚合计算,让查询性能迟迟得不到提升。这时,他突然想到了Doris 2.1版本中发布的多表异步物化视图功能..."
一臻数据
2024/12/24
860
当数据工程师遇上"Doris魔法视图",性能飞升的背后藏着什么?
【Apache Doris】周FAQ集锦:第 8 期
在这个栏目中,每周将筛选社区反馈的热门问题和话题,重点回答并进行深入探讨。旨在为广大用户和开发者分享有关 Apache Doris 的常见问题。
一臻数据
2024/12/24
1330
【Apache Doris】周FAQ集锦:第 8 期
MySQL数据导出、删除、表重命名、时间转化及级联查询
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
奋飛
2019/08/15
2.5K0
mysql数据库优化总结
innodb_buffer_pool_size = 50% of system memory innodb_max_dirty_pagesPer_latch = 1000 复制代码
samRsa
2025/04/28
1180
mysql数据库优化总结
Oracle SQL调优之表设计
分区表使用与查询频繁而更新数据不频繁的情况,不过要记得加全局索引,而不加分区索引,分区类型:分区分为范围分区、列表分区、HASH分区、组合分区四种,用了分区表,查询时就定位到对应的区,而不用全表,所以查询效率比普通表好,当然有很多细节,还是建议看《收获,不止sql优化》一书
SmileNicky
2019/06/11
5040
相关推荐
应用实践 | 特步集团基于 Apache Doris 的零售数据仓库项目实践
更多 >
LV.1
SelectDB飞轮科技资深数据架构师
目录
  • 前言
  • SAT初始屏幕简介
    •  页签介绍 | 应用工具栏
      •   Tips & Tricks
      •   Measr.
      •   Evaluate
    •  Short Description
    •  Settings
      •   参照创建Variant变式并更改属性
    •  In Dialog
    •  In Parallel Session
    •  For User/ Service
    •  Data Formatting
  • Display Measurement性能分析屏幕简介
    •  Desktop 1
    •  Hit List
    •  DB tables
    •  Profl.
    •  Times
  • 进行一次ABAP SQL语句性能分析测试
    •  ABAP SQL测试代码
    •  开始性能分析
  • 写在最后的话
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档