ITPub博客

SAP HANA Hint简介

原创 作者:i042416 时间:2018-02-09 20:55:05 0 删除 编辑

我发现Google和百度上关于HANA DB Hint的中文介绍比较少,所以就写了这一篇。本文部分内容来自SAP note 2142945 – FAQ: SAP HANA Hints。

什么是SAP HANA Hint

HANA Hint是SAP14 HANA数据库服务器执行的一种指令。HANA Hint会影响一个数据库请求的生成和处理的方式,但绝不会改变这些数据库请求的响应结果。通俗的说,如果你不用Hint, 执行某条SQL语句查询到了N条记录。那么用了Hint,查询结果仍然是N条。HANA Hint通常用来进行HANA的性能调优,比如对执行某条SQL语句CPU或者内存占用率的优化。

SAP HANA Hint有下列几种类型:

1. SAP HANA DB Hints

直接用于HANA Studio的SQL语句里。通过select * from hints能够拿到当前版本的HANA支持的所有Hint. 在我用的HANA服务器上总共216个:

用法: 如下图红色下划线所示:

如果您的Netweaver用的数据库是HANA,而您又想把这些Hint用在ABAP Open SQL里,那么可以使用语法: %_HINTS HDB后跟Hint的具体内容。例如下图:

如果Netweaver的版本小于740, 需要将HDB替换成ADABAS。

2. SAP ABAP Hints

对于那些Netweaver用的数据库是非HANA DB的场景,需要使用数据库提供商特定的Hint。具体细节可以查询对应的SAP note。

  • 130480 Database hints in Open SQL for Oracle

  • 133381 Database hints in Open SQL for MS SQL Server

  • 150037 Database hints in Open SQL for DB6 (DB2 UDB)

  • 152913 Database hints in Open SQL for Informix

  • 162034 DB2/390: Database hints in Open SQL

  • 485420 iSeries: Database hints for Open SQL/Native SQL

  • 652096 Database hints in Open SQL for SAPDB / MaxDB

  • 1702338SYB: Database hints in Open SQL for Sybase ASE

在ABAP的OPEN SQL里使用方法类似,把 %_HINTS后的HDB替换成指定数据库提供商的代号,再加上数据库提供商特定的Hint.

ABAP支持的数据库提供商的代号在ABAP help里能查到。

3. SAP HANA Calculation View Hints

  • ce2qo_disable_unfolding
  • ce2qo_for_nested_views_with_sql_execution
  • enable_star_join_ceqo
  • ce2qo_for_unit_conversion
  • qo_pop_hints
  • query_level_sql_hints

这种类型的Hint用于HANA Studio里创建的Calculation View,而非ABAP Development Tool创建的CDS(Core Data Service) View. 我没有用过,没法举例。

更多细节请查询SAP note 2509161。

常用的HANA Hint介绍

详细列表能在note 2142945的正文里找到,这里就不赘述了。值得一提的是,并没有一个统一的最佳实践指明了诸如”应用某某hint就一定能提高性能”。Hint的使用需要根据具体的SQL语句来分析,没办法一概而论。

最极端的例子就是这对互斥的Hint: CS_JOIN 和NO_CS_JOIN, 它们分别用于建议HANA数据库采用或者不采用Column Store Join来响应数据请求。

我的一个实际工作中的例子:这个简单的报表从HANA数据库中读取100条描述信息包含了文本”2017-12-11″的服务订单:

总共花费了15秒钟:

而当我加上NO_CS_JOIN的hint之后,

性能提升到不到1秒即完成了数据查询。

在note 2142945的末尾还包含很多其他有用的note。将来如果工作需要,我会将这些note陆续翻译成中文并加上自己的理解。

希望本文能帮助您对SAP HANA Hint有一个最基本的认识。您可以关注我的微信公众号”汪子熙“获得我的更多原创SAP技术文章。

请登录后发表评论 登录
全部评论

注册时间:2018-01-20

  • 博文量
    251
  • 访问量
    47024