共计 3236 个字符,预计需要花费 9 分钟才能阅读完成。
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 sec
CALL HOTEL.RESERVATION_GENERATOR(1000); --consumes more than 40 MB of memory
DO BEGIN
-- Wait for a few seconds
USING SQLSCRIPT_SYNC AS SYNCLIB;
CALL SYNCLIB:SLEEP_SECONDS(3); --runs for longer than 3 seconds
-- Now execute a query
SELECT * 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 的原创文章,尽在:” 汪子熙 ”: