Troubleshoot SQL with SAP HANA Database Explorer

调试器可用于帮助查找过程、函数或匿名块中的问题。 以下步骤演示了如何使用调试器来调试过程。

选中某个存储过程,右键,选择 Open for debugging:

从调试器附加选项对话框中,确保选择了 SQL 控制台连接。

通过单击行号旁边的在过程中设置断点。 行号旁边将出现一个复选标记,表示已设置断点。

在数据库浏览器中右键单击需要调试的存储过程,然后选择 Generate Call Statement 或 Generate Call Statement with UI。

该过程的调用语句将在新的 SQL 控制台中打开。 提供输入参数值,例如 10,然后运行该语句。

当断点触发时,执行将暂停。

可以检查使用的任何变量的当前值。 可以通过单击上面突出显示的编辑按钮来修改某些局部和全局变量类型的值。

可以使用调试器顶部的导航图标继续执行。 可以使用分离图标停止调试会话。

右键菜单里,还能使用 Report Code Coverage 查看代码执行覆盖率:

代码覆盖率报告显示命中的语句数。

该报告还直观地显示了命中的语句和未命中的语句。

SQLScript analysis

SQLScript 代码分析器可用于识别指示代码质量、安全性或性能问题的模式。

效果如下:

双击某个问题将打开另一个包含该过程的 SQL 的选项卡,该问题将突出显示。

Explain plan

解释计划以表格形式提供编译后的计划,而不执行它。 当很难在不引起问题的情况下重现问题时,这在分析某些情况时非常有用。

效果如下:

SQL Analyzer

SQL 分析器提供了如何执行分析的 SQL 语句的图形视图,这可以提供对查询执行的更多见解。 最新版本可用作 Visual Studio Code 的扩展或 SAP Business Application Studio 中的附加扩展 (SAP Performance Tools)。 可以在 SAP HANA 数据库浏览器中生成一个 .plv 文件,然后可以在 SQL Analyzer 中打开该文件。 内部部署 SAP HANA 数据库浏览器、内部部署 SAP HANA 驾驶舱以及 SAP HANA 工作室中还包含 SQL 分析器的先前版本。

可以在 Visual Studio Code 里安装对应的插件来查看分析文件:

显示前 5 个主要运算符、前 10 个关键路径运算符、编译和执行 SQL 语句所花费的时间、峰值内存、结果记录数和访问表的信息。

切换到 PLAN GRAPH 选项卡以直观地查看查询执行的详细信息。

SQL trace

在调试问题或识别特定应用程序正在使用的 SQL 语句时,SQL 跟踪会很有帮助。 以下步骤演示了启用 SQL 跟踪,然后使用 SAP HANA 数据库资源管理器查看生成的跟踪文件的示例。

右键菜单里通过 Show overview 进行查询:

为选定的数据库显示不同的信息和统计数据。

要确定为填充概览的各个字段(例如使用的内存)而执行的 SQL 请求,请通过在 SQL 控制台中运行以下 SQL 语句来启用 SQL 跟踪。

ALTER SYSTEM ALTER CONFIGURATION ('indexserver.ini', 'SYSTEM') SET ('sqltrace', 'trace') = 'on', ('sqltrace', 'application') = 'sap_xsac_hrtt', ('sqltrace', 'user') = 'DBAdmin' WITH RECONFIGURE;

可以通过对以下监控视图执行选择来查看配置文件的名称、它们的内容和更改历史记录:

  • M_INIFILES
  • M_INIFILE_CONTENTS
  • M_INIFILE_CONTENT_HISTORY
  • CONFIGURATION_PARAMETER_PROPERTIES
  • M_CONFIGURATION_PARAMETER_VALUES

trace 文件的位置:

可以在文件中查看返回有关 HANA 实例正在使用的内存的信息的 SQL 查询。 例如,突出显示的查询就是这样一种 SQL 请求。

Expensive statements trace

检查消耗大量时间、CPU 或内存的 SQL 语句可能很重要。 以下步骤演示了如何启用昂贵的语句跟踪。

下面的 SQL 将启用昂贵语句的跟踪,设置阈值,运行一些将超过阈值的语句,然后禁用昂贵的语句跟踪。

ALTER SYSTEM ALTER CONFIGURATION ('global.ini', 'DATABASE') SET ('expensive_statement', 'enable') = 'on' WITH RECONFIGURE;
ALTER SYSTEM ALTER CONFIGURATION ('global.ini', 'DATABASE') SET ('expensive_statement', 'threshold_memory') = '41943040' WITH RECONFIGURE;   -- 40 MB
ALTER SYSTEM ALTER CONFIGURATION ('global.ini', 'DATABASE') SET ('expensive_statement', 'threshold_duration') = '3000000' WITH RECONFIGURE;  -- 3 secCALL HOTEL.RESERVATION_GENERATOR(1000);  --consumes more than 40 MB of memoryDO BEGIN-- Wait for a few secondsUSING SQLSCRIPT_SYNC AS SYNCLIB;CALL SYNCLIB:SLEEP_SECONDS( 3 );  --runs for longer than 3 seconds-- Now execute a querySELECT * FROM M_TABLES;
END;ALTER SYSTEM ALTER CONFIGURATION ('global.ini', 'DATABASE') SET ('expensive_statement', 'enable') = 'off' WITH RECONFIGURE;

可以在视图中找到超出昂贵语句阈值的语句列表:M_EXPENSIVE_STATEMENTS

select TOP 2 DURATION_MICROSEC/1000000, CPU_TIME/1000000, MEMORY_SIZE/1048576, START_TIME, RECORDS, STATEMENT_STRING from  M_EXPENSIVE_STATEMENTS order by start_time desc;

Viewing trace files with SQL

SAP HANA 数据库提供一组监控视图,允许访问跟踪文件。 一个例子是 M_MERGED_TRACES 系统视图,它包含多个跟踪文件的内容,允许在特定时间段内跨跟踪文件执行查询。 以下说明提供了一些访问视图的示例。

可以查询有关可用跟踪文件和来自各个跟踪文件的内容的信息。

SELECT * FROM M_TRACEFILES;
SELECT * FROM M_TRACEFILE_CONTENTS  WHERE HOST = 'XXXXXXXX' AND FILE_NAME='XXXXXXXX.XXX';

执行以下 SQL 查询以查看过去 45 分钟的条目。

SELECT SERVICE_NAME, TIMESTAMP, TRACE_LEVEL, COMPONENT, SOURCE_FILE_NAME, TRACE_TEXT
FROM M_MERGED_TRACES
WHERE TIMESTAMP > ADD_SECONDS (TO_TIMESTAMP (CURRENT_TIMESTAMP), -1*60*45) AND TIMESTAMP < CURRENT_TIMESTAMP
ORDER BY TIMESTAMP;

SAP HANA 的 SAP Note SQL 语句集合包含一个名为 HANA_TraceFiles_Content 的查询,该查询还包括与跟踪文件中的某些字符串匹配的相关 SAP 注释。

更多Jerry的原创文章,尽在:“汪子熙”:

SAP HANA Database Explorer 里的 SQL 语句如何排错 trouble shoot相关推荐

  1. 在 SAP HANA database Explorer 里添加 HDI 容器

    在 SAP HANA database explorer 里添加 database,发现有这几种类型: 手动添加: host 和 port 可以从 SAP HANA Cloud Central 里获取 ...

  2. SAP HANA Database Explorer 里 SQL console 的用法

    Query with the SQL Console in SAP HANA Database Explorer 首先选择某个 database connection,然后打开 SQL console ...

  3. 在SAP WebIDE Database Explorer里操作hdi实例

    在WebIDE里将SAP HANA Database Explorer启用: 打开database Explorer视图: 添加一个数据库: 数据库实例作为HDI容器被添加: When the dat ...

  4. 几种在不同的位置打开 SAP HANA Database explorer 的办法

    SAP HANA 数据库浏览器是一个基于 Web 的工具,用于浏览和使用 SAP HANA 数据库对象,例如表.视图.函数.存储过程.导入和导出数据.调试 SQLScript.查看跟踪文件和执行 SQ ...

  5. 什么是SAP HANA Database Procedure(数据库过程)

    SAP HANA数据库给开发人员提供了一种编程方式的选择,能够在数据库层直接编写应用逻辑.这些应用逻辑可以实现在所谓的数据库过程(database procedure)里,实现语言为SAP HANA ...

  6. mysql awr flush_如何使用awr_set_report_thresholds控制AWR报告里的sql语句数量

    AWR报告里和sql语句有关的section有SQL ordered by Elapsed Time.SQL ordered by CPU Time.SQL ordered by User I/O W ...

  7. 在SAP HANA Express Edition里进行文本分析

    这个练习会使用SAP HANA Express Edition的文本语义分析引擎对JSON格式的documents进行语义分析. 首先创建一个column table,对其index开启fuzzy t ...

  8. 使用PHP应用查询SAP HANA Express Edition里的数据

    前提:64位的PHP runtime和64位的Apache Web server已经安装完毕. 我们需要使用SAP HANA ODBC database drivers将PHP runtime和SAP ...

  9. 使用nodejs应用查询SAP HANA Express Edition里的数据

    其实我们使用的是SAP针对SAP HANA Express Editor发布的nodejs SDK. npm init创建一个新的nodejs应用: 执行下列命令行,从SAP的nodejs regis ...

最新文章

  1. wince车机可以连接电脑吗_想在WinCE车机上运行凯立德实时路况版吗?那就进来看看,让你一键傻瓜式联网...
  2. Hive中数据的加载和导出
  3. MAC下homebre安装mysql
  4. boost::hana::all用法的测试程序
  5. rocksdb原理_教你玩转MyRocks/RocksDB—STATISTICS与后台线程篇
  6. 同步中心服务器,同步中心以非常慢的速度同步脱机文件 - Windows Server | Microsoft Docs...
  7. 打印Fibonacci数列方法汇总(前20项,每行5个)
  8. ie 传递给系统调用的数据区域太小。_RFID银行资产管理系统,智能,简便,易操作...
  9. 如何在《救赎之路》中使用CPU粒子效果
  10. 推进 DevSecOps 走向未来
  11. 4、根据前序和中序,重建二叉树
  12. php-rabbitmq结合rabbitmq_delayed_message_exchange实现延时队列
  13. 微信开发者工具下载使用
  14. Win7主题制作教程 电脑主题制作图文方法
  15. 线性分类器——Fisher线性判别
  16. 顶级期刊Nature、Science,如何一较高下?
  17. ios 凭据验证_iOS内购IAP(十四) —— IAP的收据验证(一)
  18. 【报告分享】休闲游戏商业化发行指南-穿山甲(附下载)
  19. 学校选课系统服务器繁忙,大学选课没选到怎么办
  20. 已知 XYZ+YZZ=532,其中,X、Y、Z 为数字,编程求出 X、Y 和 Z 的值。

热门文章

  1. java性能调优工具--笔记
  2. java Swing中随机验证码的实现
  3. PPT幻灯片转换成word的软件
  4. PYTHON——TCPUDP:Socket初识
  5. 线上服务器登记的要点
  6. [Animations] 快速上手 iOS10 属性动画
  7. ant的下载与安装——mybatis学习笔记之预备篇(一)
  8. 店招模块终于可以进行后台换图片了
  9. sql 2012先分离迁移mdf mlf 文件到别的机器后附加 数据库成只读的修复方法
  10. ASP.NET MVC 第一章 我们的第一个MVC例子